aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Nanis2026-09-01 10:43:29 -0700
committerMax Nanis2026-09-01 10:43:29 -0700
commit89ed44f466dc9a93d6f85931fb6eea0e9cbd27f6 (patch)
tree8bcce59aa74271e38f056c954ee3e8457dae241a
parentd19438ec4ccbbe4415c286c9ae89e3e5706ac553 (diff)
downloadgeneralresearch-89ed44f466dc9a93d6f85931fb6eea0e9cbd27f6.tar.gz
generalresearch-89ed44f466dc9a93d6f85931fb6eea0e9cbd27f6.zip
working through circular imports, removing __init__ loaded Types / Definitions
-rw-r--r--generalresearch/grliq/managers/event_plotter.py5
-rw-r--r--generalresearch/grliq/managers/forensic_events.py8
-rw-r--r--generalresearch/grliq/managers/forensic_results.py8
-rw-r--r--generalresearch/grliq/managers/forensic_summary.py16
-rw-r--r--generalresearch/incite/schemas/mergers/foundations/enriched_task_adjust.py2
-rw-r--r--generalresearch/incite/schemas/mergers/foundations/enriched_wall.py2
-rw-r--r--generalresearch/incite/schemas/mergers/ym_wall_summary.py2
-rw-r--r--generalresearch/incite/schemas/thl_web.py2
-rw-r--r--generalresearch/managers/cint/user_pid.py2
-rw-r--r--generalresearch/managers/dynata/user_pid.py2
-rw-r--r--generalresearch/managers/events.py2
-rw-r--r--generalresearch/managers/innovate/user_pid.py2
-rw-r--r--generalresearch/managers/marketplace/user_pid.py2
-rw-r--r--generalresearch/managers/morning/user_pid.py2
-rw-r--r--generalresearch/managers/network/label.py6
-rw-r--r--generalresearch/managers/precision/user_pid.py2
-rw-r--r--generalresearch/managers/prodege/user_pid.py2
-rw-r--r--generalresearch/managers/repdata/user_pid.py2
-rw-r--r--generalresearch/managers/sago/user_pid.py2
-rw-r--r--generalresearch/managers/spectrum/user_pid.py2
-rw-r--r--generalresearch/managers/thl/buyer.py2
-rw-r--r--generalresearch/managers/thl/cashout_method.py2
-rw-r--r--generalresearch/managers/thl/contest_manager.py4
-rw-r--r--generalresearch/managers/thl/ledger_manager/ledger.py2
-rw-r--r--generalresearch/managers/thl/ledger_manager/thl_ledger.py2
-rw-r--r--generalresearch/managers/thl/payout.py2
-rw-r--r--generalresearch/managers/thl/session.py4
-rw-r--r--generalresearch/managers/thl/survey.py2
-rw-r--r--generalresearch/managers/thl/task_adjustment.py2
-rw-r--r--generalresearch/managers/thl/wall.py4
-rw-r--r--generalresearch/managers/thl/wallet/__init__.py2
-rw-r--r--generalresearch/managers/utils.py16
-rw-r--r--generalresearch/models/cint/question.py2
-rw-r--r--generalresearch/models/cint/survey.py2
-rw-r--r--generalresearch/models/custom_types.py2
-rw-r--r--generalresearch/models/definitions.py114
-rw-r--r--generalresearch/models/device.py2
-rw-r--r--generalresearch/models/dynata/question.py2
-rw-r--r--generalresearch/models/dynata/survey.py4
-rw-r--r--generalresearch/models/dynata/task_collection.py2
-rw-r--r--generalresearch/models/events.py2
-rw-r--r--generalresearch/models/gr/business.py22
-rw-r--r--generalresearch/models/innovate/question.py2
-rw-r--r--generalresearch/models/innovate/survey.py8
-rw-r--r--generalresearch/models/legacy/bucket.py2
-rw-r--r--generalresearch/models/legacy/questions.py2
-rw-r--r--generalresearch/models/lucid/question.py2
-rw-r--r--generalresearch/models/lucid/survey.py2
-rw-r--r--generalresearch/models/morning/question.py2
-rw-r--r--generalresearch/models/morning/survey.py2
-rw-r--r--generalresearch/models/pollfish/question.py2
-rw-r--r--generalresearch/models/precision/question.py2
-rw-r--r--generalresearch/models/precision/survey.py2
-rw-r--r--generalresearch/models/prodege/question.py2
-rw-r--r--generalresearch/models/prodege/survey.py6
-rw-r--r--generalresearch/models/repdata/question.py2
-rw-r--r--generalresearch/models/repdata/survey.py2
-rw-r--r--generalresearch/models/repdata/task_collection.py2
-rw-r--r--generalresearch/models/sago/question.py2
-rw-r--r--generalresearch/models/sago/survey.py2
-rw-r--r--generalresearch/models/spectrum/question.py2
-rw-r--r--generalresearch/models/spectrum/survey.py2
-rw-r--r--generalresearch/models/spectrum/task_collection.py2
-rw-r--r--generalresearch/models/thl/__init__.py4
-rw-r--r--generalresearch/models/thl/category.py5
-rw-r--r--generalresearch/models/thl/contest/contest_entry.py13
-rw-r--r--generalresearch/models/thl/contest/raffle.py4
-rw-r--r--generalresearch/models/thl/finance.py15
-rw-r--r--generalresearch/models/thl/ledger.py2
-rw-r--r--generalresearch/models/thl/offerwall/__init__.py2
-rw-r--r--generalresearch/models/thl/offerwall/base.py2
-rw-r--r--generalresearch/models/thl/offerwall/cache.py2
-rw-r--r--generalresearch/models/thl/payout.py2
-rw-r--r--generalresearch/models/thl/product.py4
-rw-r--r--generalresearch/models/thl/profiling/marketplace.py4
-rw-r--r--generalresearch/models/thl/profiling/upk_question.py8
-rw-r--r--generalresearch/models/thl/profiling/upk_question_answer.py2
-rw-r--r--generalresearch/models/thl/profiling/user_info.py2
-rw-r--r--generalresearch/models/thl/profiling/user_question_answer.py8
-rw-r--r--generalresearch/models/thl/session.py4
-rw-r--r--generalresearch/models/thl/soft_pair.py2
-rw-r--r--generalresearch/models/thl/survey/__init__.py2
-rw-r--r--generalresearch/models/thl/survey/buyer.py2
-rw-r--r--generalresearch/models/thl/survey/condition.py2
-rw-r--r--generalresearch/models/thl/survey/model.py2
-rw-r--r--generalresearch/models/thl/survey/penalty.py2
-rw-r--r--generalresearch/models/thl/task_adjustment.py4
-rw-r--r--generalresearch/models/thl/user.py4
-rw-r--r--generalresearch/models/thl/user_profile.py2
-rw-r--r--generalresearch/models/thl/user_quality_event.py2
-rw-r--r--generalresearch/models/thl/user_streak.py2
-rw-r--r--generalresearch/models/thl/wallet/cashout_method.py4
-rw-r--r--generalresearch/models/thl/wallet/definitions.py87
-rw-r--r--generalresearch/models/thl/wallet/payout.py2
-rw-r--r--generalresearch/schemas/survey_stats.py2
-rw-r--r--generalresearch/wall_status_codes/__init__.py2
-rw-r--r--test_utils/conftest.py17
-rw-r--r--test_utils/grliq/conftest.py12
-rw-r--r--test_utils/incite/collections/conftest.py4
-rw-r--r--test_utils/incite/mergers/conftest.py55
-rw-r--r--test_utils/managers/cashout_methods.py2
-rw-r--r--test_utils/managers/conftest.py55
-rw-r--r--test_utils/managers/contest/conftest.py6
-rw-r--r--test_utils/managers/gr/conftest.py7
-rw-r--r--test_utils/managers/ledger/conftest.py14
-rw-r--r--test_utils/managers/thl/conftest.py51
-rw-r--r--test_utils/managers/upk/conftest.py9
-rw-r--r--test_utils/models/conftest.py4
-rw-r--r--test_utils/models/contest/conftest.py29
-rw-r--r--test_utils/models/gr/conftest.py38
-rw-r--r--test_utils/models/ledger/conftest.py4
-rw-r--r--test_utils/models/network/conftest.py5
-rw-r--r--test_utils/models/thl/conftest.py80
-rw-r--r--test_utils/models/upk/conftest.py3
-rw-r--r--test_utils/spectrum/conftest.py8
-rw-r--r--tests/incite/collections/test_df_collection_base.py2
-rw-r--r--tests/incite/collections/test_df_collection_item_base.py5
-rw-r--r--tests/incite/collections/test_df_collection_item_thl_web.py20
-rw-r--r--tests/incite/collections/test_df_collection_thl_marketplaces.py9
-rw-r--r--tests/incite/collections/test_df_collection_thl_web.py2
-rw-r--r--tests/incite/mergers/foundations/test_enriched_session.py31
-rw-r--r--tests/incite/mergers/foundations/test_enriched_task_adjust.py30
-rw-r--r--tests/incite/mergers/foundations/test_enriched_wall.py29
-rw-r--r--tests/incite/mergers/foundations/test_user_id_product.py9
-rw-r--r--tests/incite/mergers/test_merge_collection.py7
-rw-r--r--tests/incite/mergers/test_merge_collection_item.py13
-rw-r--r--tests/incite/mergers/test_pop_ledger.py21
-rw-r--r--tests/incite/mergers/test_ym_survey_merge.py24
-rw-r--r--tests/incite/test_collection_base.py6
-rw-r--r--tests/incite/test_collection_base_item.py6
-rw-r--r--tests/managers/gr/test_business.py19
-rw-r--r--tests/managers/gr/test_team.py15
-rw-r--r--tests/managers/leaderboard.py5
-rw-r--r--tests/managers/network/test_label.py17
-rw-r--r--tests/managers/test_events.py12
-rw-r--r--tests/managers/test_lucid.py6
-rw-r--r--tests/managers/thl/test_buyer.py7
-rw-r--r--tests/managers/thl/test_cashout_method.py19
-rw-r--r--tests/managers/thl/test_category.py7
-rw-r--r--tests/managers/thl/test_contest/test_leaderboard.py19
-rw-r--r--tests/managers/thl/test_contest/test_milestone.py20
-rw-r--r--tests/managers/thl/test_contest/test_raffle.py21
-rw-r--r--tests/managers/thl/test_harmonized_uqa.py7
-rw-r--r--tests/managers/thl/test_ipinfo.py7
-rw-r--r--tests/managers/thl/test_ledger/test_lm_accounts.py10
-rw-r--r--tests/managers/thl/test_ledger/test_lm_tx.py7
-rw-r--r--tests/managers/thl/test_ledger/test_lm_tx_entries.py10
-rw-r--r--tests/managers/thl/test_ledger/test_lm_tx_locks.py15
-rw-r--r--tests/managers/thl/test_ledger/test_lm_tx_metadata.py11
-rw-r--r--tests/managers/thl/test_ledger/test_thl_lm_accounts.py15
-rw-r--r--tests/managers/thl/test_ledger/test_thl_lm_bp_payout.py22
-rw-r--r--tests/managers/thl/test_ledger/test_thl_lm_tx.py28
-rw-r--r--tests/managers/thl/test_ledger/test_thl_lm_tx__user_payouts.py13
-rw-r--r--tests/managers/thl/test_ledger/test_thl_pem.py21
-rw-r--r--tests/managers/thl/test_ledger/test_user_txs.py19
-rw-r--r--tests/managers/thl/test_ledger/test_wallet.py9
-rw-r--r--tests/managers/thl/test_payout.py53
-rw-r--r--tests/managers/thl/test_product.py9
-rw-r--r--tests/managers/thl/test_product_prod.py5
-rw-r--r--tests/managers/thl/test_profiling/test_question.py7
-rw-r--r--tests/managers/thl/test_profiling/test_schema.py9
-rw-r--r--tests/managers/thl/test_profiling/test_user_upk.py6
-rw-r--r--tests/managers/thl/test_session_manager.py15
-rw-r--r--tests/managers/thl/test_survey.py18
-rw-r--r--tests/managers/thl/test_survey_penalty.py7
-rw-r--r--tests/managers/thl/test_task_adjustment.py21
-rw-r--r--tests/managers/thl/test_task_status.py18
-rw-r--r--tests/managers/thl/test_user_manager/test_base.py18
-rw-r--r--tests/managers/thl/test_user_manager/test_mysql.py11
-rw-r--r--tests/managers/thl/test_user_manager/test_redis.py10
-rw-r--r--tests/managers/thl/test_user_manager/test_user_fetch.py8
-rw-r--r--tests/managers/thl/test_user_manager/test_user_metadata.py13
-rw-r--r--tests/managers/thl/test_user_streak.py11
-rw-r--r--tests/managers/thl/test_userhealth.py19
-rw-r--r--tests/managers/thl/test_wall_manager.py13
-rw-r--r--tests/models/custom_types/test_aware_datetime.py4
-rw-r--r--tests/models/custom_types/test_dsn.py4
-rw-r--r--tests/models/custom_types/test_uuid_str.py4
-rw-r--r--tests/models/dynata/test_survey.py3
-rw-r--r--tests/models/gr/test_authentication.py14
-rw-r--r--tests/models/gr/test_base.py4
-rw-r--r--tests/models/gr/test_business.py40
-rw-r--r--tests/models/gr/test_team.py38
-rw-r--r--tests/models/innovate/test_question.py2
-rw-r--r--tests/models/legacy/test_offerwall_parse_response.py2
-rw-r--r--tests/models/legacy/test_user_question_answer_in.py9
-rw-r--r--tests/models/network/test_mtr.py6
-rw-r--r--tests/models/network/test_nmap.py8
-rw-r--r--tests/models/network/test_nmap_parser.py9
-rw-r--r--tests/models/network/test_rdns.py6
-rw-r--r--tests/models/spectrum/test_question.py2
-rw-r--r--tests/models/spectrum/test_survey.py2
-rw-r--r--tests/models/spectrum/test_survey_manager.py12
-rw-r--r--tests/models/test_device.py2
-rw-r--r--tests/models/test_finance.py19
-rw-r--r--tests/models/thl/test_adjustments.py17
-rw-r--r--tests/models/thl/test_buyer.py2
-rw-r--r--tests/models/thl/test_contest/test_contest.py6
-rw-r--r--tests/models/thl/test_contest/test_leaderboard_contest.py7
-rw-r--r--tests/models/thl/test_contest/test_raffle_contest.py7
-rw-r--r--tests/models/thl/test_marketplace_condition.py6
-rw-r--r--tests/models/thl/test_payout.py8
-rw-r--r--tests/models/thl/test_payout_format.py8
-rw-r--r--tests/models/thl/test_product.py37
-rw-r--r--tests/models/thl/test_product_userwalletconfig.py2
-rw-r--r--tests/models/thl/test_soft_pair.py2
-rw-r--r--tests/models/thl/test_user.py9
-rw-r--r--tests/models/thl/test_user_metadata.py2
-rw-r--r--tests/models/thl/test_wall.py2
-rw-r--r--tests/models/thl/test_wall_session.py2
-rw-r--r--tests/test_postgres.py5
211 files changed, 1318 insertions, 772 deletions
diff --git a/generalresearch/grliq/managers/event_plotter.py b/generalresearch/grliq/managers/event_plotter.py
index 94b70ef..61cc52c 100644
--- a/generalresearch/grliq/managers/event_plotter.py
+++ b/generalresearch/grliq/managers/event_plotter.py
@@ -1,12 +1,15 @@
import html
import webbrowser
+from typing import TYPE_CHECKING
import numpy as np
from more_itertools import windowed
from scipy.spatial.distance import euclidean
from generalresearch.grliq.managers.colormap import turbo_colormap_data
-from generalresearch.grliq.models.events import KeyboardEvent, MouseEvent
+
+if TYPE_CHECKING:
+ from generalresearch.grliq.models.events import KeyboardEvent, MouseEvent
def make_events_svg(
diff --git a/generalresearch/grliq/managers/forensic_events.py b/generalresearch/grliq/managers/forensic_events.py
index 93da481..a97a9c2 100644
--- a/generalresearch/grliq/managers/forensic_events.py
+++ b/generalresearch/grliq/managers/forensic_events.py
@@ -1,7 +1,7 @@
import json
from collections.abc import Collection
from datetime import datetime
-from typing import Any
+from typing import TYPE_CHECKING, Any
from uuid import uuid4
from psycopg import sql
@@ -14,8 +14,10 @@ from generalresearch.grliq.models.events import (
PointerMove,
TimingData,
)
-from generalresearch.models.custom_types import UUIDStr
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.models.custom_types import UUIDStr
+ from generalresearch.pg_helper import PostgresConfig
class GrlIqEventManager:
diff --git a/generalresearch/grliq/managers/forensic_results.py b/generalresearch/grliq/managers/forensic_results.py
index 158e582..93b1cdc 100644
--- a/generalresearch/grliq/managers/forensic_results.py
+++ b/generalresearch/grliq/managers/forensic_results.py
@@ -1,14 +1,16 @@
from collections.abc import Collection
from datetime import datetime
-from typing import Any
+from typing import TYPE_CHECKING, Any
from generalresearch.grliq.models.forensic_result import (
GrlIqForensicCategoryResult,
Phase,
)
from generalresearch.grliq.models.useragents import GrlUserAgent
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
class GrlIqCategoryResultsReader:
diff --git a/generalresearch/grliq/managers/forensic_summary.py b/generalresearch/grliq/managers/forensic_summary.py
index b86e1f5..c222075 100644
--- a/generalresearch/grliq/managers/forensic_summary.py
+++ b/generalresearch/grliq/managers/forensic_summary.py
@@ -3,14 +3,10 @@ from __future__ import annotations
import statistics
from collections import defaultdict
from datetime import UTC, datetime, timedelta
-from typing import Any
+from typing import TYPE_CHECKING, Any
import numpy as np
-from generalresearch.grliq.managers.forensic_data import GrlIqDataManager
-from generalresearch.grliq.managers.forensic_events import (
- GrlIqEventManager,
-)
from generalresearch.grliq.models.forensic_result import (
GrlIqCheckerResults,
GrlIqForensicCategoryResult,
@@ -22,8 +18,14 @@ from generalresearch.grliq.models.forensic_summary import (
TimingDataCountrySummary,
UserForensicSummary,
)
-from generalresearch.models.thl.user import User
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.grliq.managers.forensic_data import GrlIqDataManager
+ from generalresearch.grliq.managers.forensic_events import (
+ GrlIqEventManager,
+ )
+ from generalresearch.models.thl.user import User
+ from generalresearch.redis_helper import RedisConfig
def calculate_category_summary(
diff --git a/generalresearch/incite/schemas/mergers/foundations/enriched_task_adjust.py b/generalresearch/incite/schemas/mergers/foundations/enriched_task_adjust.py
index ead42d9..ac9a35a 100644
--- a/generalresearch/incite/schemas/mergers/foundations/enriched_task_adjust.py
+++ b/generalresearch/incite/schemas/mergers/foundations/enriched_task_adjust.py
@@ -4,7 +4,7 @@ from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.incite.schemas import ARCHIVE_AFTER, ORDER_KEY
from generalresearch.incite.schemas.thl_web import THLTaskAdjustmentSchema
from generalresearch.locales import Localelator
-from generalresearch.models import DeviceType, Source
+from generalresearch.models.definitions import DeviceType, Source
from generalresearch.models.thl.definitions import (
WallAdjustedStatus,
)
diff --git a/generalresearch/incite/schemas/mergers/foundations/enriched_wall.py b/generalresearch/incite/schemas/mergers/foundations/enriched_wall.py
index 1443f28..71d0eab 100644
--- a/generalresearch/incite/schemas/mergers/foundations/enriched_wall.py
+++ b/generalresearch/incite/schemas/mergers/foundations/enriched_wall.py
@@ -5,7 +5,7 @@ from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.incite.schemas import ARCHIVE_AFTER, PARTITION_ON
from generalresearch.locales import Localelator
-from generalresearch.models import DeviceType, Source
+from generalresearch.models.definitions import DeviceType, Source
from generalresearch.models.thl.definitions import (
ReportValue,
Status,
diff --git a/generalresearch/incite/schemas/mergers/ym_wall_summary.py b/generalresearch/incite/schemas/mergers/ym_wall_summary.py
index 16cfc2f..737b925 100644
--- a/generalresearch/incite/schemas/mergers/ym_wall_summary.py
+++ b/generalresearch/incite/schemas/mergers/ym_wall_summary.py
@@ -6,7 +6,7 @@ from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.incite.schemas import ARCHIVE_AFTER
from generalresearch.locales import Localelator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
COUNTRY_ISOS: set[str] = Localelator().get_all_countries()
kosovo = "xk"
diff --git a/generalresearch/incite/schemas/thl_web.py b/generalresearch/incite/schemas/thl_web.py
index 30c7076..36ee8e9 100644
--- a/generalresearch/incite/schemas/thl_web.py
+++ b/generalresearch/incite/schemas/thl_web.py
@@ -6,7 +6,7 @@ from pandera.pandas import Check, Column, DataFrameSchema, Index, MultiIndex
from generalresearch.incite.schemas import ARCHIVE_AFTER, ORDER_KEY
from generalresearch.locales import Localelator
-from generalresearch.models import DeviceType, Source
+from generalresearch.models.definitions import DeviceType, Source
from generalresearch.models.thl.definitions import (
ReportValue,
SessionAdjustedStatus,
diff --git a/generalresearch/managers/cint/user_pid.py b/generalresearch/managers/cint/user_pid.py
index 4f749a0..0265823 100644
--- a/generalresearch/managers/cint/user_pid.py
+++ b/generalresearch/managers/cint/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class CintUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/dynata/user_pid.py b/generalresearch/managers/dynata/user_pid.py
index aefed34..67ff968 100644
--- a/generalresearch/managers/dynata/user_pid.py
+++ b/generalresearch/managers/dynata/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class DynataUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/events.py b/generalresearch/managers/events.py
index c43a020..30cec0c 100644
--- a/generalresearch/managers/events.py
+++ b/generalresearch/managers/events.py
@@ -12,7 +12,7 @@ from redis.client import PubSub, Redis
from generalresearch.incite.base import LOG
from generalresearch.managers.base import RedisManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.events import (
AggregateBySource,
EventEnvelope,
diff --git a/generalresearch/managers/innovate/user_pid.py b/generalresearch/managers/innovate/user_pid.py
index 100b0ca..7544c89 100644
--- a/generalresearch/managers/innovate/user_pid.py
+++ b/generalresearch/managers/innovate/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class InnovateUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/marketplace/user_pid.py b/generalresearch/managers/marketplace/user_pid.py
index fe24d38..00dae8a 100644
--- a/generalresearch/managers/marketplace/user_pid.py
+++ b/generalresearch/managers/marketplace/user_pid.py
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING
from uuid import UUID
from generalresearch.managers.base import SqlManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
if TYPE_CHECKING:
from generalresearch.sql_helper import SqlHelper
diff --git a/generalresearch/managers/morning/user_pid.py b/generalresearch/managers/morning/user_pid.py
index 78de3bd..5896734 100644
--- a/generalresearch/managers/morning/user_pid.py
+++ b/generalresearch/managers/morning/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class MorningUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/network/label.py b/generalresearch/managers/network/label.py
index cec59ad..aed5ff6 100644
--- a/generalresearch/managers/network/label.py
+++ b/generalresearch/managers/network/label.py
@@ -5,11 +5,12 @@ from datetime import UTC, datetime, timedelta
from typing import TYPE_CHECKING
from psycopg import sql
-from pydantic import IPvAnyNetwork, TypeAdapter
+from pydantic import TypeAdapter
from generalresearch.managers.base import PostgresManager
from generalresearch.models.custom_types import (
- AwareDatetimeISO,
+ IPvAnyAddressStr,
+ IPvAnyNetwork,
IPvAnyNetworkStr,
)
from generalresearch.models.network.label import IPLabel
@@ -17,7 +18,6 @@ from generalresearch.models.network.label import IPLabel
if TYPE_CHECKING:
from generalresearch.models.custom_types import (
AwareDatetimeISO,
- IPvAnyNetworkStr,
)
from generalresearch.models.network.label import IPLabelKind, IPLabelSource
diff --git a/generalresearch/managers/precision/user_pid.py b/generalresearch/managers/precision/user_pid.py
index 50e97e6..ed2d58d 100644
--- a/generalresearch/managers/precision/user_pid.py
+++ b/generalresearch/managers/precision/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class PrecisionUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/prodege/user_pid.py b/generalresearch/managers/prodege/user_pid.py
index 7c92e28..c18c109 100644
--- a/generalresearch/managers/prodege/user_pid.py
+++ b/generalresearch/managers/prodege/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class ProdegeUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/repdata/user_pid.py b/generalresearch/managers/repdata/user_pid.py
index 9d53897..5fdeccf 100644
--- a/generalresearch/managers/repdata/user_pid.py
+++ b/generalresearch/managers/repdata/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class RepdataUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/sago/user_pid.py b/generalresearch/managers/sago/user_pid.py
index 311abb7..b7ce771 100644
--- a/generalresearch/managers/sago/user_pid.py
+++ b/generalresearch/managers/sago/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class SagoUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/spectrum/user_pid.py b/generalresearch/managers/spectrum/user_pid.py
index 495e73c..980c28d 100644
--- a/generalresearch/managers/spectrum/user_pid.py
+++ b/generalresearch/managers/spectrum/user_pid.py
@@ -1,5 +1,5 @@
from generalresearch.managers.marketplace.user_pid import UserPidManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
class SpectrumUserPidManager(UserPidManager):
diff --git a/generalresearch/managers/thl/buyer.py b/generalresearch/managers/thl/buyer.py
index 1e20e2f..38214c6 100644
--- a/generalresearch/managers/thl/buyer.py
+++ b/generalresearch/managers/thl/buyer.py
@@ -8,7 +8,7 @@ from generalresearch.managers.base import Permission, PostgresManager
from generalresearch.models.thl.survey.buyer import Buyer
if TYPE_CHECKING:
- from generalresearch.models import Source
+ from generalresearch.models.definitions import Source
from generalresearch.pg_helper import PostgresConfig
diff --git a/generalresearch/managers/thl/cashout_method.py b/generalresearch/managers/thl/cashout_method.py
index e701da3..c12c920 100644
--- a/generalresearch/managers/thl/cashout_method.py
+++ b/generalresearch/managers/thl/cashout_method.py
@@ -9,10 +9,10 @@ from uuid import UUID, uuid4
from pydantic import NonNegativeInt
from generalresearch.managers.base import PostgresManager
-from generalresearch.models.thl.wallet import PayoutType
from generalresearch.models.thl.wallet.cashout_method import (
CashoutMethod,
)
+from generalresearch.models.thl.wallet.definitions import PayoutType
if TYPE_CHECKING:
from generalresearch.models.thl.user import User
diff --git a/generalresearch/managers/thl/contest_manager.py b/generalresearch/managers/thl/contest_manager.py
index 3f85d31..68b2cf0 100644
--- a/generalresearch/managers/thl/contest_manager.py
+++ b/generalresearch/managers/thl/contest_manager.py
@@ -14,7 +14,9 @@ from generalresearch.models.thl.contest import (
ContestPrize,
ContestWinner,
)
+from generalresearch.models.thl.contest.contest_entry import ContestEntry
from generalresearch.models.thl.contest.definitions import (
+ ContestEntryType,
ContestStatus,
ContestType,
)
@@ -35,8 +37,6 @@ from generalresearch.models.thl.contest.milestone import (
MilestoneUserView,
)
from generalresearch.models.thl.contest.raffle import (
- ContestEntry,
- ContestEntryType,
RaffleContest,
RaffleUserView,
)
diff --git a/generalresearch/managers/thl/ledger_manager/ledger.py b/generalresearch/managers/thl/ledger_manager/ledger.py
index 6cb4b28..f2455d4 100644
--- a/generalresearch/managers/thl/ledger_manager/ledger.py
+++ b/generalresearch/managers/thl/ledger_manager/ledger.py
@@ -13,7 +13,6 @@ from pydantic import AwareDatetime, NonNegativeInt, PositiveInt
from redis.exceptions import LockError, LockNotOwnedError
from generalresearch.currency import LedgerCurrency
-from generalresearch.managers import parse_order_by
from generalresearch.managers.base import (
Permission,
PostgresManager,
@@ -28,6 +27,7 @@ from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerTransactionFlagAlreadyExistsError,
LedgerTransactionReleaseLockError,
)
+from generalresearch.managers.utils import parse_order_by
from generalresearch.models.custom_types import check_valid_uuid
from generalresearch.models.thl.ledger import (
LedgerAccount,
diff --git a/generalresearch/managers/thl/ledger_manager/thl_ledger.py b/generalresearch/managers/thl/ledger_manager/thl_ledger.py
index 7aed619..bd27acf 100644
--- a/generalresearch/managers/thl/ledger_manager/thl_ledger.py
+++ b/generalresearch/managers/thl/ledger_manager/thl_ledger.py
@@ -52,7 +52,7 @@ from generalresearch.models.thl.ledger import (
)
from generalresearch.models.thl.product import Product
from generalresearch.models.thl.session import Status
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
if TYPE_CHECKING:
from generalresearch.models.custom_types import UUIDStr
diff --git a/generalresearch/managers/thl/payout.py b/generalresearch/managers/thl/payout.py
index 2914ba4..1749783 100644
--- a/generalresearch/managers/thl/payout.py
+++ b/generalresearch/managers/thl/payout.py
@@ -31,11 +31,11 @@ from generalresearch.models.thl.payout import (
PayoutEvent,
UserPayoutEvent,
)
-from generalresearch.models.thl.wallet import PayoutType
from generalresearch.models.thl.wallet.cashout_method import (
CashMailOrderData,
CashoutRequestInfo,
)
+from generalresearch.models.thl.wallet.definitions import PayoutType
if TYPE_CHECKING:
from generalresearch.managers.thl.ledger_manager.thl_ledger import (
diff --git a/generalresearch/managers/thl/session.py b/generalresearch/managers/thl/session.py
index 7f17252..41d3893 100644
--- a/generalresearch/managers/thl/session.py
+++ b/generalresearch/managers/thl/session.py
@@ -10,12 +10,12 @@ from faker import Faker
from psycopg import sql
from pydantic import NonNegativeInt, PositiveInt
-from generalresearch.managers import parse_order_by
from generalresearch.managers.base import (
Permission,
PostgresManager,
)
from generalresearch.managers.thl.product import ProductManager
+from generalresearch.managers.utils import parse_order_by
from generalresearch.models.legacy.bucket import Bucket
from generalresearch.models.thl.session import (
Session,
@@ -28,8 +28,8 @@ from generalresearch.models.thl.task_status import (
from generalresearch.models.thl.user import User
if TYPE_CHECKING:
- from generalresearch.models import DeviceType
from generalresearch.models.custom_types import UUIDStr
+ from generalresearch.models.definitions import DeviceType
from generalresearch.models.thl.definitions import (
SessionStatusCode2,
Status,
diff --git a/generalresearch/managers/thl/survey.py b/generalresearch/managers/thl/survey.py
index eacb345..92777e5 100644
--- a/generalresearch/managers/thl/survey.py
+++ b/generalresearch/managers/thl/survey.py
@@ -13,7 +13,7 @@ from pydantic import NonNegativeInt
from generalresearch.managers.base import Permission, PostgresManager
from generalresearch.managers.thl.buyer import BuyerManager
from generalresearch.managers.thl.category import CategoryManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.survey.model import (
Survey,
SurveyStat,
diff --git a/generalresearch/managers/thl/task_adjustment.py b/generalresearch/managers/thl/task_adjustment.py
index e3f382d..d0d83cb 100644
--- a/generalresearch/managers/thl/task_adjustment.py
+++ b/generalresearch/managers/thl/task_adjustment.py
@@ -6,12 +6,12 @@ from decimal import Decimal
from functools import cached_property
from typing import TYPE_CHECKING
-from generalresearch.managers import parse_order_by
from generalresearch.managers.base import (
PostgresManager,
)
from generalresearch.managers.thl.session import SessionManager
from generalresearch.managers.thl.wall import WallManager
+from generalresearch.managers.utils import parse_order_by
from generalresearch.models.thl.definitions import (
Status,
WallAdjustedStatus,
diff --git a/generalresearch/managers/thl/wall.py b/generalresearch/managers/thl/wall.py
index b9dc94d..83697f5 100644
--- a/generalresearch/managers/thl/wall.py
+++ b/generalresearch/managers/thl/wall.py
@@ -14,12 +14,12 @@ from psycopg import sql
from psycopg.rows import dict_row
from pydantic import AwareDatetime, PositiveInt
-from generalresearch.managers import parse_order_by
from generalresearch.managers.base import (
PostgresManager,
PostgresManagerWithRedis,
)
-from generalresearch.models import Source
+from generalresearch.managers.utils import parse_order_by
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
WallAdjustedStatus,
)
diff --git a/generalresearch/managers/thl/wallet/__init__.py b/generalresearch/managers/thl/wallet/__init__.py
index 457483f..f805872 100644
--- a/generalresearch/managers/thl/wallet/__init__.py
+++ b/generalresearch/managers/thl/wallet/__init__.py
@@ -6,7 +6,7 @@ from generalresearch.managers.thl.wallet.approve import (
approve_paypal_order,
)
from generalresearch.models.thl.definitions import PayoutStatus
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
if TYPE_CHECKING:
from generalresearch.managers.thl.ledger_manager.thl_ledger import (
diff --git a/generalresearch/managers/utils.py b/generalresearch/managers/utils.py
new file mode 100644
index 0000000..bc745fd
--- /dev/null
+++ b/generalresearch/managers/utils.py
@@ -0,0 +1,16 @@
+def parse_order_by(order_by_str: str) -> str:
+ """
+ Converts django-rest-framework ordering str to mysql clause
+ :param order_by_str: e.g. 'created,-name'
+ :return: mysql clause e.g. ORDER BY created ASC, name DESC
+ """
+ fields = order_by_str.split(",")
+
+ order_clause = []
+ for field in fields:
+ if field.startswith("-"):
+ order_clause.append(f"{field[1:]} DESC")
+ else:
+ order_clause.append(f"{field} ASC")
+
+ return "ORDER BY " + ", ".join(order_clause)
diff --git a/generalresearch/models/cint/question.py b/generalresearch/models/cint/question.py
index 44efd13..ab46653 100644
--- a/generalresearch/models/cint/question.py
+++ b/generalresearch/models/cint/question.py
@@ -8,7 +8,7 @@ from uuid import UUID
from pydantic import BaseModel, Field, field_validator, model_validator
-from generalresearch.models import Source, string_utils
+from generalresearch.models.definitions import Source, string_utils
from generalresearch.models.thl.profiling.marketplace import (
MarketplaceQuestion,
MarketplaceUserQuestionAnswer,
diff --git a/generalresearch/models/cint/survey.py b/generalresearch/models/cint/survey.py
index 8c8f882..ebba09e 100644
--- a/generalresearch/models/cint/survey.py
+++ b/generalresearch/models/cint/survey.py
@@ -18,7 +18,7 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import Source, TaskCalculationType
+from generalresearch.models.definitions import Source, TaskCalculationType
from generalresearch.models.thl.demographics import Gender
from generalresearch.models.thl.survey import MarketplaceTask
from generalresearch.models.thl.survey.condition import (
diff --git a/generalresearch/models/custom_types.py b/generalresearch/models/custom_types.py
index 5e4db3e..680a99c 100644
--- a/generalresearch/models/custom_types.py
+++ b/generalresearch/models/custom_types.py
@@ -20,7 +20,7 @@ from pydantic.functional_validators import AfterValidator, BeforeValidator
from pydantic.networks import IPvAnyNetwork, UrlConstraints
from pydantic_core import MultiHostHost, Url
-from generalresearch.models import DeviceType, Source
+from generalresearch.models.definitions import DeviceType, Source
HOSTNAME_REGEX = re.compile(
r"^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
diff --git a/generalresearch/models/definitions.py b/generalresearch/models/definitions.py
new file mode 100644
index 0000000..c0348d7
--- /dev/null
+++ b/generalresearch/models/definitions.py
@@ -0,0 +1,114 @@
+from __future__ import annotations
+
+from enum import IntEnum, StrEnum
+
+from generalresearch.utils.enum import ReprEnumMeta
+
+
+class Source(StrEnum, metaclass=ReprEnumMeta):
+ # The external marketplace, or the source of the survey / work.
+ # Max length of the value is 2.
+ GRS = "g"
+ CINT = "c"
+ DALIA = "a" # deprecated
+ DYNATA = "d"
+ ETX = "et"
+ FULL_CIRCLE = "f"
+ INNOVATE = "i"
+ LUCID = "l"
+ MORNING_CONSULT = "m"
+ OPEN_LABS = "n"
+ POLLFISH = "o"
+ PRECISION = "e"
+ PRODEGE_USER = "r" # deprecated
+ PRODEGE = "pr" # using 'r' for vendor_wall
+ PULLEY = "p" # deprecated
+ REPDATA = "rd" # using 'q' for vendor_wall
+ SAGO = "h"
+ SPECTRUM = "s"
+ TESTING = "t" # Used internally for testing
+ TESTING2 = "u" # Used internally for testing
+ WXET = "w"
+
+
+class DebitKey(IntEnum, metaclass=ReprEnumMeta):
+ # The debit key for marketplaces
+ CINT = 8
+ DALIA = 9
+ DYNATA = 6
+ # ETX = None
+ FULL_CIRCLE = 15
+ INNOVATE = 7
+ LUCID = 0
+ MORNING_CONSULT = 12
+ # OPEN_LABS = None
+ POLLFISH = 13
+ PRECISION = 14
+ PRODEGE = 11
+ SAGO = 10
+ SPECTRUM = 5
+ # WXET = None
+
+
+class DeviceType(IntEnum, metaclass=ReprEnumMeta):
+ UNKNOWN = 0
+ MOBILE = 1
+ DESKTOP = 2
+ TABLET = 3
+
+
+class LogicalOperator(StrEnum, metaclass=ReprEnumMeta):
+ OR = "OR"
+ AND = "AND"
+ # There is currently no use case for NOT. See MarketplaceCondition.explain_not
+ NOT = "NOT"
+
+
+class TaskStatus(StrEnum, metaclass=ReprEnumMeta):
+ # A survey is live if it is open and, given all conditions are met, is
+ # possible to send in traffic. All other statuses are just variants of
+ # NOT Live (not accepting traffic)
+ LIVE = "LIVE"
+
+ # This is a generic NOT Live status. A marketplace may use other more
+ # specific statuses but in practice they don't matter because all we care
+ # about is if the task is LIVE.
+ NOT_LIVE = "NOT_LIVE"
+
+ # We need a status to mark if a survey we thought was live does not come
+ # back from the API, we'll mark it as NOT_FOUND.
+ NOT_FOUND = "NOT_FOUND"
+
+
+class TaskCalculationType(StrEnum):
+ COMPLETES = "COMPLETES"
+ STARTS = "STARTS"
+
+ @classmethod
+ def from_api(cls, v: str) -> TaskCalculationType:
+ return {
+ "complete": cls.COMPLETES,
+ "completes": cls.COMPLETES,
+ "survey start": cls.STARTS,
+ "survey starts": cls.STARTS,
+ "start": cls.STARTS,
+ "prescreens": cls.STARTS,
+ "prescreen": cls.STARTS,
+ }[v.lower()]
+
+ @classmethod
+ def prodege_from_api(cls, v: int) -> TaskCalculationType:
+ return {1: cls.COMPLETES, 2: cls.STARTS}[v]
+
+ @classmethod
+ def innovate_from_api(cls, v: int) -> TaskCalculationType:
+ return {0: cls.COMPLETES, 1: cls.STARTS}[v]
+
+
+class URLQueryKey(StrEnum, metaclass=ReprEnumMeta):
+ PRODUCT_ID = "39057c8b"
+ PRODUCT_USER_ID = "c184efc0"
+ SESSION_ID = "0bb50182"
+
+
+MAX_INT32 = 2**31
diff --git a/generalresearch/models/device.py b/generalresearch/models/device.py
index cc15eee..432c897 100644
--- a/generalresearch/models/device.py
+++ b/generalresearch/models/device.py
@@ -1,6 +1,6 @@
from user_agents import parse as parse_ua
-from generalresearch.models import DeviceType
+from generalresearch.models.definitions import DeviceType
def parse_device_from_useragent(user_agent: str) -> DeviceType:
diff --git a/generalresearch/models/dynata/question.py b/generalresearch/models/dynata/question.py
index 1ed560a..60c7366 100644
--- a/generalresearch/models/dynata/question.py
+++ b/generalresearch/models/dynata/question.py
@@ -11,7 +11,7 @@ from typing import TYPE_CHECKING, Any, Literal
from pydantic import BaseModel, Field, PositiveInt, field_validator, model_validator
-from generalresearch.models import MAX_INT32, Source
+from generalresearch.models.definitions import MAX_INT32, Source
from generalresearch.models.thl.profiling.marketplace import MarketplaceQuestion
if TYPE_CHECKING:
diff --git a/generalresearch/models/dynata/survey.py b/generalresearch/models/dynata/survey.py
index 70e3659..4174d31 100644
--- a/generalresearch/models/dynata/survey.py
+++ b/generalresearch/models/dynata/survey.py
@@ -19,7 +19,7 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.dynata import DynataStatus
from generalresearch.models.thl.demographics import (
Gender,
@@ -31,7 +31,6 @@ from generalresearch.models.thl.survey.condition import (
)
if TYPE_CHECKING:
- from generalresearch.models import TaskCalculationType
from generalresearch.models.custom_types import (
AlphaNumStr,
AlphaNumStrSet,
@@ -39,6 +38,7 @@ if TYPE_CHECKING:
CoercedStr,
DeviceTypes,
)
+ from generalresearch.models.definitions import TaskCalculationType
logging.basicConfig()
logger = logging.getLogger()
diff --git a/generalresearch/models/dynata/task_collection.py b/generalresearch/models/dynata/task_collection.py
index 94868bb..c6cdc19 100644
--- a/generalresearch/models/dynata/task_collection.py
+++ b/generalresearch/models/dynata/task_collection.py
@@ -6,7 +6,7 @@ import pandas as pd
from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.locales import Localelator
-from generalresearch.models import TaskCalculationType
+from generalresearch.models.definitions import TaskCalculationType
from generalresearch.models.dynata import DynataStatus
from generalresearch.models.thl.survey.task_collection import (
TaskCollection,
diff --git a/generalresearch/models/events.py b/generalresearch/models/events.py
index 8d059f9..34f6be8 100644
--- a/generalresearch/models/events.py
+++ b/generalresearch/models/events.py
@@ -14,12 +14,12 @@ from pydantic import (
)
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import (
AwareDatetimeISO,
CountryISOLike,
UUIDStr,
)
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
SessionStatusCode2,
Status,
diff --git a/generalresearch/models/gr/business.py b/generalresearch/models/gr/business.py
index 146d690..e11c54d 100644
--- a/generalresearch/models/gr/business.py
+++ b/generalresearch/models/gr/business.py
@@ -11,7 +11,7 @@ from uuid import uuid4
import pandas as pd
import pyarrow as pa
-from dask.distributed import Client
+from dask.distributed import Client as DaskClient
from psycopg.cursor import Cursor
from psycopg.rows import dict_row
from pydantic import BaseModel, ConfigDict, Field, PositiveInt, ValidationError
@@ -24,6 +24,11 @@ from generalresearch.incite.schemas.mergers.pop_ledger import (
numerical_col_names,
)
from generalresearch.models.admin.request import ReportRequest, ReportType
+from generalresearch.models.custom_types import (
+ AwareDatetime,
+ UUIDStr,
+ UUIDStrCoerce,
+)
from generalresearch.models.gr.team import Team
from generalresearch.models.thl.finance import BusinessBalances, POPFinancial
from generalresearch.models.thl.ledger import OrderBy
@@ -32,11 +37,6 @@ from generalresearch.utils.enum import ReprEnumMeta
if TYPE_CHECKING:
from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
- from generalresearch.models.custom_types import (
- AwareDatetime,
- UUIDStr,
- UUIDStrCoerce,
- )
from generalresearch.models.thl.ledger import LedgerAccount
from generalresearch.models.thl.payout import BusinessPayoutEvent
from generalresearch.pg_helper import PostgresConfig
@@ -354,7 +354,7 @@ class Business(BaseModel):
thl_pg_config: PostgresConfig,
lm: LedgerManager,
ds: GRLDatasets,
- client: Client,
+ client: DaskClient,
pop_ledger: PopLedgerMerge | None = None,
at_timestamp: AwareDatetime | None = None,
) -> None:
@@ -464,7 +464,7 @@ class Business(BaseModel):
thl_pg_config: PostgresConfig,
thl_lm: ThlLedgerManager,
ds: GRLDatasets,
- client: Client,
+ client: DaskClient,
pop_ledger: PopLedgerMerge | None = None,
) -> None:
"""This is very similar to the Product POP Financial endpoint; however,
@@ -518,7 +518,7 @@ class Business(BaseModel):
self,
thl_pg_config: PostgresConfig,
ds: GRLDatasets,
- client: Client,
+ client: DaskClient,
mnt_gr_api: Path,
enriched_session: EnrichedSessionMerge | None = None,
) -> None:
@@ -561,7 +561,7 @@ class Business(BaseModel):
self,
thl_pg_config: PostgresConfig,
ds: GRLDatasets,
- client: Client,
+ client: DaskClient,
mnt_gr_api: Path,
enriched_wall: EnrichedWallMerge | None = None,
) -> None:
@@ -633,7 +633,7 @@ class Business(BaseModel):
pg_config: PostgresConfig,
thl_web_rr: PostgresConfig,
redis_config: RedisConfig,
- client: Client,
+ client: DaskClient,
ds: GRLDatasets,
lm: LedgerManager,
thl_lm: ThlLedgerManager,
diff --git a/generalresearch/models/innovate/question.py b/generalresearch/models/innovate/question.py
index fc89524..6423399 100644
--- a/generalresearch/models/innovate/question.py
+++ b/generalresearch/models/innovate/question.py
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, Any, Literal
from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.profiling.marketplace import (
MarketplaceQuestion,
MarketplaceUserQuestionAnswer,
diff --git a/generalresearch/models/innovate/survey.py b/generalresearch/models/innovate/survey.py
index 60921df..e718dda 100644
--- a/generalresearch/models/innovate/survey.py
+++ b/generalresearch/models/innovate/survey.py
@@ -24,7 +24,7 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import (
+from generalresearch.models.definitions import (
LogicalOperator,
Source,
)
@@ -41,15 +41,15 @@ from generalresearch.models.thl.survey.condition import (
)
if TYPE_CHECKING:
- from generalresearch.models import (
- TaskCalculationType,
- )
from generalresearch.models.custom_types import (
AlphaNumStrSet,
AwareDatetimeISO,
CoercedStr,
DeviceTypes,
)
+ from generalresearch.models.definitions import (
+ TaskCalculationType,
+ )
from generalresearch.models.innovate.question import InnovateQuestionID
logging.basicConfig()
diff --git a/generalresearch/models/legacy/bucket.py b/generalresearch/models/legacy/bucket.py
index f20a769..5f53b89 100644
--- a/generalresearch/models/legacy/bucket.py
+++ b/generalresearch/models/legacy/bucket.py
@@ -15,7 +15,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.stats import StatisticalSummary
if TYPE_CHECKING:
diff --git a/generalresearch/models/legacy/questions.py b/generalresearch/models/legacy/questions.py
index bebd28f..c333804 100644
--- a/generalresearch/models/legacy/questions.py
+++ b/generalresearch/models/legacy/questions.py
@@ -219,7 +219,7 @@ class UserQuestionAnswers(BaseModel):
self.user = res
def prefetch_wall(self, wm: WallManager) -> None:
- from generalresearch.models import Source
+ from generalresearch.models.definitions import Source
res: Wall | None = wm.get_from_uuid_if_exists(wall_uuid=self.session_id)
diff --git a/generalresearch/models/lucid/question.py b/generalresearch/models/lucid/question.py
index 98f535b..c1b9e52 100644
--- a/generalresearch/models/lucid/question.py
+++ b/generalresearch/models/lucid/question.py
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Any, Literal, Self
from pydantic import BaseModel, Field, field_validator, model_validator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.profiling.marketplace import (
MarketplaceQuestion,
)
diff --git a/generalresearch/models/lucid/survey.py b/generalresearch/models/lucid/survey.py
index 0f03e31..a04e529 100644
--- a/generalresearch/models/lucid/survey.py
+++ b/generalresearch/models/lucid/survey.py
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Any, Self
from pydantic import BaseModel, ConfigDict, Field, NonNegativeInt
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.survey.condition import (
ConditionValueType,
MarketplaceCondition,
diff --git a/generalresearch/models/morning/question.py b/generalresearch/models/morning/question.py
index 748fcc6..909992f 100644
--- a/generalresearch/models/morning/question.py
+++ b/generalresearch/models/morning/question.py
@@ -6,7 +6,7 @@ from uuid import UUID
from pydantic import BaseModel, Field, field_validator, model_validator
from generalresearch.locales import Localelator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.profiling.marketplace import (
MarketplaceQuestion,
MarketplaceUserQuestionAnswer,
diff --git a/generalresearch/models/morning/survey.py b/generalresearch/models/morning/survey.py
index 1e217f6..25accb6 100644
--- a/generalresearch/models/morning/survey.py
+++ b/generalresearch/models/morning/survey.py
@@ -25,7 +25,7 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.morning import MorningStatus
from generalresearch.models.thl.demographics import Gender
from generalresearch.models.thl.survey import MarketplaceTask
diff --git a/generalresearch/models/pollfish/question.py b/generalresearch/models/pollfish/question.py
index 3b658fd..f0c733c 100644
--- a/generalresearch/models/pollfish/question.py
+++ b/generalresearch/models/pollfish/question.py
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, Any, Literal, Self
from pydantic import BaseModel, Field, model_validator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.profiling.marketplace import MarketplaceQuestion
if TYPE_CHECKING:
diff --git a/generalresearch/models/precision/question.py b/generalresearch/models/precision/question.py
index ba17361..6ed6bbd 100644
--- a/generalresearch/models/precision/question.py
+++ b/generalresearch/models/precision/question.py
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, Any, Literal
from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator
-from generalresearch.models import Source, string_utils
+from generalresearch.models.definitions import Source, string_utils
from generalresearch.models.thl.profiling.marketplace import (
MarketplaceQuestion,
MarketplaceUserQuestionAnswer,
diff --git a/generalresearch/models/precision/survey.py b/generalresearch/models/precision/survey.py
index fa30882..a9e34e6 100644
--- a/generalresearch/models/precision/survey.py
+++ b/generalresearch/models/precision/survey.py
@@ -15,7 +15,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.precision import PrecisionStatus
from generalresearch.models.thl.demographics import Gender
from generalresearch.models.thl.survey import MarketplaceTask
diff --git a/generalresearch/models/prodege/question.py b/generalresearch/models/prodege/question.py
index c43b51a..b963785 100644
--- a/generalresearch/models/prodege/question.py
+++ b/generalresearch/models/prodege/question.py
@@ -18,7 +18,7 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import MAX_INT32, Source
+from generalresearch.models.definitions import MAX_INT32, Source
from generalresearch.models.thl.profiling.marketplace import MarketplaceQuestion
if TYPE_CHECKING:
diff --git a/generalresearch/models/prodege/survey.py b/generalresearch/models/prodege/survey.py
index 7e56a9c..e3c765e 100644
--- a/generalresearch/models/prodege/survey.py
+++ b/generalresearch/models/prodege/survey.py
@@ -20,7 +20,11 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import LogicalOperator, Source, TaskCalculationType
+from generalresearch.models.definitions import (
+ LogicalOperator,
+ Source,
+ TaskCalculationType,
+)
from generalresearch.models.prodege import (
ProdegePastParticipationType,
ProdegeStatus,
diff --git a/generalresearch/models/repdata/question.py b/generalresearch/models/repdata/question.py
index 8cb1fa7..a578741 100644
--- a/generalresearch/models/repdata/question.py
+++ b/generalresearch/models/repdata/question.py
@@ -17,7 +17,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import MAX_INT32, Source
+from generalresearch.models.definitions import MAX_INT32, Source
from generalresearch.models.thl.profiling.marketplace import MarketplaceQuestion
if TYPE_CHECKING:
diff --git a/generalresearch/models/repdata/survey.py b/generalresearch/models/repdata/survey.py
index cea61ed..fc1b649 100644
--- a/generalresearch/models/repdata/survey.py
+++ b/generalresearch/models/repdata/survey.py
@@ -21,7 +21,7 @@ from pydantic import (
from generalresearch.grpc import timestamp_from_datetime
from generalresearch.locales import Localelator
-from generalresearch.models import (
+from generalresearch.models.definitions import (
DeviceType,
LogicalOperator,
Source,
diff --git a/generalresearch/models/repdata/task_collection.py b/generalresearch/models/repdata/task_collection.py
index 04d79bd..f2cb63b 100644
--- a/generalresearch/models/repdata/task_collection.py
+++ b/generalresearch/models/repdata/task_collection.py
@@ -6,7 +6,7 @@ import pandas as pd
from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.locales import Localelator
-from generalresearch.models import TaskCalculationType
+from generalresearch.models.definitions import TaskCalculationType
from generalresearch.models.repdata import RepDataStatus
from generalresearch.models.thl.survey.task_collection import (
TaskCollection,
diff --git a/generalresearch/models/sago/question.py b/generalresearch/models/sago/question.py
index cf9ea19..bb51d31 100644
--- a/generalresearch/models/sago/question.py
+++ b/generalresearch/models/sago/question.py
@@ -18,7 +18,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import MAX_INT32, Source, string_utils
+from generalresearch.models.definitions import MAX_INT32, Source, string_utils
from generalresearch.models.thl.profiling.marketplace import MarketplaceQuestion
if TYPE_CHECKING:
diff --git a/generalresearch/models/sago/survey.py b/generalresearch/models/sago/survey.py
index c2f886a..c9bf431 100644
--- a/generalresearch/models/sago/survey.py
+++ b/generalresearch/models/sago/survey.py
@@ -18,7 +18,7 @@ from pydantic import (
)
from generalresearch.locales import Localelator
-from generalresearch.models import LogicalOperator, Source
+from generalresearch.models.definitions import LogicalOperator, Source
from generalresearch.models.sago import SagoStatus
from generalresearch.models.thl.demographics import Gender
from generalresearch.models.thl.survey import MarketplaceTask
diff --git a/generalresearch/models/spectrum/question.py b/generalresearch/models/spectrum/question.py
index 89fbeb3..9c9bfa0 100644
--- a/generalresearch/models/spectrum/question.py
+++ b/generalresearch/models/spectrum/question.py
@@ -18,7 +18,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import MAX_INT32, Source, string_utils
+from generalresearch.models.definitions import MAX_INT32, Source, string_utils
from generalresearch.models.thl.profiling.marketplace import (
MarketplaceQuestion,
)
diff --git a/generalresearch/models/spectrum/survey.py b/generalresearch/models/spectrum/survey.py
index 4daa00b..a02c510 100644
--- a/generalresearch/models/spectrum/survey.py
+++ b/generalresearch/models/spectrum/survey.py
@@ -10,7 +10,7 @@ from more_itertools import flatten
from pydantic import BaseModel, ConfigDict, Field, computed_field, model_validator
from generalresearch.locales import Localelator
-from generalresearch.models import Source, TaskCalculationType
+from generalresearch.models.definitions import Source, TaskCalculationType
from generalresearch.models.spectrum import SpectrumStatus
from generalresearch.models.thl.demographics import Gender
from generalresearch.models.thl.survey import MarketplaceTask
diff --git a/generalresearch/models/spectrum/task_collection.py b/generalresearch/models/spectrum/task_collection.py
index d909292..8e49434 100644
--- a/generalresearch/models/spectrum/task_collection.py
+++ b/generalresearch/models/spectrum/task_collection.py
@@ -6,7 +6,7 @@ import pandas as pd
from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.locales import Localelator
-from generalresearch.models import TaskCalculationType
+from generalresearch.models.definitions import TaskCalculationType
from generalresearch.models.spectrum import SpectrumStatus
from generalresearch.models.thl.survey.task_collection import (
TaskCollection,
diff --git a/generalresearch/models/thl/__init__.py b/generalresearch/models/thl/__init__.py
index cb04b29..7f2b8a9 100644
--- a/generalresearch/models/thl/__init__.py
+++ b/generalresearch/models/thl/__init__.py
@@ -8,7 +8,7 @@ from decimal import Decimal
# BrokerageProductPayoutEvent,
# PayoutEvent,
# )
-# from generalresearch.models.thl.product import Product
+from generalresearch.models.thl.product import Product
# _ = (
# Product,
@@ -18,7 +18,7 @@ from decimal import Decimal
# POPFinancial,
# )
-# Product.model_rebuild()
+Product.model_rebuild()
# PayoutEvent.model_rebuild()
# BrokerageProductPayoutEvent.model_rebuild()
diff --git a/generalresearch/models/thl/category.py b/generalresearch/models/thl/category.py
index 32841a5..ebfc840 100644
--- a/generalresearch/models/thl/category.py
+++ b/generalresearch/models/thl/category.py
@@ -1,12 +1,11 @@
from __future__ import annotations
-from typing import TYPE_CHECKING, Any, Self
+from typing import Any, Self
from uuid import uuid4
from pydantic import BaseModel, Field, PositiveInt, model_validator
-if TYPE_CHECKING:
- from generalresearch.models.custom_types import UUIDStr
+from generalresearch.models.custom_types import UUIDStr
class Category(BaseModel, frozen=True):
diff --git a/generalresearch/models/thl/contest/contest_entry.py b/generalresearch/models/thl/contest/contest_entry.py
index a57b2df..17b288b 100644
--- a/generalresearch/models/thl/contest/contest_entry.py
+++ b/generalresearch/models/thl/contest/contest_entry.py
@@ -12,10 +12,12 @@ from pydantic import (
)
from generalresearch.currency import USDCent
+from generalresearch.models.thl.contest.definitions import (
+ ContestEntryType,
+)
if TYPE_CHECKING:
from generalresearch.models.custom_types import AwareDatetimeISO, UUIDStr
- from generalresearch.models.thl.contest.definitions import ContestEntryType
from generalresearch.models.thl.user import User
@@ -59,10 +61,7 @@ class ContestEntry(BaseModel):
@model_validator(mode="before")
@classmethod
- def validate_amount_type(cls, data: dict) -> dict:
- from generalresearch.models.thl.contest.definitions import (
- ContestEntryType,
- )
+ def validate_amount_type(cls, data: dict[str, Any]) -> dict[str, Any]:
amount = data.get("amount")
entry_type = data.get("entry_type")
@@ -71,6 +70,7 @@ class ContestEntry(BaseModel):
assert isinstance(amount, int) and not isinstance(
amount, USDCent
), "amount must be int in ContestEntryType.COUNT"
+
elif entry_type == ContestEntryType.CASH:
# This may be coming from the DB, in which case it is an int.
data["amount"] = USDCent(data["amount"])
@@ -79,9 +79,6 @@ class ContestEntry(BaseModel):
@computed_field()
def amount_str(self) -> str:
- from generalresearch.models.thl.contest.definitions import (
- ContestEntryType,
- )
if self.entry_type == ContestEntryType.COUNT:
return str(self.amount)
diff --git a/generalresearch/models/thl/contest/raffle.py b/generalresearch/models/thl/contest/raffle.py
index b944740..21bc481 100644
--- a/generalresearch/models/thl/contest/raffle.py
+++ b/generalresearch/models/thl/contest/raffle.py
@@ -26,11 +26,9 @@ from generalresearch.models.thl.contest.contest import (
ContestBase,
ContestUserView,
)
-from generalresearch.models.thl.contest.contest_entry import (
- ContestEntryType,
-)
from generalresearch.models.thl.contest.definitions import (
ContestEndReason,
+ ContestEntryType,
ContestPrizeKind,
ContestStatus,
ContestType,
diff --git a/generalresearch/models/thl/finance.py b/generalresearch/models/thl/finance.py
index 4b750da..9e7d2c3 100644
--- a/generalresearch/models/thl/finance.py
+++ b/generalresearch/models/thl/finance.py
@@ -27,8 +27,9 @@ adjustment_example = random.randint(-1_000, 50 * 100)
if TYPE_CHECKING:
from generalresearch.currency import USDCent
+ from generalresearch.managers.thl.product import ProductManager
from generalresearch.models.thl.ledger import LedgerAccount
- from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.models.thl.product import Product
class AdjustmentType(BaseModel):
@@ -516,7 +517,7 @@ class ProductBalances(BaseModel):
if isinstance(input_data, pd.Series):
return ProductBalances.model_validate(input_data.to_dict())
- elif isinstance(input_data, pd.DataFrame):
+ else:
assert isinstance(input_data.index, pd.DatetimeIndex), "Invalid input data"
# The pop merge is grouped by 1min intervals. Therefore, if we take
@@ -529,9 +530,6 @@ class ProductBalances(BaseModel):
pb.last_event = pq_last_event_close.to_pydatetime()
return pb
- else:
- raise NotImplementedError("Can't handle this input")
-
def __str__(self) -> str:
return (
f"Product: {self.product_id or '—'}\n"
@@ -834,19 +832,17 @@ class BusinessBalances(BaseModel):
def from_pandas(
input_data: pd.DataFrame,
accounts: list[LedgerAccount],
- thl_pg_config: PostgresConfig,
+ product_manager: ProductManager,
) -> BusinessBalances:
LOG.debug(f"BusinessBalances.from_pandas(input_data={input_data.shape})")
from generalresearch.incite.schemas.mergers.pop_ledger import (
numerical_col_names,
)
- from generalresearch.managers.thl.product import ProductManager
from generalresearch.models.thl.ledger import (
AccountType,
Direction,
)
- from generalresearch.models.thl.product import Product
# Validate the input accounts
assert len(accounts) > 0, "Must provide accounts"
@@ -872,8 +868,7 @@ class BusinessBalances(BaseModel):
# Sort the ProductBalances so that they're always in a consistent
# sorted order.
- pm = ProductManager(pg_config=thl_pg_config)
- products: list[Product] = pm.get_by_uuids(
+ products: list[Product] = product_manager.get_by_uuids(
product_uuids=[pb.product_id for pb in product_balances]
)
sorted_products_uuids = [
diff --git a/generalresearch/models/thl/ledger.py b/generalresearch/models/thl/ledger.py
index c38e83b..fbfb6bb 100644
--- a/generalresearch/models/thl/ledger.py
+++ b/generalresearch/models/thl/ledger.py
@@ -354,7 +354,7 @@ class LedgerTransaction(BaseModel):
def to_user_tx(
self, user_account: LedgerAccount, product_id: str, payout_format: str
):
- from generalresearch.models.thl.wallet import PayoutType
+ from generalresearch.models.thl.wallet.definitions import PayoutType
d = self.model_dump(include={"created"})
d["tx_type"] = self.metadata.get("tx_type")
diff --git a/generalresearch/models/thl/offerwall/__init__.py b/generalresearch/models/thl/offerwall/__init__.py
index 0c3d51d..599cc1d 100644
--- a/generalresearch/models/thl/offerwall/__init__.py
+++ b/generalresearch/models/thl/offerwall/__init__.py
@@ -14,8 +14,8 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import Source
from generalresearch.models.custom_types import IPvAnyAddressStr
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.locales import (
CountryISO,
LanguageISO,
diff --git a/generalresearch/models/thl/offerwall/base.py b/generalresearch/models/thl/offerwall/base.py
index 1d41ef2..fb0bc77 100644
--- a/generalresearch/models/thl/offerwall/base.py
+++ b/generalresearch/models/thl/offerwall/base.py
@@ -19,7 +19,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.legacy.bucket import (
Bucket as LegacyBucket,
)
diff --git a/generalresearch/models/thl/offerwall/cache.py b/generalresearch/models/thl/offerwall/cache.py
index aa18014..2a733c9 100644
--- a/generalresearch/models/thl/offerwall/cache.py
+++ b/generalresearch/models/thl/offerwall/cache.py
@@ -6,8 +6,8 @@ from typing import TYPE_CHECKING, Any
from pydantic import BaseModel, Field
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import AwareDatetimeISO, UUIDStr
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.offerwall import OfferWallRequest
from generalresearch.models.thl.offerwall.base import (
OfferwallBase,
diff --git a/generalresearch/models/thl/payout.py b/generalresearch/models/thl/payout.py
index 9902af3..128723b 100644
--- a/generalresearch/models/thl/payout.py
+++ b/generalresearch/models/thl/payout.py
@@ -18,7 +18,7 @@ from pydantic.json_schema import SkipJsonSchema
from generalresearch.currency import USDCent
from generalresearch.models.thl.definitions import PayoutStatus
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
if TYPE_CHECKING:
from generalresearch.models.custom_types import (
diff --git a/generalresearch/models/thl/product.py b/generalresearch/models/thl/product.py
index 988b72d..346a98b 100644
--- a/generalresearch/models/thl/product.py
+++ b/generalresearch/models/thl/product.py
@@ -38,13 +38,13 @@ from pydantic.json_schema import SkipJsonSchema
from generalresearch.currency import USDCent
from generalresearch.decorators import LOG
-from generalresearch.models import Source
from generalresearch.models.custom_types import (
AwareDatetimeISO,
CountryISOLike,
HttpsUrlStr,
UUIDStr,
)
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.finance import (
POPFinancial,
ProductBalances,
@@ -63,7 +63,7 @@ from generalresearch.models.thl.payout_format import (
examples as payout_format_examples,
)
from generalresearch.models.thl.supplier_tag import SupplierTag
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
from generalresearch.models.utils import decimal_to_usd_cents
from generalresearch.redis_helper import RedisConfig
diff --git a/generalresearch/models/thl/profiling/marketplace.py b/generalresearch/models/thl/profiling/marketplace.py
index 0c1e39b..23501e3 100644
--- a/generalresearch/models/thl/profiling/marketplace.py
+++ b/generalresearch/models/thl/profiling/marketplace.py
@@ -7,16 +7,16 @@ from typing import TYPE_CHECKING, Any
from pydantic import BaseModel, ConfigDict, Field, PositiveInt, computed_field
-from generalresearch.models import MAX_INT32
+from generalresearch.models.definitions import MAX_INT32
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import (
AwareDatetimeISO,
CountryISOLike,
LanguageISOLike,
UUIDStr,
)
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.locales import CountryISO, LanguageISO
diff --git a/generalresearch/models/thl/profiling/upk_question.py b/generalresearch/models/thl/profiling/upk_question.py
index a73683c..9c7383a 100644
--- a/generalresearch/models/thl/profiling/upk_question.py
+++ b/generalresearch/models/thl/profiling/upk_question.py
@@ -5,7 +5,7 @@ import json
import re
from enum import StrEnum
from functools import cached_property
-from typing import TYPE_CHECKING, Annotated, Any, Literal
+from typing import Annotated, Any, Literal
from pydantic import (
BaseModel,
@@ -17,12 +17,10 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import Source
+from generalresearch.models.custom_types import UUIDStr
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.category import Category
-if TYPE_CHECKING:
- from generalresearch.models.custom_types import UUIDStr
-
class UPKImportance(BaseModel):
task_count: int | None = Field(
diff --git a/generalresearch/models/thl/profiling/upk_question_answer.py b/generalresearch/models/thl/profiling/upk_question_answer.py
index 41895b1..4d07970 100644
--- a/generalresearch/models/thl/profiling/upk_question_answer.py
+++ b/generalresearch/models/thl/profiling/upk_question_answer.py
@@ -13,7 +13,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import MAX_INT32
+from generalresearch.models.definitions import MAX_INT32
from generalresearch.models.thl.profiling.upk_property import (
Cardinality,
PropertyType,
diff --git a/generalresearch/models/thl/profiling/user_info.py b/generalresearch/models/thl/profiling/user_info.py
index c82e2d2..40b4b17 100644
--- a/generalresearch/models/thl/profiling/user_info.py
+++ b/generalresearch/models/thl/profiling/user_info.py
@@ -6,8 +6,8 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.json_schema import SkipJsonSchema
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import AwareDatetimeISO
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.profiling.user_question_answer import (
MarketplaceResearchProfileQuestion,
)
diff --git a/generalresearch/models/thl/profiling/user_question_answer.py b/generalresearch/models/thl/profiling/user_question_answer.py
index b1868b3..a7c2194 100644
--- a/generalresearch/models/thl/profiling/user_question_answer.py
+++ b/generalresearch/models/thl/profiling/user_question_answer.py
@@ -14,12 +14,12 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import MAX_INT32
+from generalresearch.models.custom_types import AwareDatetimeISO, UUIDStr
+from generalresearch.models.definitions import MAX_INT32
+from generalresearch.models.thl.locales import CountryISO, LanguageISO
if TYPE_CHECKING:
- from generalresearch.models import Source
- from generalresearch.models.custom_types import AwareDatetimeISO, UUIDStr
- from generalresearch.models.thl.locales import CountryISO, LanguageISO
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.profiling.upk_question import UpkQuestion
diff --git a/generalresearch/models/thl/session.py b/generalresearch/models/thl/session.py
index 871e5c4..404cff7 100644
--- a/generalresearch/models/thl/session.py
+++ b/generalresearch/models/thl/session.py
@@ -18,7 +18,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl import (
decimal_to_int_cents,
int_cents_to_decimal,
@@ -37,13 +37,13 @@ if TYPE_CHECKING:
from generalresearch.managers.thl.ledger_manager.thl_ledger import (
ThlLedgerManager,
)
- from generalresearch.models import DeviceType
from generalresearch.models.custom_types import (
AwareDatetimeISO,
EnumNameSerializer,
IPvAnyAddressStr,
UUIDStr,
)
+ from generalresearch.models.definitions import DeviceType
from generalresearch.models.legacy.bucket import Bucket
from generalresearch.models.thl.definitions import (
ReportValue,
diff --git a/generalresearch/models/thl/soft_pair.py b/generalresearch/models/thl/soft_pair.py
index 313d374..c0bf2dd 100644
--- a/generalresearch/models/thl/soft_pair.py
+++ b/generalresearch/models/thl/soft_pair.py
@@ -5,7 +5,7 @@ from enum import Enum
from typing import TYPE_CHECKING
if TYPE_CHECKING:
- from generalresearch.models import Source
+ from generalresearch.models.definitions import Source
from generalresearch.models.dynata.survey import DynataCondition
from generalresearch.models.thl.survey.condition import (
MarketplaceCondition,
diff --git a/generalresearch/models/thl/survey/__init__.py b/generalresearch/models/thl/survey/__init__.py
index d0f2b33..76f819e 100644
--- a/generalresearch/models/thl/survey/__init__.py
+++ b/generalresearch/models/thl/survey/__init__.py
@@ -18,7 +18,7 @@ from generalresearch.models.thl.survey.condition import (
)
if TYPE_CHECKING:
- from generalresearch.models import Source
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.locales import (
CountryISO,
CountryISOs,
diff --git a/generalresearch/models/thl/survey/buyer.py b/generalresearch/models/thl/survey/buyer.py
index 26846d3..ef309d1 100644
--- a/generalresearch/models/thl/survey/buyer.py
+++ b/generalresearch/models/thl/survey/buyer.py
@@ -16,7 +16,7 @@ from pydantic import (
)
from scipy.stats import beta as beta_dist
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
if TYPE_CHECKING:
from generalresearch.models.custom_types import (
diff --git a/generalresearch/models/thl/survey/condition.py b/generalresearch/models/thl/survey/condition.py
index 514ee64..90cf27b 100644
--- a/generalresearch/models/thl/survey/condition.py
+++ b/generalresearch/models/thl/survey/condition.py
@@ -17,7 +17,7 @@ from pydantic import (
model_validator,
)
-from generalresearch.models import LogicalOperator
+from generalresearch.models.definitions import LogicalOperator
MarketplaceConditionHash = Annotated[
str, StringConstraints(min_length=7, max_length=7, pattern=r"^[a-f0-9]+$")
diff --git a/generalresearch/models/thl/survey/model.py b/generalresearch/models/thl/survey/model.py
index 9fa3d8e..8986e4d 100644
--- a/generalresearch/models/thl/survey/model.py
+++ b/generalresearch/models/thl/survey/model.py
@@ -21,7 +21,6 @@ from generalresearch.models.thl.definitions import StatusCode1
from generalresearch.models.thl.pagination import Page
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import (
AwareDatetimeISO,
CountryISOLike,
@@ -29,6 +28,7 @@ if TYPE_CHECKING:
PropertyCode,
SurveyKey,
)
+ from generalresearch.models.definitions import Source
from generalresearch.models.thl.category import Category
from generalresearch.models.thl.definitions import Status
diff --git a/generalresearch/models/thl/survey/penalty.py b/generalresearch/models/thl/survey/penalty.py
index 54edb94..25e07cf 100644
--- a/generalresearch/models/thl/survey/penalty.py
+++ b/generalresearch/models/thl/survey/penalty.py
@@ -7,11 +7,11 @@ from typing import TYPE_CHECKING, Annotated, Literal
from pydantic import BaseModel, ConfigDict, Field, TypeAdapter
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import (
AwareDatetimeISO,
UUIDStr,
)
+ from generalresearch.models.definitions import Source
class SurveyPenalty(BaseModel, abc.ABC):
diff --git a/generalresearch/models/thl/task_adjustment.py b/generalresearch/models/thl/task_adjustment.py
index fa5592e..fee2007 100644
--- a/generalresearch/models/thl/task_adjustment.py
+++ b/generalresearch/models/thl/task_adjustment.py
@@ -7,14 +7,14 @@ from uuid import uuid4
from pydantic import BaseModel, ConfigDict, Field, PositiveInt, model_validator
-from generalresearch.models import MAX_INT32
+from generalresearch.models.definitions import MAX_INT32
from generalresearch.models.thl.definitions import (
WallAdjustedStatus,
)
if TYPE_CHECKING:
- from generalresearch.models import Source
from generalresearch.models.custom_types import AwareDatetimeISO, UUIDStr
+ from generalresearch.models.definitions import Source
class TaskAdjustmentEvent(BaseModel):
diff --git a/generalresearch/models/thl/user.py b/generalresearch/models/thl/user.py
index 302aa72..1f88dc6 100644
--- a/generalresearch/models/thl/user.py
+++ b/generalresearch/models/thl/user.py
@@ -20,7 +20,7 @@ from pydantic import (
)
from sentry_sdk import set_tag, set_user
-from generalresearch.models import MAX_INT32
+from generalresearch.models.definitions import MAX_INT32
if TYPE_CHECKING:
from generalresearch.managers.thl.ledger_manager.thl_ledger import (
@@ -253,7 +253,7 @@ class User(BaseModel):
# # Delete from db.thl-marketplaces
# We need DELETE credentials for all these...
- # from generalresearch.models import Source
+ # from generalresearch.models.definitions import Source
# mp_db_table = {
# Source.SPECTRUM: "`thl-spectrum`.`spectrum_marketresearchprofilequestion`",
# Source.INNOVATE: "`thl-innovate`.`innovate_marketresearchprofilequestion`",
diff --git a/generalresearch/models/thl/user_profile.py b/generalresearch/models/thl/user_profile.py
index 2dc19b7..c47c6f2 100644
--- a/generalresearch/models/thl/user_profile.py
+++ b/generalresearch/models/thl/user_profile.py
@@ -13,7 +13,7 @@ from pydantic import (
)
from pydantic.json_schema import SkipJsonSchema
-from generalresearch.models import MAX_INT32, Source
+from generalresearch.models.definitions import MAX_INT32, Source
if TYPE_CHECKING:
from generalresearch.models.custom_types import UUIDStr
diff --git a/generalresearch/models/thl/user_quality_event.py b/generalresearch/models/thl/user_quality_event.py
index 5438740..8c2e25f 100644
--- a/generalresearch/models/thl/user_quality_event.py
+++ b/generalresearch/models/thl/user_quality_event.py
@@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, Literal
from pydantic import BaseModel, Field, PositiveInt
-from generalresearch.models import MAX_INT32, Source
+from generalresearch.models.definitions import MAX_INT32, Source
from generalresearch.utils.enum import ReprEnumMeta
if TYPE_CHECKING:
diff --git a/generalresearch/models/thl/user_streak.py b/generalresearch/models/thl/user_streak.py
index 6cd853a..4c09d13 100644
--- a/generalresearch/models/thl/user_streak.py
+++ b/generalresearch/models/thl/user_streak.py
@@ -19,7 +19,7 @@ from pydantic import (
from pydantic.json_schema import SkipJsonSchema
from generalresearch.managers.leaderboard import country_timezone
-from generalresearch.models import MAX_INT32
+from generalresearch.models.definitions import MAX_INT32
if TYPE_CHECKING:
from generalresearch.models.thl.locales import CountryISO
diff --git a/generalresearch/models/thl/wallet/cashout_method.py b/generalresearch/models/thl/wallet/cashout_method.py
index 1db85e8..9383c36 100644
--- a/generalresearch/models/thl/wallet/cashout_method.py
+++ b/generalresearch/models/thl/wallet/cashout_method.py
@@ -19,7 +19,7 @@ from pydantic import (
from generalresearch.models.legacy.api_status import StatusResponse
from generalresearch.models.thl.definitions import PayoutStatus
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
from generalresearch.utils.enum import ReprEnumMeta
if TYPE_CHECKING:
@@ -31,7 +31,7 @@ if TYPE_CHECKING:
)
from generalresearch.models.thl.locales import CountryISO
from generalresearch.models.thl.user import BPUIDStr, User
- from generalresearch.models.thl.wallet import Currency
+ from generalresearch.models.thl.wallet.definitions import Currency
logger = logging.getLogger()
diff --git a/generalresearch/models/thl/wallet/definitions.py b/generalresearch/models/thl/wallet/definitions.py
new file mode 100644
index 0000000..2d1eb8d
--- /dev/null
+++ b/generalresearch/models/thl/wallet/definitions.py
@@ -0,0 +1,87 @@
+from enum import StrEnum
+
+from generalresearch.utils.enum import ReprEnumMeta
+
+
+class PayoutType(StrEnum, metaclass=ReprEnumMeta):
+ """
+ The method in which the requested payout is delivered.
+ """
+
+ # The max size of the db field that holds this value is 14, so please
+ # don't add new values longer than that!
+
+ # User is paid out to their personal PayPal email address
+ PAYPAL = "PAYPAL"
+ # User is paid out via a Tango Gift Card
+ TANGO = "TANGO"
+ # DWOLLA
+ DWOLLA = "DWOLLA"
+ # A payment is made to a bank account using ACH
+ ACH = "ACH"
+ # A payment is made to a bank account using ACH
+ WIRE = "WIRE"
+ # A payment is made in cash and mailed to the user.
+ CASH_IN_MAIL = "CASH_IN_MAIL"
+ # A payment is made as a prize with some monetary value
+ PRIZE = "PRIZE"
+
+ # This is used to designate either AMT_BONUS or AMT_HIT
+ AMT = "AMT"
+ # Amazon Mechanical Turk as a Bonus
+ AMT_BONUS = "AMT_BONUS"
+ # Amazon Mechanical Turk for a HIT
+ AMT_HIT = "AMT_ASSIGNMENT"
+ AMT_ASSIGNMENT = "AMT_ASSIGNMENT"
+
+
+class Currency(StrEnum):
+ # United States Dollar
+ USD = "USD"
+ # Canadian Dollar
+ CAD = "CAD"
+ # British Pound Sterling
+ GBP = "GBP"
+ # Euro
+ EUR = "EUR"
+ # Indian Rupee
+ INR = "INR"
+ # Australian Dollar
+ AUD = "AUD"
+ # Polish Zloty
+ PLN = "PLN"
+ # Swedish Krona
+ SEK = "SEK"
+ # Singapore Dollar
+ SGD = "SGD"
+ # Mexican Peso
+ MXN = "MXN"
+
+
+CURRENCY_FORMATTER = {
+ "USD": lambda x: f"${x / 100:,.2f}",
+ "CAD": lambda x: f"${x / 100:,.2f} CAD",
+ "GBP": lambda x: f"{x / 100:,.2f} £",
+ "EUR": lambda x: f"€{x / 100:,.2f}",
+ "INR": lambda x: f"₹{x / 100:,.2f}",
+ "AUD": lambda x: f"${x / 100:,.2f} AUD",
+ "PLN": lambda x: f"{x / 100:,.2f} zł",
+ "SEK": lambda x: f"{x / 100:,.2f} kr",
+ "SGD": lambda x: f"${x / 100:,.2f} SGD",
+ "MXN": lambda x: f"${x / 100:,.2f} MXN",
+}
+
+# The max value user can redeem in one go in foreign currencies. should be < $250
+# in order to avoid exchange rate issues
+CURRENCY_MAX_VALUE = {
+ "USD": 250,
+ "CAD": 200,
+ "GBP": 100,
+ "EUR": 100,
+ "INR": 10000,
+ "AUD": 200,
+ "PLN": 500,
+ "SEK": 1000,
+ "SGD": 200,
+ "MXN": 4000,
+}
diff --git a/generalresearch/models/thl/wallet/payout.py b/generalresearch/models/thl/wallet/payout.py
index 7301b31..79c50e1 100644
--- a/generalresearch/models/thl/wallet/payout.py
+++ b/generalresearch/models/thl/wallet/payout.py
@@ -16,7 +16,7 @@ from pydantic import (
from generalresearch.currency import USDCent
from generalresearch.models.thl.definitions import PayoutStatus
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
if TYPE_CHECKING:
from generalresearch.models.custom_types import AwareDatetimeISO, UUIDStr
diff --git a/generalresearch/schemas/survey_stats.py b/generalresearch/schemas/survey_stats.py
index b3acf34..dd592d4 100644
--- a/generalresearch/schemas/survey_stats.py
+++ b/generalresearch/schemas/survey_stats.py
@@ -2,7 +2,7 @@ import pandas as pd
from pandera.pandas import Check, Column, DataFrameSchema, Index
from generalresearch.locales import Localelator
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
COUNTRY_ISOS = Localelator().get_all_countries()
kosovo = "xk"
diff --git a/generalresearch/wall_status_codes/__init__.py b/generalresearch/wall_status_codes/__init__.py
index 37f3960..cca1a19 100644
--- a/generalresearch/wall_status_codes/__init__.py
+++ b/generalresearch/wall_status_codes/__init__.py
@@ -1,6 +1,6 @@
from typing import TYPE_CHECKING
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import Status, StatusCode1
from generalresearch.wall_status_codes import (
cint,
diff --git a/test_utils/conftest.py b/test_utils/conftest.py
index f55fe11..397d98f 100644
--- a/test_utils/conftest.py
+++ b/test_utils/conftest.py
@@ -9,6 +9,7 @@ from collections.abc import Callable, Generator
from datetime import UTC, datetime, timedelta
from os.path import join as pjoin
from pathlib import Path
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -17,23 +18,13 @@ from dotenv import load_dotenv
from pydantic import MariaDBDsn, PostgresDsn, TypeAdapter
from pytest import TempPathFactory
-from generalresearch.config import GRLBaseSettings
from generalresearch.currency import USDCent
from generalresearch.models.custom_types import InternalHostname, PostgresDict
-from generalresearch.pg_helper import PostgresConfig
from generalresearch.sql_helper import SqlHelper
-# -- redis notes from jenkins file
-# sh "redis-cli -u ${env.THL_REDIS} FLUSHDB"
-# sh "redis-cli -u ${env.GR_REDIS} FLUSHDB"
-
-# script {
-# env.GR_REDIS_DB = new Random().nextInt(1024).toString()
-# env.GR_REDIS = "redis://${env.REDIS}:6379/${env.GR_REDIS_DB}"
-# echo "Using GR Redis: ${env.GR_REDIS}"
-# if (sh(script: "redis-cli -u ${env.GR_REDIS} SET jenkins_lock 1 NX EX 3600", returnStdout: true).trim() != 'OK')
-# error('Redis already locked... aborting.')
-# }
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.pg_helper import PostgresConfig
@pytest.fixture(scope="session")
diff --git a/test_utils/grliq/conftest.py b/test_utils/grliq/conftest.py
index 891b73c..bb1a167 100644
--- a/test_utils/grliq/conftest.py
+++ b/test_utils/grliq/conftest.py
@@ -2,19 +2,15 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
-from typing import Any
+from typing import TYPE_CHECKING, Any
from uuid import uuid4
import pytest
from pydantic import PostgresDsn
-from generalresearch.config import GRLBaseSettings
from generalresearch.grliq.managers.forensic_data import (
GrlIqDataManager,
)
-from generalresearch.grliq.managers.forensic_events import (
- GrlIqEventManager,
-)
from generalresearch.grliq.managers.forensic_results import (
GrlIqCategoryResultsReader,
)
@@ -25,6 +21,12 @@ from generalresearch.grliq.models.forensic_result import (
)
from generalresearch.pg_helper import PostgresConfig
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.grliq.managers.forensic_events import (
+ GrlIqEventManager,
+ )
+
# === Miscellaneous ===
diff --git a/test_utils/incite/collections/conftest.py b/test_utils/incite/collections/conftest.py
index 631bb7b..f490e14 100644
--- a/test_utils/incite/collections/conftest.py
+++ b/test_utils/incite/collections/conftest.py
@@ -6,12 +6,11 @@ from typing import TYPE_CHECKING
import pytest
-from generalresearch.pg_helper import PostgresConfig
from test_utils.conftest import clear_directory
if TYPE_CHECKING:
from generalresearch.incite.base import DFCollectionType, GRLDatasets
- from generalresearch.incite.collections import DFCollection
+ from generalresearch.incite.collections.base import DFCollection
from generalresearch.incite.collections.thl_web import (
AuditLogDFCollection,
LedgerDFCollection,
@@ -20,6 +19,7 @@ if TYPE_CHECKING:
UserDFCollection,
WallDFCollection,
)
+ from generalresearch.pg_helper import PostgresConfig
@pytest.fixture
diff --git a/test_utils/incite/mergers/conftest.py b/test_utils/incite/mergers/conftest.py
index 1f88804..4eb3f2d 100644
--- a/test_utils/incite/mergers/conftest.py
+++ b/test_utils/incite/mergers/conftest.py
@@ -2,37 +2,40 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import datetime, timedelta
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.mergers.base import MergeType
-from generalresearch.incite.mergers.foundations.enriched_session import (
- EnrichedSessionMerge,
-)
-from generalresearch.incite.mergers.foundations.enriched_task_adjust import (
- EnrichedTaskAdjustMerge,
-)
-from generalresearch.incite.mergers.foundations.enriched_wall import (
- EnrichedWallMerge,
-)
-from generalresearch.incite.mergers.foundations.user_id_product import (
- UserIdProductMerge,
-)
-from generalresearch.incite.mergers.pop_ledger import (
- PopLedgerMerge,
- PopLedgerMergeItem,
-)
-from generalresearch.incite.mergers.ym_survey_wall import (
- YMSurveyWallMerge,
- YMSurveyWallMergeCollectionItem,
-)
-from generalresearch.incite.mergers.ym_wall_summary import (
- YMWallSummaryMerge,
- YMWallSummaryMergeItem,
-)
from test_utils.conftest import clear_directory
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.mergers.base import MergeType
+ from generalresearch.incite.mergers.foundations.enriched_session import (
+ EnrichedSessionMerge,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_task_adjust import (
+ EnrichedTaskAdjustMerge,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_wall import (
+ EnrichedWallMerge,
+ )
+ from generalresearch.incite.mergers.foundations.user_id_product import (
+ UserIdProductMerge,
+ )
+ from generalresearch.incite.mergers.pop_ledger import (
+ PopLedgerMerge,
+ PopLedgerMergeItem,
+ )
+ from generalresearch.incite.mergers.ym_survey_wall import (
+ YMSurveyWallMerge,
+ YMSurveyWallMergeCollectionItem,
+ )
+ from generalresearch.incite.mergers.ym_wall_summary import (
+ YMWallSummaryMerge,
+ YMWallSummaryMergeItem,
+ )
+
# --------------------------
# Merges
# --------------------------
diff --git a/test_utils/managers/cashout_methods.py b/test_utils/managers/cashout_methods.py
index 238cdda..adf82f4 100644
--- a/test_utils/managers/cashout_methods.py
+++ b/test_utils/managers/cashout_methods.py
@@ -6,11 +6,11 @@ from uuid import uuid4
import pytest
-from generalresearch.models.thl.wallet import Currency, PayoutType
from generalresearch.models.thl.wallet.cashout_method import (
CashoutMethod,
TangoCashoutMethodData,
)
+from generalresearch.models.thl.wallet.definitions import Currency, PayoutType
@pytest.fixture(scope="session")
diff --git a/test_utils/managers/conftest.py b/test_utils/managers/conftest.py
index 9c6a1a7..ed771c7 100644
--- a/test_utils/managers/conftest.py
+++ b/test_utils/managers/conftest.py
@@ -1,41 +1,44 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.gr.business import (
- BusinessAddressManager,
- BusinessBankAccountManager,
- BusinessManager,
-)
-from generalresearch.managers.gr.team import (
- MembershipManager,
- TeamManager,
-)
-from generalresearch.managers.spectrum.survey import SpectrumSurveyManager
-from generalresearch.managers.thl.buyer import BuyerManager
from generalresearch.managers.thl.cashout_method import (
CashoutMethodManager,
)
-from generalresearch.managers.thl.ipinfo import (
- GeoIpInfoManager,
- IPGeonameManager,
- IPInformationManager,
-)
from generalresearch.managers.thl.user_streak import (
UserStreakManager,
)
-from generalresearch.managers.thl.userhealth import (
- AuditLogManager,
- IPRecordManager,
- UserIpHistoryManager,
-)
-from generalresearch.models import Source
-from generalresearch.models.thl.wallet.cashout_method import CashoutMethod
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
-from generalresearch.sql_helper import SqlHelper
+from generalresearch.models.definitions import Source
+
+if TYPE_CHECKING:
+ from generalresearch.managers.gr.business import (
+ BusinessAddressManager,
+ BusinessBankAccountManager,
+ BusinessManager,
+ )
+ from generalresearch.managers.gr.team import (
+ MembershipManager,
+ TeamManager,
+ )
+ from generalresearch.managers.spectrum.survey import SpectrumSurveyManager
+ from generalresearch.managers.thl.buyer import BuyerManager
+ from generalresearch.managers.thl.ipinfo import (
+ GeoIpInfoManager,
+ IPGeonameManager,
+ IPInformationManager,
+ )
+ from generalresearch.managers.thl.userhealth import (
+ AuditLogManager,
+ IPRecordManager,
+ UserIpHistoryManager,
+ )
+ from generalresearch.models.thl.wallet.cashout_method import CashoutMethod
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
+ from generalresearch.sql_helper import SqlHelper
# === THL ===
diff --git a/test_utils/managers/contest/conftest.py b/test_utils/managers/contest/conftest.py
index a9375f6..b29cf18 100644
--- a/test_utils/managers/contest/conftest.py
+++ b/test_utils/managers/contest/conftest.py
@@ -1,10 +1,14 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import pytest
from generalresearch.managers.base import Permission
from generalresearch.managers.thl.contest_manager import ContestManager
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.pg_helper import PostgresConfig
@pytest.fixture(scope="session")
diff --git a/test_utils/managers/gr/conftest.py b/test_utils/managers/gr/conftest.py
index 40bd7b3..5392c69 100644
--- a/test_utils/managers/gr/conftest.py
+++ b/test_utils/managers/gr/conftest.py
@@ -3,6 +3,7 @@ from __future__ import annotations
import subprocess
from collections.abc import Callable, Generator
from random import randint
+from typing import TYPE_CHECKING
import pytest
import redis
@@ -10,8 +11,6 @@ import redis.asyncio as redis_async
from pydantic import PostgresDsn
from redis import Redis
-from generalresearch.config import GRLBaseSettings
-from generalresearch.managers.gr.authentication import GRTokenManager, GRUserManager
from generalresearch.managers.gr.business import (
BusinessAddressManager,
BusinessBankAccountManager,
@@ -20,6 +19,10 @@ from generalresearch.managers.gr.business import (
from generalresearch.pg_helper import PostgresConfig
from generalresearch.redis_helper import RedisConfig
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.managers.gr.authentication import GRTokenManager, GRUserManager
+
# === Msc ===
@pytest.fixture(scope="session")
diff --git a/test_utils/managers/ledger/conftest.py b/test_utils/managers/ledger/conftest.py
index ce8348e..c60ee1b 100644
--- a/test_utils/managers/ledger/conftest.py
+++ b/test_utils/managers/ledger/conftest.py
@@ -1,18 +1,24 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import pytest
from generalresearch.managers.base import Permission
from generalresearch.managers.thl.ledger_manager.ledger import (
- LedgerAccountManager,
LedgerManager,
- LedgerTransactionManager,
)
from generalresearch.managers.thl.ledger_manager.thl_ledger import (
ThlLedgerManager,
)
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.ledger import (
+ LedgerAccountManager,
+ LedgerTransactionManager,
+ )
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
# --- Ledger ---
diff --git a/test_utils/managers/thl/conftest.py b/test_utils/managers/thl/conftest.py
index d40b7d2..af3fd23 100644
--- a/test_utils/managers/thl/conftest.py
+++ b/test_utils/managers/thl/conftest.py
@@ -1,44 +1,47 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
import pytest
from pydantic import PostgresDsn
-from generalresearch.config import GRLBaseSettings
from generalresearch.managers.base import Permission
-from generalresearch.managers.thl.buyer import BuyerManager
-from generalresearch.managers.thl.category import CategoryManager
-from generalresearch.managers.thl.payout import (
- BrokerageProductPayoutEventManager,
- BusinessPayoutEventManager,
- PayoutEventManager,
- UserPayoutEventManager,
-)
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.task_adjustment import (
- TaskAdjustmentManager,
-)
from generalresearch.managers.thl.user_manager.mysql_user_manager import (
MysqlUserManager,
)
from generalresearch.managers.thl.user_manager.redis_user_manager import (
RedisUserManager,
)
-from generalresearch.managers.thl.user_manager.user_manager import (
- UserManager,
-)
-from generalresearch.managers.thl.user_manager.user_metadata_manager import (
- UserMetadataManager,
-)
-from generalresearch.managers.thl.wall import (
- WallCacheManager,
- WallManager,
-)
from generalresearch.pg_helper import PostgresConfig
from generalresearch.redis_helper import RedisConfig
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.managers.thl.buyer import BuyerManager
+ from generalresearch.managers.thl.category import CategoryManager
+ from generalresearch.managers.thl.payout import (
+ BrokerageProductPayoutEventManager,
+ BusinessPayoutEventManager,
+ PayoutEventManager,
+ UserPayoutEventManager,
+ )
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.task_adjustment import (
+ TaskAdjustmentManager,
+ )
+ from generalresearch.managers.thl.user_manager.user_manager import (
+ UserManager,
+ )
+ from generalresearch.managers.thl.user_manager.user_metadata_manager import (
+ UserMetadataManager,
+ )
+ from generalresearch.managers.thl.wall import (
+ WallCacheManager,
+ WallManager,
+ )
+
@pytest.fixture(scope="session")
def thl_web_rr(django_db_factory: Callable[..., PostgresDsn]) -> PostgresConfig:
diff --git a/test_utils/managers/upk/conftest.py b/test_utils/managers/upk/conftest.py
index 7eabee1..f581278 100644
--- a/test_utils/managers/upk/conftest.py
+++ b/test_utils/managers/upk/conftest.py
@@ -1,4 +1,5 @@
from collections.abc import Callable, Generator
+from typing import TYPE_CHECKING
import pytest
@@ -12,9 +13,11 @@ from generalresearch.managers.thl.profiling.uqa import UQAManager
from generalresearch.managers.thl.profiling.user_upk import (
UserUpkManager,
)
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
@pytest.fixture(scope="session")
diff --git a/test_utils/models/conftest.py b/test_utils/models/conftest.py
index 3a10ea3..089f2e6 100644
--- a/test_utils/models/conftest.py
+++ b/test_utils/models/conftest.py
@@ -12,13 +12,12 @@ import pytest
from pydantic import AwareDatetime, PositiveInt
from pytest import FixtureRequest as Request
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
WALL_ALLOWED_STATUS_STATUS_CODE,
Status,
)
from generalresearch.models.thl.survey.model import Buyer, Survey
-from generalresearch.pg_helper import PostgresConfig
if TYPE_CHECKING:
from generalresearch.currency import USDCent
@@ -53,6 +52,7 @@ if TYPE_CHECKING:
from generalresearch.models.thl.user import User
from generalresearch.models.thl.user_iphistory import IPRecord
from generalresearch.models.thl.userhealth import AuditLog, AuditLogLevel
+ from generalresearch.pg_helper import PostgresConfig
# === THL ===
diff --git a/test_utils/models/contest/conftest.py b/test_utils/models/contest/conftest.py
index 84930b8..91425dc 100644
--- a/test_utils/models/contest/conftest.py
+++ b/test_utils/models/contest/conftest.py
@@ -3,36 +3,41 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pytest import FixtureRequest as Request
from generalresearch.currency import USDCent
-from generalresearch.managers.thl.contest_manager import ContestManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
from generalresearch.models.thl.contest import (
ContestEndCondition,
ContestPrize,
)
-from generalresearch.models.thl.contest.contest import Contest
from generalresearch.models.thl.contest.definitions import (
ContestPrizeKind,
ContestType,
)
-from generalresearch.models.thl.contest.leaderboard import (
- LeaderboardContestCreate,
-)
-from generalresearch.models.thl.contest.milestone import (
- MilestoneContestCreate,
-)
from generalresearch.models.thl.contest.raffle import (
ContestEntryType,
- RaffleContest,
RaffleContestCreate,
)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.contest_manager import ContestManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.contest.contest import Contest
+ from generalresearch.models.thl.contest.leaderboard import (
+ LeaderboardContestCreate,
+ )
+ from generalresearch.models.thl.contest.milestone import (
+ MilestoneContestCreate,
+ )
+ from generalresearch.models.thl.contest.raffle import (
+ RaffleContest,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
# === Miscellaneous ===
diff --git a/test_utils/models/gr/conftest.py b/test_utils/models/gr/conftest.py
index b623255..6c1877a 100644
--- a/test_utils/models/gr/conftest.py
+++ b/test_utils/models/gr/conftest.py
@@ -2,30 +2,32 @@ from __future__ import annotations
from collections.abc import Callable
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pydantic import PositiveInt
from pydantic_extra_types.phone_numbers import PhoneNumber
-from generalresearch.managers.gr.authentication import GRTokenManager, GRUserManager
-from generalresearch.managers.gr.business import (
- BusinessAddressManager,
- BusinessBankAccountManager,
- BusinessManager,
-)
-from generalresearch.managers.gr.team import MembershipManager, TeamManager
-from generalresearch.models.custom_types import UUIDStr
-from generalresearch.models.gr.authentication import GRToken, GRUser
-from generalresearch.models.gr.business import (
- Business,
- BusinessAddress,
- BusinessBankAccount,
- TransferMethod,
-)
-from generalresearch.models.gr.team import Membership, Team
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+if TYPE_CHECKING:
+ from generalresearch.managers.gr.authentication import GRTokenManager, GRUserManager
+ from generalresearch.managers.gr.business import (
+ BusinessAddressManager,
+ BusinessBankAccountManager,
+ BusinessManager,
+ )
+ from generalresearch.managers.gr.team import MembershipManager, TeamManager
+ from generalresearch.models.custom_types import UUIDStr
+ from generalresearch.models.gr.authentication import GRToken, GRUser
+ from generalresearch.models.gr.business import (
+ Business,
+ BusinessAddress,
+ BusinessBankAccount,
+ TransferMethod,
+ )
+ from generalresearch.models.gr.team import Membership, Team
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
# --- Static ---
diff --git a/test_utils/models/ledger/conftest.py b/test_utils/models/ledger/conftest.py
index 1c1027c..8437c7f 100644
--- a/test_utils/models/ledger/conftest.py
+++ b/test_utils/models/ledger/conftest.py
@@ -11,7 +11,6 @@ import pytest
from pytest import FixtureRequest as Request
from generalresearch.currency import USDCent
-from generalresearch.managers.base import PostgresManager
from test_utils.models.conftest import (
payout_config,
product_amt_true,
@@ -24,6 +23,9 @@ from test_utils.models.conftest import (
wall_factory,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.base import PostgresManager
+
_ = (
user_factory,
product_user_wallet_no,
diff --git a/test_utils/models/network/conftest.py b/test_utils/models/network/conftest.py
index 6ba37a3..4ff59ee 100644
--- a/test_utils/models/network/conftest.py
+++ b/test_utils/models/network/conftest.py
@@ -1,5 +1,6 @@
import os
from datetime import UTC, datetime, timedelta
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -23,7 +24,9 @@ from generalresearch.models.network.tool_run_command import (
RDNSRunCommand,
RDNSRunCommandOptions,
)
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.pg_helper import PostgresConfig
@pytest.fixture(scope="session")
diff --git a/test_utils/models/thl/conftest.py b/test_utils/models/thl/conftest.py
index fc57c73..3c77e27 100644
--- a/test_utils/models/thl/conftest.py
+++ b/test_utils/models/thl/conftest.py
@@ -5,7 +5,7 @@ from datetime import UTC, datetime
from decimal import ROUND_DOWN, Decimal
from random import choice as rand_choice
from random import randint, random
-from typing import Any
+from typing import TYPE_CHECKING, Any
from uuid import uuid4
import faker
@@ -13,47 +13,53 @@ import pytest
from grip_client.enums import AccessType
from pydantic import PositiveInt
-from generalresearch.managers.thl.ipinfo import IPGeonameManager, IPInformationManager
-from generalresearch.managers.thl.payout import UserPayoutEventManager
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.user_manager.user_manager import UserManager
-from generalresearch.managers.thl.userhealth import AuditLogManager, IPRecordManager
-from generalresearch.managers.thl.wall import WallManager
-from generalresearch.models import DeviceType
-from generalresearch.models.custom_types import (
- AwareDatetimeISO,
- IPvAnyAddressStr,
- UUIDStr,
-)
-from generalresearch.models.legacy.bucket import Bucket
-from generalresearch.models.thl.definitions import (
- PayoutStatus,
-)
-from generalresearch.models.thl.ipinfo import IPGeoname, IPInformation
-from generalresearch.models.thl.payout import UserPayoutEvent
-from generalresearch.models.thl.product import (
- PayoutConfig,
- Product,
- ProfilingConfig,
- SessionConfig,
- SourcesConfig,
- SupplyConfig,
- UserCreateConfig,
- UserHealthConfig,
- UserWalletConfig,
-)
+from generalresearch.models.thl.definitions import PayoutStatus
from generalresearch.models.thl.session import (
- Session,
Source,
Status,
- Wall,
)
from generalresearch.models.thl.user import User
-from generalresearch.models.thl.user_iphistory import IPRecord
-from generalresearch.models.thl.userhealth import AuditLog, AuditLogLevel
-from generalresearch.models.thl.wallet import PayoutType
-from generalresearch.models.thl.wallet.cashout_method import CashMailOrderData
+from generalresearch.models.thl.userhealth import AuditLogLevel
+from generalresearch.models.thl.wallet.definitions import PayoutType
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ipinfo import (
+ IPGeonameManager,
+ IPInformationManager,
+ )
+ from generalresearch.managers.thl.payout import UserPayoutEventManager
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.user_manager.user_manager import UserManager
+ from generalresearch.managers.thl.userhealth import AuditLogManager, IPRecordManager
+ from generalresearch.managers.thl.wall import WallManager
+ from generalresearch.models.custom_types import (
+ AwareDatetimeISO,
+ IPvAnyAddressStr,
+ UUIDStr,
+ )
+ from generalresearch.models.definitions import DeviceType
+ from generalresearch.models.legacy.bucket import Bucket
+ from generalresearch.models.thl.ipinfo import IPGeoname, IPInformation
+ from generalresearch.models.thl.payout import UserPayoutEvent
+ from generalresearch.models.thl.product import (
+ PayoutConfig,
+ Product,
+ ProfilingConfig,
+ SessionConfig,
+ SourcesConfig,
+ SupplyConfig,
+ UserCreateConfig,
+ UserHealthConfig,
+ UserWalletConfig,
+ )
+ from generalresearch.models.thl.session import (
+ Session,
+ Wall,
+ )
+ from generalresearch.models.thl.user_iphistory import IPRecord
+ from generalresearch.models.thl.userhealth import AuditLog
+ from generalresearch.models.thl.wallet.cashout_method import CashMailOrderData
fake = faker.Faker()
diff --git a/test_utils/models/upk/conftest.py b/test_utils/models/upk/conftest.py
index ef77dd6..59266b2 100644
--- a/test_utils/models/upk/conftest.py
+++ b/test_utils/models/upk/conftest.py
@@ -9,10 +9,9 @@ from uuid import UUID
import pandas as pd
import pytest
-from generalresearch.pg_helper import PostgresConfig
-
if TYPE_CHECKING:
from generalresearch.managers.thl.category import CategoryManager
+ from generalresearch.pg_helper import PostgresConfig
def insert_data_from_csv(
diff --git a/test_utils/spectrum/conftest.py b/test_utils/spectrum/conftest.py
index a8ce9d9..cc91cff 100644
--- a/test_utils/spectrum/conftest.py
+++ b/test_utils/spectrum/conftest.py
@@ -3,16 +3,15 @@ from __future__ import annotations
import time
from datetime import UTC, datetime
from decimal import Decimal
-from typing import Any
+from typing import TYPE_CHECKING, Any
import pytest
-from generalresearch.config import GRLBaseSettings
from generalresearch.managers.spectrum.survey import (
SpectrumCriteriaManager,
SpectrumSurveyManager,
)
-from generalresearch.models import (
+from generalresearch.models.definitions import (
LogicalOperator,
)
from generalresearch.models.spectrum.survey import (
@@ -22,6 +21,9 @@ from generalresearch.models.spectrum.survey import (
from generalresearch.models.thl.survey.condition import ConditionValueType
from generalresearch.sql_helper import SqlHelper
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+
@pytest.fixture(scope="session")
def spectrum_rw(settings: GRLBaseSettings) -> SqlHelper:
diff --git a/tests/incite/collections/test_df_collection_base.py b/tests/incite/collections/test_df_collection_base.py
index c236700..e20b44b 100644
--- a/tests/incite/collections/test_df_collection_base.py
+++ b/tests/incite/collections/test_df_collection_base.py
@@ -9,10 +9,10 @@ from generalresearch.incite.collections import (
DFCollection,
DFCollectionType,
)
-from generalresearch.pg_helper import PostgresConfig
if TYPE_CHECKING:
from generalresearch.incite.base import GRLDatasets
+ from generalresearch.pg_helper import PostgresConfig
df_collection_types = [e for e in DFCollectionType if e is not DFCollectionType.TEST]
diff --git a/tests/incite/collections/test_df_collection_item_base.py b/tests/incite/collections/test_df_collection_item_base.py
index e0171c2..fd70bf0 100644
--- a/tests/incite/collections/test_df_collection_item_base.py
+++ b/tests/incite/collections/test_df_collection_item_base.py
@@ -5,15 +5,16 @@ from typing import TYPE_CHECKING
import pytest
-from generalresearch.incite.collections import (
+from generalresearch.incite.collections.base import (
DFCollection,
DFCollectionItem,
DFCollectionType,
)
-from generalresearch.pg_helper import PostgresConfig
if TYPE_CHECKING:
from generalresearch.incite.base import GRLDatasets
+ from generalresearch.pg_helper import PostgresConfig
+
df_collection_types = [e for e in DFCollectionType if e is not DFCollectionType.TEST]
diff --git a/tests/incite/collections/test_df_collection_item_thl_web.py b/tests/incite/collections/test_df_collection_item_thl_web.py
index 5f9a3f6..061c576 100644
--- a/tests/incite/collections/test_df_collection_item_thl_web.py
+++ b/tests/incite/collections/test_df_collection_item_thl_web.py
@@ -5,6 +5,7 @@ from datetime import UTC, datetime, timedelta
from itertools import product as iter_product
from os.path import join as pjoin
from pathlib import Path, PurePath
+from typing import TYPE_CHECKING
from uuid import uuid4
import dask.dataframe as dd
@@ -21,19 +22,24 @@ from faker import Faker
from pandera.pandas import DataFrameSchema
from pydantic import FilePath
-from generalresearch.incite.base import CollectionItemBase, GRLDatasets
-from generalresearch.incite.collections import (
- DFCollection,
- DFCollectionItem,
+from generalresearch.incite.base import CollectionItemBase
+from generalresearch.incite.collections.base import (
DFCollectionType,
)
from generalresearch.incite.schemas import ARCHIVE_AFTER
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
from generalresearch.pg_helper import PostgresConfig
from generalresearch.sql_helper import PostgresDsn
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.collections.base import (
+ DFCollection,
+ DFCollectionItem,
+ )
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+
fake = Faker()
df_collections = [
diff --git a/tests/incite/collections/test_df_collection_thl_marketplaces.py b/tests/incite/collections/test_df_collection_thl_marketplaces.py
index 6a7e5c9..6ad0cb4 100644
--- a/tests/incite/collections/test_df_collection_thl_marketplaces.py
+++ b/tests/incite/collections/test_df_collection_thl_marketplaces.py
@@ -1,18 +1,21 @@
from datetime import UTC, datetime
from itertools import product
+from typing import TYPE_CHECKING
import pytest
from pandera.pandas import Column, DataFrameSchema, Index
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.collections import DFCollection, DFCollectionType
+from generalresearch.incite.collections.base import DFCollection, DFCollectionType
from generalresearch.incite.collections.thl_marketplaces import (
InnovateSurveyHistoryCollection,
MorningSurveyTimeseriesCollection,
SagoSurveyHistoryCollection,
SpectrumSurveyTimeseriesCollection,
)
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.pg_helper import PostgresConfig
def combo_object():
diff --git a/tests/incite/collections/test_df_collection_thl_web.py b/tests/incite/collections/test_df_collection_thl_web.py
index 6d509bc..20d7187 100644
--- a/tests/incite/collections/test_df_collection_thl_web.py
+++ b/tests/incite/collections/test_df_collection_thl_web.py
@@ -9,7 +9,7 @@ import pandas as pd
import pytest
from pandera.pandas import DataFrameSchema
-from generalresearch.incite.collections import (
+from generalresearch.incite.collections.base import (
DFCollection,
DFCollectionType,
)
diff --git a/tests/incite/mergers/foundations/test_enriched_session.py b/tests/incite/mergers/foundations/test_enriched_session.py
index 2a161e4..71b2442 100644
--- a/tests/incite/mergers/foundations/test_enriched_session.py
+++ b/tests/incite/mergers/foundations/test_enriched_session.py
@@ -4,29 +4,32 @@ from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
from itertools import product
+from typing import TYPE_CHECKING
import dask.dataframe as dd
import pandas as pd
import pytest
from dask.distributed import Client as DaskClient
-from generalresearch.incite.collections.thl_web import (
- SessionDFCollection,
- WallDFCollection,
-)
-from generalresearch.incite.mergers.foundations.enriched_session import (
- EnrichedSessionMerge,
-)
from generalresearch.incite.schemas.admin_responses import (
AdminPOPSessionSchema,
)
-from generalresearch.models.admin.request import (
- ReportRequest,
-)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_session import (
+ EnrichedSessionMerge,
+ )
+ from generalresearch.models.admin.request import (
+ ReportRequest,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
@pytest.mark.parametrize(
diff --git a/tests/incite/mergers/foundations/test_enriched_task_adjust.py b/tests/incite/mergers/foundations/test_enriched_task_adjust.py
index 0606b6f..877d22f 100644
--- a/tests/incite/mergers/foundations/test_enriched_task_adjust.py
+++ b/tests/incite/mergers/foundations/test_enriched_task_adjust.py
@@ -3,26 +3,28 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import timedelta
from itertools import product as iter_product
+from typing import TYPE_CHECKING
import dask.dataframe as dd
import pandas as pd
import pytest
from dask.distributed import Client as DaskClient
-from generalresearch.incite.collections.thl_web import (
- SessionDFCollection,
- TaskAdjustmentDFCollection,
- WallDFCollection,
-)
-from generalresearch.incite.mergers.foundations.enriched_task_adjust import (
- EnrichedTaskAdjustMerge,
-)
-from generalresearch.incite.mergers.foundations.enriched_wall import (
- EnrichedWallMerge,
-)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ TaskAdjustmentDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_task_adjust import (
+ EnrichedTaskAdjustMerge,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_wall import (
+ EnrichedWallMerge,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
@pytest.mark.parametrize(
diff --git a/tests/incite/mergers/foundations/test_enriched_wall.py b/tests/incite/mergers/foundations/test_enriched_wall.py
index 0cb8f60..2b9afb8 100644
--- a/tests/incite/mergers/foundations/test_enriched_wall.py
+++ b/tests/incite/mergers/foundations/test_enriched_wall.py
@@ -2,27 +2,32 @@ from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
from itertools import product as iter_product
+from typing import TYPE_CHECKING
import dask.dataframe as dd
import pandas as pd
import pytest
from dask.distributed import Client as DaskClient
-from generalresearch.incite.collections.thl_web import (
- SessionDFCollection,
- WallDFCollection,
-)
-
-# noinspection PyUnresolvedReferences
from generalresearch.incite.mergers.foundations.enriched_wall import (
- EnrichedWallMerge,
EnrichedWallMergeItem,
)
-from generalresearch.models.admin.request import ReportRequest
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+
+ # noinspection PyUnresolvedReferences
+ from generalresearch.incite.mergers.foundations.enriched_wall import (
+ EnrichedWallMerge,
+ )
+ from generalresearch.models.admin.request import ReportRequest
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
@pytest.mark.parametrize(
diff --git a/tests/incite/mergers/foundations/test_user_id_product.py b/tests/incite/mergers/foundations/test_user_id_product.py
index 7367056..8c4b2f7 100644
--- a/tests/incite/mergers/foundations/test_user_id_product.py
+++ b/tests/incite/mergers/foundations/test_user_id_product.py
@@ -2,17 +2,22 @@ from __future__ import annotations
from datetime import UTC, datetime, timedelta
from itertools import product
+from typing import TYPE_CHECKING
import pandas as pd
import pytest
from dask.distributed import Client as DaskClient
-# noinspection PyUnresolvedReferences
from generalresearch.incite.mergers.foundations.user_id_product import (
- UserIdProductMerge,
UserIdProductMergeItem,
)
+if TYPE_CHECKING:
+ # noinspection PyUnresolvedReferences
+ from generalresearch.incite.mergers.foundations.user_id_product import (
+ UserIdProductMerge,
+ )
+
@pytest.mark.parametrize(
argnames="offset, duration, start",
diff --git a/tests/incite/mergers/test_merge_collection.py b/tests/incite/mergers/test_merge_collection.py
index cf8315f..3f478bd 100644
--- a/tests/incite/mergers/test_merge_collection.py
+++ b/tests/incite/mergers/test_merge_collection.py
@@ -2,17 +2,20 @@ from __future__ import annotations
from datetime import UTC, datetime, timedelta
from itertools import product
+from typing import TYPE_CHECKING
import pandas as pd
import pytest
from pandera.pandas import DataFrameSchema
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.mergers import (
+from generalresearch.incite.mergers.base import (
MergeCollection,
MergeType,
)
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+
merge_types = [e for e in MergeType if e != MergeType.TEST]
diff --git a/tests/incite/mergers/test_merge_collection_item.py b/tests/incite/mergers/test_merge_collection_item.py
index 5ca2f6b..baf1bc4 100644
--- a/tests/incite/mergers/test_merge_collection_item.py
+++ b/tests/incite/mergers/test_merge_collection_item.py
@@ -3,14 +3,17 @@ from __future__ import annotations
from datetime import timedelta
from itertools import product
from pathlib import PurePath
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.incite.mergers import (
- MergeCollection,
- MergeCollectionItem,
- MergeType,
-)
+from generalresearch.incite.mergers.base import MergeType
+
+if TYPE_CHECKING:
+ from generalresearch.incite.mergers.base import (
+ MergeCollection,
+ MergeCollectionItem,
+ )
@pytest.mark.parametrize(
diff --git a/tests/incite/mergers/test_pop_ledger.py b/tests/incite/mergers/test_pop_ledger.py
index 2146344..9ec188b 100644
--- a/tests/incite/mergers/test_pop_ledger.py
+++ b/tests/incite/mergers/test_pop_ledger.py
@@ -3,23 +3,26 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from itertools import product as iter_product
+from typing import TYPE_CHECKING
import pandas as pd
import pytest
from dask.distributed import Client as DaskClient
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.collections.thl_web import (
- LedgerDFCollection,
- SessionDFCollection,
-)
-from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
from generalresearch.incite.schemas.mergers.pop_ledger import (
numerical_col_names,
)
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.collections.thl_web import (
+ LedgerDFCollection,
+ SessionDFCollection,
+ )
+ from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
@pytest.mark.parametrize(
diff --git a/tests/incite/mergers/test_ym_survey_merge.py b/tests/incite/mergers/test_ym_survey_merge.py
index 8a4897b..d83a98c 100644
--- a/tests/incite/mergers/test_ym_survey_merge.py
+++ b/tests/incite/mergers/test_ym_survey_merge.py
@@ -3,22 +3,24 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from itertools import product
+from typing import TYPE_CHECKING
import pandas as pd
import pytest
from dask.distributed import Client as DaskClient
-from generalresearch.incite.collections.thl_web import (
- SessionDFCollection,
- WallDFCollection,
-)
-from generalresearch.incite.mergers.foundations.enriched_session import (
- EnrichedSessionMerge,
-)
-from generalresearch.incite.mergers.ym_survey_wall import YMSurveyWallMerge
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_session import (
+ EnrichedSessionMerge,
+ )
+ from generalresearch.incite.mergers.ym_survey_wall import YMSurveyWallMerge
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
# noinspection PyUnresolvedReferences
diff --git a/tests/incite/test_collection_base.py b/tests/incite/test_collection_base.py
index 577eda9..1a664a2 100644
--- a/tests/incite/test_collection_base.py
+++ b/tests/incite/test_collection_base.py
@@ -4,6 +4,7 @@ from datetime import UTC, datetime, timedelta, timezone
from os.path import exists as pexists
from os.path import join as pjoin
from pathlib import Path
+from typing import TYPE_CHECKING
from uuid import uuid4
import numpy as np
@@ -11,7 +12,10 @@ import pandas as pd
import pytest
from _pytest._code.code import ExceptionInfo
-from generalresearch.incite.base import CollectionBase, GRLDatasets
+from generalresearch.incite.base import CollectionBase
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
AGO_15min = (datetime.now(tz=UTC) - timedelta(minutes=15)).replace(microsecond=0)
AGO_1HR = (datetime.now(tz=UTC) - timedelta(hours=1)).replace(microsecond=0)
diff --git a/tests/incite/test_collection_base_item.py b/tests/incite/test_collection_base_item.py
index e09f54a..b9f1c26 100644
--- a/tests/incite/test_collection_base_item.py
+++ b/tests/incite/test_collection_base_item.py
@@ -3,6 +3,7 @@ from __future__ import annotations
from datetime import UTC, datetime
from os.path import join as pjoin
from pathlib import Path
+from typing import TYPE_CHECKING
from uuid import uuid4
import dask.dataframe as dd
@@ -10,7 +11,10 @@ import pandas as pd
import pytest
from pydantic import ValidationError
-from generalresearch.incite.base import CollectionItemBase, GRLDatasets
+from generalresearch.incite.base import CollectionItemBase
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
class TestCollectionItemBase:
diff --git a/tests/managers/gr/test_business.py b/tests/managers/gr/test_business.py
index ed141b1..1a5d4fa 100644
--- a/tests/managers/gr/test_business.py
+++ b/tests/managers/gr/test_business.py
@@ -1,21 +1,24 @@
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.gr.business import (
- BusinessAddressManager,
- BusinessBankAccountManager,
- BusinessManager,
-)
-from generalresearch.managers.gr.team import MembershipManager, TeamManager
-from generalresearch.models.gr.authentication import GRUser
from generalresearch.models.gr.business import (
Business,
BusinessAddress,
BusinessBankAccount,
TransferMethod,
)
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.gr.business import (
+ BusinessAddressManager,
+ BusinessBankAccountManager,
+ BusinessManager,
+ )
+ from generalresearch.managers.gr.team import MembershipManager, TeamManager
+ from generalresearch.models.gr.authentication import GRUser
+ from generalresearch.pg_helper import PostgresConfig
class TestBusinessBankAccountManager:
diff --git a/tests/managers/gr/test_team.py b/tests/managers/gr/test_team.py
index ae3e1bb..17e0470 100644
--- a/tests/managers/gr/test_team.py
+++ b/tests/managers/gr/test_team.py
@@ -1,15 +1,18 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
-from generalresearch.managers.gr.authentication import GRUserManager
-from generalresearch.managers.gr.team import MembershipManager, TeamManager
-from generalresearch.models.gr.authentication import GRUser
from generalresearch.models.gr.team import Membership, Team
-from generalresearch.models.thl.product import Product
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.gr.authentication import GRUserManager
+ from generalresearch.managers.gr.team import MembershipManager, TeamManager
+ from generalresearch.models.gr.authentication import GRUser
+ from generalresearch.models.thl.product import Product
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
class TestMembershipManager:
diff --git a/tests/managers/leaderboard.py b/tests/managers/leaderboard.py
index d97714d..197477b 100644
--- a/tests/managers/leaderboard.py
+++ b/tests/managers/leaderboard.py
@@ -6,6 +6,7 @@ import zoneinfo
from collections.abc import Callable
from datetime import UTC, datetime
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -26,7 +27,9 @@ from generalresearch.models.thl.product import (
)
from generalresearch.models.thl.session import Session
from generalresearch.models.thl.user import User
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.redis_helper import RedisConfig
# random uuid for leaderboard tests
product_id = uuid4().hex
diff --git a/tests/managers/network/test_label.py b/tests/managers/network/test_label.py
index 71efa95..abdd28f 100644
--- a/tests/managers/network/test_label.py
+++ b/tests/managers/network/test_label.py
@@ -1,11 +1,12 @@
import ipaddress
+from datetime import datetime
+from typing import TYPE_CHECKING
import faker
import pytest
from psycopg.errors import UniqueViolation
from pydantic import ValidationError
-from generalresearch.managers.network.label import IPLabelManager
from generalresearch.models.network.label import (
IPLabel,
IPLabelKind,
@@ -14,11 +15,14 @@ from generalresearch.models.network.label import (
)
from generalresearch.models.thl.ipinfo import normalize_ip
+if TYPE_CHECKING:
+ from generalresearch.managers.network.label import IPLabelManager
+
fake = faker.Faker()
@pytest.fixture
-def ip_label(utc_now) -> IPLabel:
+def ip_label(utc_now: datetime) -> IPLabel:
ip = ipaddress.IPv6Network((fake.ipv6(), 64), strict=False)
return IPLabel(
label_kind=IPLabelKind.VPN,
@@ -31,7 +35,7 @@ def ip_label(utc_now) -> IPLabel:
)
-def test_model(utc_now):
+def test_model(utc_now: datetime):
ip = fake.ipv4_public()
lbl = IPLabel(
label_kind=IPLabelKind.VPN,
@@ -142,7 +146,7 @@ def test_filter_network(
assert len(res) == 2
-def test_network(iplabel_manager: IPLabelManager, utc_now):
+def test_network(iplabel_manager: IPLabelManager, utc_now: datetime):
# This is a fully-specific /128 ipv6 address.
# e.g. '51b7:b38d:8717:6c5b:cd3e:f5c3:3aba:17d'
ip = fake.ipv6()
@@ -174,7 +178,10 @@ def test_network(iplabel_manager: IPLabelManager, utc_now):
def test_label_cidr_and_ipinfo(
- iplabel_manager: IPLabelManager, ip_information_factory, ip_geoname, utc_now
+ iplabel_manager: IPLabelManager,
+ ip_information_factory,
+ ip_geoname,
+ utc_now: datetime,
):
# We have network_iplabel.ip as a cidr col and
# thl_ipinformation.ip as a inet col. Make sure we can join appropriately
diff --git a/tests/managers/test_events.py b/tests/managers/test_events.py
index cb32275..8745126 100644
--- a/tests/managers/test_events.py
+++ b/tests/managers/test_events.py
@@ -8,13 +8,13 @@ from datetime import UTC, datetime, timedelta
from decimal import Decimal
from functools import partial
from math import floor
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.events import EventManager, EventSubscriber
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.models import Source
+from generalresearch.managers.events import EventSubscriber
+from generalresearch.models.definitions import Source
from generalresearch.models.events import (
AggregateBySource,
EventType,
@@ -25,7 +25,11 @@ from generalresearch.models.legacy.bucket import Bucket
from generalresearch.models.thl.definitions import Status, StatusCode1
from generalresearch.models.thl.session import Session, Wall
from generalresearch.models.thl.user import User
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.events import EventManager
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.redis_helper import RedisConfig
# We don't need anything in the db, so not using the db fixtures
diff --git a/tests/managers/test_lucid.py b/tests/managers/test_lucid.py
index 20dca22..6771a0c 100644
--- a/tests/managers/test_lucid.py
+++ b/tests/managers/test_lucid.py
@@ -1,9 +1,13 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import pytest
from generalresearch.managers.lucid.profiling import get_profiling_library
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.pg_helper import PostgresConfig
qids = ["42", "43", "45", "97", "120", "639", "15297"]
diff --git a/tests/managers/thl/test_buyer.py b/tests/managers/thl/test_buyer.py
index 6776ab3..0ab2d52 100644
--- a/tests/managers/thl/test_buyer.py
+++ b/tests/managers/thl/test_buyer.py
@@ -1,9 +1,12 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
-from generalresearch.managers.thl.buyer import BuyerManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.buyer import BuyerManager
class TestBuyer:
diff --git a/tests/managers/thl/test_cashout_method.py b/tests/managers/thl/test_cashout_method.py
index ca85c6b..877d7b2 100644
--- a/tests/managers/thl/test_cashout_method.py
+++ b/tests/managers/thl/test_cashout_method.py
@@ -1,21 +1,26 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.config import GRLBaseSettings
-from generalresearch.managers.thl.cashout_method import (
- CashoutMethodManager,
-)
-from generalresearch.models.thl.user import User
-from generalresearch.models.thl.wallet import PayoutType
from generalresearch.models.thl.wallet.cashout_method import (
CashMailCashoutMethodData,
- CashoutMethod,
PaypalCashoutMethodData,
USDeliveryAddress,
)
+from generalresearch.models.thl.wallet.definitions import PayoutType
+
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.managers.thl.cashout_method import (
+ CashoutMethodManager,
+ )
+ from generalresearch.models.thl.user import User
+ from generalresearch.models.thl.wallet.cashout_method import (
+ CashoutMethod,
+ )
class TestTangoCashoutMethods:
diff --git a/tests/managers/thl/test_category.py b/tests/managers/thl/test_category.py
index ec52aae..4d00643 100644
--- a/tests/managers/thl/test_category.py
+++ b/tests/managers/thl/test_category.py
@@ -1,12 +1,15 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.category import CategoryManager
from generalresearch.models.thl.category import Category
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.category import CategoryManager
+ from generalresearch.pg_helper import PostgresConfig
class TestCategory:
diff --git a/tests/managers/thl/test_contest/test_leaderboard.py b/tests/managers/thl/test_contest/test_leaderboard.py
index 3a63075..d80d512 100644
--- a/tests/managers/thl/test_contest/test_leaderboard.py
+++ b/tests/managers/thl/test_contest/test_leaderboard.py
@@ -1,23 +1,28 @@
from __future__ import annotations
from datetime import UTC, datetime, timedelta
+from typing import TYPE_CHECKING
from zoneinfo import ZoneInfo
from generalresearch.currency import USDCent
-from generalresearch.managers.thl.contest_manager import ContestManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.user_manager.user_manager import UserManager
from generalresearch.models.thl.contest.definitions import (
ContestEndReason,
ContestStatus,
)
from generalresearch.models.thl.contest.leaderboard import (
LeaderboardContest,
- LeaderboardContestCreate,
)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.contest_manager import ContestManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.user_manager.user_manager import UserManager
+ from generalresearch.models.thl.contest.leaderboard import (
+ LeaderboardContestCreate,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+ from generalresearch.redis_helper import RedisConfig
class TestLeaderboardContestCRUD:
diff --git a/tests/managers/thl/test_contest/test_milestone.py b/tests/managers/thl/test_contest/test_milestone.py
index e29ba4c..dbb2016 100644
--- a/tests/managers/thl/test_contest/test_milestone.py
+++ b/tests/managers/thl/test_contest/test_milestone.py
@@ -2,9 +2,8 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime
+from typing import TYPE_CHECKING
-from generalresearch.managers.thl.contest_manager import ContestManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
from generalresearch.models.thl.contest.definitions import (
ContestEndReason,
ContestStatus,
@@ -12,12 +11,18 @@ from generalresearch.models.thl.contest.definitions import (
from generalresearch.models.thl.contest.milestone import (
ContestEntryTrigger,
MilestoneContest,
- MilestoneContestCreate,
MilestoneUserView,
)
-from generalresearch.models.thl.contest.raffle import RaffleContest
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.contest_manager import ContestManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.contest.milestone import (
+ MilestoneContestCreate,
+ )
+ from generalresearch.models.thl.contest.raffle import RaffleContest
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
class TestMilestoneContest:
@@ -25,8 +30,6 @@ class TestMilestoneContest:
def test_should_end(
self,
contest: MilestoneContest,
- thl_ledger_manager: ThlLedgerManager,
- contest_manager: ContestManager,
):
# contest is active and has no entries
should, msg = contest.should_end()
@@ -53,7 +56,6 @@ class TestMilestoneContestCRUD:
self,
contest_create: MilestoneContestCreate,
product_user_wallet_yes: Product,
- thl_ledger_manager: ThlLedgerManager,
contest_manager: ContestManager,
):
c = contest_manager.create(
diff --git a/tests/managers/thl/test_contest/test_raffle.py b/tests/managers/thl/test_contest/test_raffle.py
index 06d4676..7803952 100644
--- a/tests/managers/thl/test_contest/test_raffle.py
+++ b/tests/managers/thl/test_contest/test_raffle.py
@@ -2,19 +2,17 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime
+from typing import TYPE_CHECKING
import pytest
from pydantic import ValidationError
from pytest import approx
from generalresearch.currency import USDCent
-from generalresearch.managers.thl.contest_manager import ContestManager
from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerTransactionConditionFailedError,
)
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
from generalresearch.models.thl.contest import (
- Contest,
ContestEndCondition,
ContestEntryRule,
ContestPrize,
@@ -29,11 +27,20 @@ from generalresearch.models.thl.contest.raffle import (
ContestEntry,
ContestEntryType,
RaffleContest,
- RaffleContestCreate,
- RaffleUserView,
)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.contest_manager import ContestManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.contest import (
+ Contest,
+ )
+ from generalresearch.models.thl.contest.raffle import (
+ RaffleContestCreate,
+ RaffleUserView,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
class TestRaffleContest:
diff --git a/tests/managers/thl/test_harmonized_uqa.py b/tests/managers/thl/test_harmonized_uqa.py
index 84eeb56..2fc0ff0 100644
--- a/tests/managers/thl/test_harmonized_uqa.py
+++ b/tests/managers/thl/test_harmonized_uqa.py
@@ -1,15 +1,18 @@
from __future__ import annotations
from datetime import UTC, datetime
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.profiling.uqa import UQAManager
from generalresearch.models.thl.profiling.user_question_answer import (
DUMMY_UQA,
UserQuestionAnswer,
)
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.profiling.uqa import UQAManager
+ from generalresearch.models.thl.user import User
@pytest.mark.usefixtures("uqa_db_index", "upk_data", "uqa_manager_clear_cache")
diff --git a/tests/managers/thl/test_ipinfo.py b/tests/managers/thl/test_ipinfo.py
index 48b9efd..6954163 100644
--- a/tests/managers/thl/test_ipinfo.py
+++ b/tests/managers/thl/test_ipinfo.py
@@ -1,4 +1,5 @@
from collections.abc import Callable
+from typing import TYPE_CHECKING
import faker
@@ -12,8 +13,10 @@ from generalresearch.models.thl.ipinfo import (
IPGeoname,
IPInformation,
)
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
fake = faker.Faker()
diff --git a/tests/managers/thl/test_ledger/test_lm_accounts.py b/tests/managers/thl/test_ledger/test_lm_accounts.py
index 7b65b2d..f5ed883 100644
--- a/tests/managers/thl/test_ledger/test_lm_accounts.py
+++ b/tests/managers/thl/test_ledger/test_lm_accounts.py
@@ -2,6 +2,7 @@ from __future__ import annotations
from itertools import product as iproduct
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -13,13 +14,18 @@ from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerAccountDoesntExistError,
)
from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.models.custom_types import AccountType, Direction, UUIDStr
+from generalresearch.models.custom_types import AccountType, Direction
from generalresearch.models.thl.ledger import (
LedgerAccount,
LedgerEntry,
- LedgerTransaction,
)
+if TYPE_CHECKING:
+ from generalresearch.models.custom_types import UUIDStr
+ from generalresearch.models.thl.ledger import (
+ LedgerTransaction,
+ )
+
@pytest.mark.parametrize(
argnames="currency, kind, acct_id",
diff --git a/tests/managers/thl/test_ledger/test_lm_tx.py b/tests/managers/thl/test_ledger/test_lm_tx.py
index ce609d6..445405e 100644
--- a/tests/managers/thl/test_ledger/test_lm_tx.py
+++ b/tests/managers/thl/test_ledger/test_lm_tx.py
@@ -2,6 +2,7 @@ from __future__ import annotations
from decimal import Decimal
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -12,11 +13,15 @@ from generalresearch.managers.thl.ledger_manager.ledger import (
)
from generalresearch.models.thl.ledger import (
Direction,
- LedgerAccount,
LedgerEntry,
LedgerTransaction,
)
+if TYPE_CHECKING:
+ from generalresearch.models.thl.ledger import (
+ LedgerAccount,
+ )
+
class TestLedgerManagerCreateTx:
diff --git a/tests/managers/thl/test_ledger/test_lm_tx_entries.py b/tests/managers/thl/test_ledger/test_lm_tx_entries.py
index 9925b87..03c6e02 100644
--- a/tests/managers/thl/test_ledger/test_lm_tx_entries.py
+++ b/tests/managers/thl/test_ledger/test_lm_tx_entries.py
@@ -1,11 +1,17 @@
from __future__ import annotations
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+from typing import TYPE_CHECKING
+
from generalresearch.models.thl.ledger import (
LedgerEntry,
- LedgerTransaction,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.models.thl.ledger import (
+ LedgerTransaction,
+ )
+
class TestLedgerEntryManager:
diff --git a/tests/managers/thl/test_ledger/test_lm_tx_locks.py b/tests/managers/thl/test_ledger/test_lm_tx_locks.py
index e603632..9ecc1bc 100644
--- a/tests/managers/thl/test_ledger/test_lm_tx_locks.py
+++ b/tests/managers/thl/test_ledger/test_lm_tx_locks.py
@@ -5,10 +5,10 @@ from collections.abc import Callable, Generator
from datetime import UTC, datetime, timedelta
from decimal import Decimal
from logging import LogCaptureFixture
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.currency import LedgerCurrency
from generalresearch.managers.thl.ledger_manager.conditions import (
generate_condition_mp_payment,
)
@@ -17,11 +17,8 @@ from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerTransactionCreateLockError,
LedgerTransactionFlagAlreadyExistsError,
)
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.ledger import LedgerTransaction
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.session import (
Session,
Status,
@@ -29,7 +26,13 @@ from generalresearch.models.thl.session import (
Wall,
WallAdjustedStatus,
)
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.currency import LedgerCurrency
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
logger = logging.getLogger("LedgerManager")
diff --git a/tests/managers/thl/test_ledger/test_lm_tx_metadata.py b/tests/managers/thl/test_ledger/test_lm_tx_metadata.py
index f63efa4..3d8cf89 100644
--- a/tests/managers/thl/test_ledger/test_lm_tx_metadata.py
+++ b/tests/managers/thl/test_ledger/test_lm_tx_metadata.py
@@ -1,9 +1,12 @@
from __future__ import annotations
-from generalresearch.managers.thl.ledger_manager.ledger import (
- LedgerManager,
- LedgerTransaction,
-)
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.ledger import (
+ LedgerManager,
+ LedgerTransaction,
+ )
class TestLedgerMetadataManager:
diff --git a/tests/managers/thl/test_ledger/test_thl_lm_accounts.py b/tests/managers/thl/test_ledger/test_thl_lm_accounts.py
index 60eb71c..adff446 100644
--- a/tests/managers/thl/test_ledger/test_thl_lm_accounts.py
+++ b/tests/managers/thl/test_ledger/test_thl_lm_accounts.py
@@ -1,6 +1,7 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -9,18 +10,20 @@ from generalresearch.currency import LedgerCurrency
from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerAccountDoesntExistError,
)
-from generalresearch.managers.thl.ledger_manager.ledger import (
- LedgerAccountManager,
- LedgerManager,
-)
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
from generalresearch.models.thl.ledger import (
AccountType,
Direction,
LedgerAccount,
)
from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.ledger import (
+ LedgerAccountManager,
+ LedgerManager,
+ )
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.user import User
class TestThlLedgerManagerAccounts:
diff --git a/tests/managers/thl/test_ledger/test_thl_lm_bp_payout.py b/tests/managers/thl/test_ledger/test_thl_lm_bp_payout.py
index b518453..14c5270 100644
--- a/tests/managers/thl/test_ledger/test_thl_lm_bp_payout.py
+++ b/tests/managers/thl/test_ledger/test_thl_lm_bp_payout.py
@@ -5,6 +5,7 @@ from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -12,7 +13,7 @@ import redis
from pydantic import RedisDsn
from redis.lock import Lock
-from generalresearch.currency import LedgerCurrency, USDCent
+from generalresearch.currency import USDCent
from generalresearch.managers.base import Permission
from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerTransactionConditionFailedError,
@@ -22,24 +23,27 @@ from generalresearch.managers.thl.ledger_manager.exceptions import (
)
from generalresearch.managers.thl.ledger_manager.ledger import LedgerTransaction
from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.payout import (
- BrokerageProductPayoutEventManager,
-)
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import PayoutStatus
from generalresearch.models.thl.ledger import Direction, TransactionType
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.session import (
Session,
Status,
StatusCode1,
Wall,
)
-from generalresearch.models.thl.user import User
-from generalresearch.models.thl.wallet import PayoutType
-from generalresearch.pg_helper import PostgresConfig
+from generalresearch.models.thl.wallet.definitions import PayoutType
from generalresearch.redis_helper import RedisConfig
+if TYPE_CHECKING:
+ from generalresearch.currency import LedgerCurrency
+ from generalresearch.managers.thl.payout import (
+ BrokerageProductPayoutEventManager,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+
def broken_acquire(self, *args, **kwargs):
raise redis.exceptions.TimeoutError("Simulated timeout during acquire")
diff --git a/tests/managers/thl/test_ledger/test_thl_lm_tx.py b/tests/managers/thl/test_ledger/test_thl_lm_tx.py
index 1860d6d..2e4ab5e 100644
--- a/tests/managers/thl/test_ledger/test_thl_lm_tx.py
+++ b/tests/managers/thl/test_ledger/test_thl_lm_tx.py
@@ -5,26 +5,21 @@ from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.currency import LedgerCurrency, USDCent
+from generalresearch.currency import USDCent
from generalresearch.managers.thl.ledger_manager.ledger import (
- LedgerManager,
LedgerTransaction,
)
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.wall import WallManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
WALL_ALLOWED_STATUS_STATUS_CODE,
)
from generalresearch.models.thl.ledger import (
Direction,
- LedgerAccount,
TransactionType,
)
from generalresearch.models.thl.payout import UserPayoutEvent
@@ -41,8 +36,21 @@ from generalresearch.models.thl.session import (
Wall,
WallAdjustedStatus,
)
-from generalresearch.models.thl.user import User
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
+
+if TYPE_CHECKING:
+ from generalresearch.currency import LedgerCurrency
+ from generalresearch.managers.thl.ledger_manager.ledger import (
+ LedgerManager,
+ )
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.wall import WallManager
+ from generalresearch.models.thl.ledger import (
+ LedgerAccount,
+ )
+ from generalresearch.models.thl.user import User
logger = logging.getLogger("LedgerManager")
diff --git a/tests/managers/thl/test_ledger/test_thl_lm_tx__user_payouts.py b/tests/managers/thl/test_ledger/test_thl_lm_tx__user_payouts.py
index 82dc143..3fd21dc 100644
--- a/tests/managers/thl/test_ledger/test_thl_lm_tx__user_payouts.py
+++ b/tests/managers/thl/test_ledger/test_thl_lm_tx__user_payouts.py
@@ -3,6 +3,7 @@ from __future__ import annotations
import logging
from collections.abc import Callable
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -11,12 +12,14 @@ from generalresearch.managers.thl.ledger_manager.exceptions import (
LedgerTransactionConditionFailedError,
LedgerTransactionFlagAlreadyExistsError,
)
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
from generalresearch.models.thl.payout import UserPayoutEvent
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
class TestLedgerManagerAMT:
diff --git a/tests/managers/thl/test_ledger/test_thl_pem.py b/tests/managers/thl/test_ledger/test_thl_pem.py
index 29341cf..9dbec48 100644
--- a/tests/managers/thl/test_ledger/test_thl_pem.py
+++ b/tests/managers/thl/test_ledger/test_thl_pem.py
@@ -2,28 +2,31 @@ from __future__ import annotations
from collections.abc import Callable
from random import randint
+from typing import TYPE_CHECKING
from uuid import UUID, uuid4
import pytest
from generalresearch.currency import USDCent
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import (
- ThlLedgerManager,
-)
-from generalresearch.managers.thl.payout import (
- BrokerageProductPayoutEventManager,
- UserPayoutEventManager,
-)
from generalresearch.models.thl.definitions import PayoutStatus
from generalresearch.models.thl.payout import (
BrokerageProductPayoutEvent,
)
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.wallet.cashout_method import (
CashoutRequestInfo,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import (
+ ThlLedgerManager,
+ )
+ from generalresearch.managers.thl.payout import (
+ BrokerageProductPayoutEventManager,
+ UserPayoutEventManager,
+ )
+ from generalresearch.models.thl.product import Product
+
class TestThlPayoutEventManager:
diff --git a/tests/managers/thl/test_ledger/test_user_txs.py b/tests/managers/thl/test_ledger/test_user_txs.py
index 56dc485..1c08498 100644
--- a/tests/managers/thl/test_ledger/test_user_txs.py
+++ b/tests/managers/thl/test_ledger/test_user_txs.py
@@ -3,12 +3,9 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
-from generalresearch.config import GRLBaseSettings
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.payout import UserPayoutEventManager
from generalresearch.managers.thl.user_compensate import user_compensate
from generalresearch.models.thl.definitions import (
Status,
@@ -18,10 +15,16 @@ from generalresearch.models.thl.ledger import (
UserLedgerTransactionTypesSummary,
UserLedgerTransactionTypeSummary,
)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
+
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.payout import UserPayoutEventManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
def test_user_txs(
diff --git a/tests/managers/thl/test_ledger/test_wallet.py b/tests/managers/thl/test_ledger/test_wallet.py
index cad3ea4..1ee9bf9 100644
--- a/tests/managers/thl/test_ledger/test_wallet.py
+++ b/tests/managers/thl/test_ledger/test_wallet.py
@@ -2,12 +2,11 @@ from __future__ import annotations
from collections.abc import Callable
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.product import ProductManager
from generalresearch.models.thl.product import (
PayoutConfig,
PayoutTransformation,
@@ -15,7 +14,11 @@ from generalresearch.models.thl.product import (
Product,
UserWalletConfig,
)
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.models.thl.user import User
@pytest.fixture()
diff --git a/tests/managers/thl/test_payout.py b/tests/managers/thl/test_payout.py
index 0f3f103..2494de8 100644
--- a/tests/managers/thl/test_payout.py
+++ b/tests/managers/thl/test_payout.py
@@ -6,6 +6,7 @@ from datetime import UTC, datetime, timedelta
from decimal import Decimal
from random import choice as rand_choice
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pandas as pd
@@ -13,35 +14,39 @@ import pytest
from dask.distributed import Client as DaskClient
from generalresearch.currency import USDCent
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.collections.thl_web import (
- LedgerDFCollection,
-)
-from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.payout import (
- BrokerageProductPayoutEventManager,
- BusinessPayoutEventManager,
- PayoutEventManager,
- UserPayoutEventManager,
-)
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.models.gr.business import Business
from generalresearch.models.thl.definitions import PayoutStatus
from generalresearch.models.thl.finance import BusinessBalances
-from generalresearch.models.thl.ledger import LedgerAccount
from generalresearch.models.thl.payout import (
BrokerageProductPayoutEvent,
BusinessPayoutEvent,
- UserPayoutEvent,
)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.models.thl.wallet import PayoutType
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+from generalresearch.models.thl.wallet.definitions import PayoutType
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.collections.thl_web import (
+ LedgerDFCollection,
+ )
+ from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.payout import (
+ BrokerageProductPayoutEventManager,
+ BusinessPayoutEventManager,
+ PayoutEventManager,
+ UserPayoutEventManager,
+ )
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.models.gr.business import Business
+ from generalresearch.models.thl.ledger import LedgerAccount
+ from generalresearch.models.thl.payout import (
+ UserPayoutEvent,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
logger = logging.getLogger()
@@ -189,7 +194,7 @@ class TestPayout:
utc_now: datetime,
):
from generalresearch.models.thl.definitions import PayoutStatus
- from generalresearch.models.thl.wallet import PayoutType
+ from generalresearch.models.thl.wallet.definitions import PayoutType
user_account = thl_ledger_manager.get_account_or_create_user_wallet(user=user)
bp_account = thl_ledger_manager.get_account_or_create_bp_wallet(product=product)
diff --git a/tests/managers/thl/test_product.py b/tests/managers/thl/test_product.py
index f93ac36..644dc90 100644
--- a/tests/managers/thl/test_product.py
+++ b/tests/managers/thl/test_product.py
@@ -1,13 +1,12 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.models import Source
-from generalresearch.models.gr.team import Team
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.product import (
Product,
ProfilingConfig,
@@ -19,6 +18,10 @@ from generalresearch.models.thl.product import (
UserHealthConfig,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.models.gr.team import Team
+
class TestProductManagerGetMethods:
def test_get_by_uuid(self, product_manager: ProductManager):
diff --git a/tests/managers/thl/test_product_prod.py b/tests/managers/thl/test_product_prod.py
index 8734210..d584527 100644
--- a/tests/managers/thl/test_product_prod.py
+++ b/tests/managers/thl/test_product_prod.py
@@ -2,13 +2,16 @@ from __future__ import annotations
import logging
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.product import ProductManager
from generalresearch.models.thl.product import Product
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.product import ProductManager
+
logger = logging.getLogger()
diff --git a/tests/managers/thl/test_profiling/test_question.py b/tests/managers/thl/test_profiling/test_question.py
index 97e7365..e4afb87 100644
--- a/tests/managers/thl/test_profiling/test_question.py
+++ b/tests/managers/thl/test_profiling/test_question.py
@@ -1,8 +1,11 @@
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
-from generalresearch.managers.thl.profiling.question import QuestionManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.profiling.question import QuestionManager
class TestQuestionManager:
diff --git a/tests/managers/thl/test_profiling/test_schema.py b/tests/managers/thl/test_profiling/test_schema.py
index b0eae31..feab902 100644
--- a/tests/managers/thl/test_profiling/test_schema.py
+++ b/tests/managers/thl/test_profiling/test_schema.py
@@ -1,10 +1,13 @@
from collections.abc import Callable
+from typing import TYPE_CHECKING
-from generalresearch.managers.thl.profiling.schema import (
- UpkSchemaManager,
-)
from generalresearch.models.thl.profiling.upk_property import PropertyType
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.profiling.schema import (
+ UpkSchemaManager,
+ )
+
class TestUpkSchemaManager:
diff --git a/tests/managers/thl/test_profiling/test_user_upk.py b/tests/managers/thl/test_profiling/test_user_upk.py
index fa10b67..0f3140c 100644
--- a/tests/managers/thl/test_profiling/test_user_upk.py
+++ b/tests/managers/thl/test_profiling/test_user_upk.py
@@ -1,8 +1,10 @@
from collections.abc import Callable
from datetime import UTC, datetime
+from typing import TYPE_CHECKING
-from generalresearch.managers.thl.profiling.user_upk import UserUpkManager
-from generalresearch.models.thl.user import User
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.profiling.user_upk import UserUpkManager
+ from generalresearch.models.thl.user import User
now = datetime.now(tz=UTC)
base = {
diff --git a/tests/managers/thl/test_session_manager.py b/tests/managers/thl/test_session_manager.py
index 05a49c1..30fd9ec 100644
--- a/tests/managers/thl/test_session_manager.py
+++ b/tests/managers/thl/test_session_manager.py
@@ -3,24 +3,27 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import datetime, timedelta
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
from faker import Faker
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.models import DeviceType
-from generalresearch.models.gr.business import Business
-from generalresearch.models.gr.team import Team
+from generalresearch.models.definitions import DeviceType
from generalresearch.models.legacy.bucket import Bucket
from generalresearch.models.thl.definitions import (
SessionStatusCode2,
Status,
StatusCode1,
)
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.session import Session
from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.models.gr.business import Business
+ from generalresearch.models.gr.team import Team
+ from generalresearch.models.thl.product import Product
+ from generalresearch.pg_helper import PostgresConfig
fake = Faker()
diff --git a/tests/managers/thl/test_survey.py b/tests/managers/thl/test_survey.py
index c3ab162..e114b70 100644
--- a/tests/managers/thl/test_survey.py
+++ b/tests/managers/thl/test_survey.py
@@ -4,16 +4,11 @@ import uuid
from collections.abc import Callable
from datetime import UTC, datetime
from decimal import Decimal
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.buyer import BuyerManager
-from generalresearch.managers.thl.profiling.question import (
- QuestionManager,
-)
-from generalresearch.managers.thl.profiling.uqa import UQAManager
-from generalresearch.managers.thl.survey import SurveyManager, SurveyStatManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.legacy.bucket import (
DurationSummary,
PayoutSummary,
@@ -30,6 +25,14 @@ from generalresearch.models.thl.survey.model import (
SurveyStat,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.buyer import BuyerManager
+ from generalresearch.managers.thl.profiling.question import (
+ QuestionManager,
+ )
+ from generalresearch.managers.thl.profiling.uqa import UQAManager
+ from generalresearch.managers.thl.survey import SurveyManager, SurveyStatManager
+
@pytest.fixture(scope="session")
def surveys_fixture() -> list[Survey]:
@@ -223,7 +226,6 @@ class TestSurvey:
class TestSurveyStat:
def test(
self,
- delete_buyers_surveys: Callable[..., None],
surveystat_manager,
survey_manager: SurveyManager,
surveys_fixture: list[Survey],
diff --git a/tests/managers/thl/test_survey_penalty.py b/tests/managers/thl/test_survey_penalty.py
index 9c29a0a..04f69d2 100644
--- a/tests/managers/thl/test_survey_penalty.py
+++ b/tests/managers/thl/test_survey_penalty.py
@@ -1,16 +1,19 @@
from __future__ import annotations
import uuid
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.survey_penalty import SurveyPenaltyManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.survey.penalty import (
BPSurveyPenalty,
TeamSurveyPenalty,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.survey_penalty import SurveyPenaltyManager
+
@pytest.fixture
def product_uuid() -> str:
diff --git a/tests/managers/thl/test_task_adjustment.py b/tests/managers/thl/test_task_adjustment.py
index a7324c3..a14401e 100644
--- a/tests/managers/thl/test_task_adjustment.py
+++ b/tests/managers/thl/test_task_adjustment.py
@@ -5,23 +5,26 @@ from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
from random import randint
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.task_adjustment import (
- TaskAdjustmentManager,
-)
-from generalresearch.managers.thl.wall import WallManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
Status,
StatusCode1,
WallAdjustedStatus,
)
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.task_adjustment import (
+ TaskAdjustmentManager,
+ )
+ from generalresearch.managers.thl.wall import WallManager
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
@pytest.fixture()
diff --git a/tests/managers/thl/test_task_status.py b/tests/managers/thl/test_task_status.py
index b47f650..9846ce0 100644
--- a/tests/managers/thl/test_task_status.py
+++ b/tests/managers/thl/test_task_status.py
@@ -3,13 +3,11 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.wall import WallManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
Status,
StatusCode1,
@@ -19,12 +17,18 @@ from generalresearch.models.thl.product import (
PayoutConfig,
PayoutTransformation,
PayoutTransformationPercentArgs,
- Product,
UserWalletConfig,
)
-from generalresearch.models.thl.session import Session, WallOut
+from generalresearch.models.thl.session import WallOut
from generalresearch.models.thl.task_status import TaskStatusResponse
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.wall import WallManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
start1 = datetime(2023, 2, 1, tzinfo=UTC)
finish1 = start1 + timedelta(minutes=5)
diff --git a/tests/managers/thl/test_user_manager/test_base.py b/tests/managers/thl/test_user_manager/test_base.py
index 8cd83ad..4a9750e 100644
--- a/tests/managers/thl/test_user_manager/test_base.py
+++ b/tests/managers/thl/test_user_manager/test_base.py
@@ -1,11 +1,11 @@
import logging
from datetime import UTC, datetime
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.product import ProductManager
from generalresearch.managers.thl.user_manager import (
UserCreateNotAllowedError,
get_bp_user_create_limit_hourly,
@@ -17,13 +17,17 @@ from generalresearch.managers.thl.user_manager.rate_limit import (
RateLimitItemPerHourConstantKey,
UserManagerLimiter,
)
-from generalresearch.managers.thl.user_manager.user_manager import (
- UserManager,
-)
-from generalresearch.managers.thl.userhealth import AuditLogManager
-from generalresearch.models.thl.product import Product, UserCreateConfig
+from generalresearch.models.thl.product import UserCreateConfig
from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.managers.thl.user_manager.user_manager import (
+ UserManager,
+ )
+ from generalresearch.managers.thl.userhealth import AuditLogManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.pg_helper import PostgresConfig
logger = logging.getLogger()
diff --git a/tests/managers/thl/test_user_manager/test_mysql.py b/tests/managers/thl/test_user_manager/test_mysql.py
index e6f43ef..ed7d458 100644
--- a/tests/managers/thl/test_user_manager/test_mysql.py
+++ b/tests/managers/thl/test_user_manager/test_mysql.py
@@ -1,9 +1,12 @@
from __future__ import annotations
-from generalresearch.managers.thl.user_manager.mysql_user_manager import (
- MysqlUserManager,
-)
-from generalresearch.models.thl.user import User
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.user_manager.mysql_user_manager import (
+ MysqlUserManager,
+ )
+ from generalresearch.models.thl.user import User
class TestUserManagerMysqlNew:
diff --git a/tests/managers/thl/test_user_manager/test_redis.py b/tests/managers/thl/test_user_manager/test_redis.py
index 04071ee..e51aae9 100644
--- a/tests/managers/thl/test_user_manager/test_redis.py
+++ b/tests/managers/thl/test_user_manager/test_redis.py
@@ -1,14 +1,18 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import pytest
-from generalresearch.config import GRLBaseSettings
from generalresearch.managers.base import Permission
from generalresearch.managers.thl.user_manager.redis_user_manager import (
RedisUserManager,
)
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
+
+if TYPE_CHECKING:
+ from generalresearch.config import GRLBaseSettings
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
class TestUserManagerRedis:
diff --git a/tests/managers/thl/test_user_manager/test_user_fetch.py b/tests/managers/thl/test_user_manager/test_user_fetch.py
index 87d010a..9a279ed 100644
--- a/tests/managers/thl/test_user_manager/test_user_fetch.py
+++ b/tests/managers/thl/test_user_manager/test_user_fetch.py
@@ -1,13 +1,15 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.user_manager.user_manager import UserManager
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.user_manager.user_manager import UserManager
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
class TestUserManagerFetch:
diff --git a/tests/managers/thl/test_user_manager/test_user_metadata.py b/tests/managers/thl/test_user_manager/test_user_metadata.py
index 670e38a..eb6a272 100644
--- a/tests/managers/thl/test_user_manager/test_user_metadata.py
+++ b/tests/managers/thl/test_user_manager/test_user_metadata.py
@@ -1,17 +1,20 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.user_manager.user_metadata_manager import (
- UserMetadataManager,
-)
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
from generalresearch.models.thl.user_profile import UserMetadata
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.user_manager.user_metadata_manager import (
+ UserMetadataManager,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+
class TestUserMetadataManager:
diff --git a/tests/managers/thl/test_user_streak.py b/tests/managers/thl/test_user_streak.py
index 61e2947..564a142 100644
--- a/tests/managers/thl/test_user_streak.py
+++ b/tests/managers/thl/test_user_streak.py
@@ -3,17 +3,15 @@ from __future__ import annotations
import copy
from datetime import UTC, date, datetime, timedelta
from decimal import Decimal
+from typing import TYPE_CHECKING
from zoneinfo import ZoneInfo
import pytest
-from generalresearch.managers.thl.session import SessionManager
from generalresearch.managers.thl.user_streak import (
- UserStreakManager,
compute_streaks_from_days,
)
from generalresearch.models.thl.definitions import Status, StatusCode1
-from generalresearch.models.thl.user import User
from generalresearch.models.thl.user_streak import (
StreakFulfillment,
StreakPeriod,
@@ -21,6 +19,13 @@ from generalresearch.models.thl.user_streak import (
UserStreak,
)
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.user_streak import (
+ UserStreakManager,
+ )
+ from generalresearch.models.thl.user import User
+
def test_compute_streaks_from_days():
days = [
diff --git a/tests/managers/thl/test_userhealth.py b/tests/managers/thl/test_userhealth.py
index ea54359..ce6c221 100644
--- a/tests/managers/thl/test_userhealth.py
+++ b/tests/managers/thl/test_userhealth.py
@@ -2,6 +2,7 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime
+from typing import TYPE_CHECKING
from uuid import uuid4
import faker
@@ -12,16 +13,24 @@ from generalresearch.managers.thl.userhealth import (
IPRecordManager,
UserIpHistoryManager,
)
-from generalresearch.models.thl.ipinfo import GeoIPInformation, IPGeoname, IPInformation
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+from generalresearch.models.thl.ipinfo import (
+ GeoIPInformation,
+)
from generalresearch.models.thl.user_iphistory import (
IPRecord,
UserIPHistory,
)
from generalresearch.models.thl.userhealth import AuditLog, AuditLogLevel
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.models.thl.ipinfo import (
+ IPGeoname,
+ IPInformation,
+ )
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
fake = faker.Faker()
diff --git a/tests/managers/thl/test_wall_manager.py b/tests/managers/thl/test_wall_manager.py
index b8a636f..3215de8 100644
--- a/tests/managers/thl/test_wall_manager.py
+++ b/tests/managers/thl/test_wall_manager.py
@@ -3,21 +3,24 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pydantic import PositiveInt
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.wall import WallCacheManager, WallManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.session import (
ReportValue,
- Session,
Status,
StatusCode1,
)
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.wall import WallCacheManager, WallManager
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
class TestWallManager:
diff --git a/tests/models/custom_types/test_aware_datetime.py b/tests/models/custom_types/test_aware_datetime.py
index e8a5aa3..54a5d9b 100644
--- a/tests/models/custom_types/test_aware_datetime.py
+++ b/tests/models/custom_types/test_aware_datetime.py
@@ -2,12 +2,14 @@ from __future__ import annotations
import logging
from datetime import UTC, datetime
+from typing import TYPE_CHECKING
import pytest
import pytz
from pydantic import BaseModel, Field, ValidationError
-from generalresearch.models.custom_types import AwareDatetimeISO
+if TYPE_CHECKING:
+ from generalresearch.models.custom_types import AwareDatetimeISO
logger = logging.getLogger()
diff --git a/tests/models/custom_types/test_dsn.py b/tests/models/custom_types/test_dsn.py
index d8c7c53..2aae579 100644
--- a/tests/models/custom_types/test_dsn.py
+++ b/tests/models/custom_types/test_dsn.py
@@ -1,12 +1,14 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pydantic import BaseModel, Field, MySQLDsn, ValidationError
from pydantic_core import Url
-from generalresearch.models.custom_types import DaskDsn, SentryDsn
+if TYPE_CHECKING:
+ from generalresearch.models.custom_types import DaskDsn, SentryDsn
# --- Test Pydantic Models ---
diff --git a/tests/models/custom_types/test_uuid_str.py b/tests/models/custom_types/test_uuid_str.py
index 02e6a8b..92489a0 100644
--- a/tests/models/custom_types/test_uuid_str.py
+++ b/tests/models/custom_types/test_uuid_str.py
@@ -1,11 +1,13 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pydantic import BaseModel, Field, ValidationError
-from generalresearch.models.custom_types import UUIDStr
+if TYPE_CHECKING:
+ from generalresearch.models.custom_types import UUIDStr
class UUIDStrModel(BaseModel):
diff --git a/tests/models/dynata/test_survey.py b/tests/models/dynata/test_survey.py
index ad953a3..3e33897 100644
--- a/tests/models/dynata/test_survey.py
+++ b/tests/models/dynata/test_survey.py
@@ -1,3 +1,6 @@
+from __future__ import annotations
+
+
class TestDynataCondition:
def test_condition_create(self):
diff --git a/tests/models/gr/test_authentication.py b/tests/models/gr/test_authentication.py
index d2a7054..ac1298f 100644
--- a/tests/models/gr/test_authentication.py
+++ b/tests/models/gr/test_authentication.py
@@ -6,17 +6,21 @@ import os
from collections.abc import Callable
from datetime import UTC, datetime
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from redis import Redis
from generalresearch.models.gr.authentication import Claims, GRToken, GRUser
-from generalresearch.models.gr.business import Business
-from generalresearch.models.gr.team import Membership, Team
-from generalresearch.models.thl.product import Product
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+from generalresearch.models.gr.team import Team
+
+if TYPE_CHECKING:
+ from generalresearch.models.gr.business import Business
+ from generalresearch.models.gr.team import Membership
+ from generalresearch.models.thl.product import Product
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
SSO_ISSUER = ""
diff --git a/tests/models/gr/test_base.py b/tests/models/gr/test_base.py
index f019fc0..fba0960 100644
--- a/tests/models/gr/test_base.py
+++ b/tests/models/gr/test_base.py
@@ -3,11 +3,13 @@ from __future__ import annotations
import subprocess
from collections.abc import Callable
from pathlib import Path
+from typing import TYPE_CHECKING
import pytest
from pydantic import PostgresDsn
-from generalresearch.pg_helper import PostgresConfig
+if TYPE_CHECKING:
+ from generalresearch.pg_helper import PostgresConfig
class TestGRPostgresDjangoCreation:
diff --git a/tests/models/gr/test_business.py b/tests/models/gr/test_business.py
index 9310d2c..2c12da1 100644
--- a/tests/models/gr/test_business.py
+++ b/tests/models/gr/test_business.py
@@ -19,40 +19,42 @@ from distributed.utils_test import (
from pytest import approx
from generalresearch.currency import USDCent
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.collections.thl_web import (
- SessionDFCollection,
- WallDFCollection,
-)
-from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
-from generalresearch.managers.gr.business import BusinessBankAccountManager
-from generalresearch.managers.gr.team import TeamManager
-from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.payout import (
- BusinessPayoutEventManager,
- PayoutEventManager,
-)
from generalresearch.models.gr.business import (
Business,
BusinessAddress,
- BusinessBankAccount,
BusinessContact,
)
-from generalresearch.models.gr.team import Team
from generalresearch.models.thl.finance import (
BusinessBalances,
ProductBalances,
)
from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
+ from generalresearch.managers.gr.business import BusinessBankAccountManager
+ from generalresearch.managers.gr.team import TeamManager
+ from generalresearch.managers.thl.ledger_manager.ledger import LedgerManager
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.payout import (
+ BusinessPayoutEventManager,
+ PayoutEventManager,
+ )
from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.models.gr.business import (
+ BusinessBankAccount,
+ )
+ from generalresearch.models.gr.team import Team
from generalresearch.models.thl.product import BrokerageProductPayoutEvent
from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
class TestBusinessBankAccount:
diff --git a/tests/models/gr/test_team.py b/tests/models/gr/test_team.py
index dc7d4b9..c1ae6d6 100644
--- a/tests/models/gr/test_team.py
+++ b/tests/models/gr/test_team.py
@@ -5,6 +5,7 @@ from collections.abc import Callable
from datetime import datetime, timedelta
from decimal import Decimal
from pathlib import Path
+from typing import TYPE_CHECKING
import pandas as pd
from dask.distributed import Client as DaskClient
@@ -12,24 +13,29 @@ from distributed.utils_test import (
client_no_amm,
)
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.collections.thl_web import (
- SessionDFCollection,
- WallDFCollection,
-)
-from generalresearch.incite.mergers.foundations.enriched_session import (
- EnrichedSessionMerge,
-)
-from generalresearch.incite.mergers.foundations.enriched_wall import EnrichedWallMerge
-from generalresearch.managers.gr.team import MembershipManager, TeamManager
-from generalresearch.models.gr.authentication import GRUser
from generalresearch.models.gr.business import Business
-from generalresearch.models.gr.team import Membership, Team
+from generalresearch.models.gr.team import Team
from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.collections.thl_web import (
+ SessionDFCollection,
+ WallDFCollection,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_session import (
+ EnrichedSessionMerge,
+ )
+ from generalresearch.incite.mergers.foundations.enriched_wall import (
+ EnrichedWallMerge,
+ )
+ from generalresearch.managers.gr.team import MembershipManager, TeamManager
+ from generalresearch.models.gr.authentication import GRUser
+ from generalresearch.models.gr.team import Membership
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+ from generalresearch.redis_helper import RedisConfig
class TestTeam:
diff --git a/tests/models/innovate/test_question.py b/tests/models/innovate/test_question.py
index b206177..ea2fc8c 100644
--- a/tests/models/innovate/test_question.py
+++ b/tests/models/innovate/test_question.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.innovate.question import (
InnovateQuestion,
InnovateQuestionOption,
diff --git a/tests/models/legacy/test_offerwall_parse_response.py b/tests/models/legacy/test_offerwall_parse_response.py
index 56ba077..93f5c26 100644
--- a/tests/models/legacy/test_offerwall_parse_response.py
+++ b/tests/models/legacy/test_offerwall_parse_response.py
@@ -2,7 +2,7 @@ from __future__ import annotations
import json
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.legacy.bucket import (
BucketTask,
DurationSummary,
diff --git a/tests/models/legacy/test_user_question_answer_in.py b/tests/models/legacy/test_user_question_answer_in.py
index 3fdaa05..f14c1a7 100644
--- a/tests/models/legacy/test_user_question_answer_in.py
+++ b/tests/models/legacy/test_user_question_answer_in.py
@@ -4,19 +4,22 @@ import json
from collections.abc import Callable
from datetime import datetime
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
-from generalresearch.managers.thl.user_manager.user_manager import UserManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.legacy.questions import (
UserQuestionAnswers,
)
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.session import Session, Wall
from generalresearch.models.thl.user import User
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.user_manager.user_manager import UserManager
+ from generalresearch.models.thl.product import Product
+
class TestUserQuestionAnswers:
"""This is for the GRS POST submission that may contain multiple
diff --git a/tests/models/network/test_mtr.py b/tests/models/network/test_mtr.py
index 7f8a736..5d136c4 100644
--- a/tests/models/network/test_mtr.py
+++ b/tests/models/network/test_mtr.py
@@ -1,11 +1,15 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import faker
-from generalresearch.managers.network.tool_run import ToolRunManager
from generalresearch.models.network.mtr.execute import execute_mtr
from generalresearch.models.network.tool_run import ToolClass, ToolName
+if TYPE_CHECKING:
+ from generalresearch.managers.network.tool_run import ToolRunManager
+
fake = faker.Faker()
diff --git a/tests/models/network/test_nmap.py b/tests/models/network/test_nmap.py
index db39997..6adc9e4 100644
--- a/tests/models/network/test_nmap.py
+++ b/tests/models/network/test_nmap.py
@@ -1,14 +1,18 @@
from __future__ import annotations
import subprocess
+from typing import TYPE_CHECKING
import faker
-from generalresearch.managers.network.tool_run import ToolRunManager
from generalresearch.models.network.definitions import IPProtocol
from generalresearch.models.network.nmap.execute import execute_nmap
from generalresearch.models.network.nmap.result import NmapResult, PortState
-from generalresearch.models.network.tool_run import NmapRun, ToolClass, ToolName
+from generalresearch.models.network.tool_run import ToolClass, ToolName
+
+if TYPE_CHECKING:
+ from generalresearch.managers.network.tool_run import ToolRunManager
+ from generalresearch.models.network.tool_run import NmapRun
fake = faker.Faker()
diff --git a/tests/models/network/test_nmap_parser.py b/tests/models/network/test_nmap_parser.py
index 473a63f..fc9884b 100644
--- a/tests/models/network/test_nmap_parser.py
+++ b/tests/models/network/test_nmap_parser.py
@@ -1,14 +1,15 @@
from __future__ import annotations
import os
+from typing import TYPE_CHECKING
import pytest
from generalresearch.models.network.nmap.parser import parse_nmap_xml
-from generalresearch.models.network.nmap.result import (
- NmapResult,
- NmapTrace,
-)
+from generalresearch.models.network.nmap.result import NmapTrace
+
+if TYPE_CHECKING:
+ from generalresearch.models.network.nmap.result import NmapResult
@pytest.fixture
diff --git a/tests/models/network/test_rdns.py b/tests/models/network/test_rdns.py
index 1a15a28..82126dd 100644
--- a/tests/models/network/test_rdns.py
+++ b/tests/models/network/test_rdns.py
@@ -1,11 +1,15 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import faker
-from generalresearch.managers.network.tool_run import ToolRunManager
from generalresearch.models.network.rdns.execute import execute_rdns
from generalresearch.models.network.tool_run import ToolClass, ToolName
+if TYPE_CHECKING:
+ from generalresearch.managers.network.tool_run import ToolRunManager
+
fake = faker.Faker()
diff --git a/tests/models/spectrum/test_question.py b/tests/models/spectrum/test_question.py
index a44286d..d469530 100644
--- a/tests/models/spectrum/test_question.py
+++ b/tests/models/spectrum/test_question.py
@@ -2,7 +2,7 @@ from __future__ import annotations
from datetime import UTC, datetime
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.spectrum.question import (
SpectrumQuestion,
SpectrumQuestionClass,
diff --git a/tests/models/spectrum/test_survey.py b/tests/models/spectrum/test_survey.py
index bad6857..02c5d3f 100644
--- a/tests/models/spectrum/test_survey.py
+++ b/tests/models/spectrum/test_survey.py
@@ -3,7 +3,7 @@ from __future__ import annotations
from datetime import UTC, datetime
from decimal import Decimal
-from generalresearch.models import (
+from generalresearch.models.definitions import (
LogicalOperator,
Source,
TaskCalculationType,
diff --git a/tests/models/spectrum/test_survey_manager.py b/tests/models/spectrum/test_survey_manager.py
index 11dc01f..0300956 100644
--- a/tests/models/spectrum/test_survey_manager.py
+++ b/tests/models/spectrum/test_survey_manager.py
@@ -3,15 +3,17 @@ from __future__ import annotations
import logging
from datetime import UTC, datetime
from decimal import Decimal
-from typing import Any
+from typing import TYPE_CHECKING, Any
from pymysql import IntegrityError
from generalresearch.config import is_debug
-from generalresearch.managers.spectrum.survey import (
- SpectrumSurveyManager,
-)
-from generalresearch.sql_helper import SqlHelper
+
+if TYPE_CHECKING:
+ from generalresearch.managers.spectrum.survey import (
+ SpectrumSurveyManager,
+ )
+ from generalresearch.sql_helper import SqlHelper
logger = logging.getLogger()
diff --git a/tests/models/test_device.py b/tests/models/test_device.py
index 8e1251a..fdbd906 100644
--- a/tests/models/test_device.py
+++ b/tests/models/test_device.py
@@ -15,7 +15,7 @@ chromebook_ua_string = (
)
-from generalresearch.models import DeviceType
+from generalresearch.models.definitions import DeviceType
from generalresearch.models.device import parse_device_from_useragent
diff --git a/tests/models/test_finance.py b/tests/models/test_finance.py
index 72f4f4d..eabc877 100644
--- a/tests/models/test_finance.py
+++ b/tests/models/test_finance.py
@@ -4,6 +4,7 @@ from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from itertools import product as iter_product
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pandas as pd
@@ -16,25 +17,27 @@ from distributed.utils_test import (
)
from faker import Faker
-from generalresearch.incite.collections.thl_web import LedgerDFCollection
-from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
from generalresearch.incite.schemas.mergers.pop_ledger import (
numerical_col_names,
)
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
from generalresearch.models.thl.finance import (
BusinessBalances,
POPFinancial,
ProductBalances,
)
-from generalresearch.models.thl.ledger import LedgerAccount
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.pg_helper import PostgresConfig
from test_utils.incite.collections.conftest import ledger_collection
from test_utils.incite.mergers.conftest import pop_ledger_merge
+if TYPE_CHECKING:
+ from generalresearch.incite.collections.thl_web import LedgerDFCollection
+ from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.models.thl.ledger import LedgerAccount
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.pg_helper import PostgresConfig
+
fake = Faker()
diff --git a/tests/models/thl/test_adjustments.py b/tests/models/thl/test_adjustments.py
index c5b3f6b..cd75318 100644
--- a/tests/models/thl/test_adjustments.py
+++ b/tests/models/thl/test_adjustments.py
@@ -3,22 +3,27 @@ from __future__ import annotations
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.managers.thl.session import SessionManager
-from generalresearch.managers.thl.wall import WallManager
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.product import Product
from generalresearch.models.thl.session import (
- Session,
SessionAdjustedStatus,
Status,
StatusCode1,
- Wall,
WallAdjustedStatus,
)
-from generalresearch.models.thl.user import User
+
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.session import SessionManager
+ from generalresearch.managers.thl.wall import WallManager
+ from generalresearch.models.thl.session import (
+ Session,
+ Wall,
+ )
+ from generalresearch.models.thl.user import User
started1 = datetime(2023, 1, 1, tzinfo=UTC)
started2 = datetime(2023, 1, 1, 0, 10, 0, tzinfo=UTC)
diff --git a/tests/models/thl/test_buyer.py b/tests/models/thl/test_buyer.py
index 02093e2..ef97166 100644
--- a/tests/models/thl/test_buyer.py
+++ b/tests/models/thl/test_buyer.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.survey.buyer import BuyerCountryStat
diff --git a/tests/models/thl/test_contest/test_contest.py b/tests/models/thl/test_contest/test_contest.py
index e1053f4..ed8477b 100644
--- a/tests/models/thl/test_contest/test_contest.py
+++ b/tests/models/thl/test_contest/test_contest.py
@@ -1,11 +1,13 @@
from __future__ import annotations
from collections.abc import Callable
+from typing import TYPE_CHECKING
import pytest
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
+if TYPE_CHECKING:
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
class TestContest:
diff --git a/tests/models/thl/test_contest/test_leaderboard_contest.py b/tests/models/thl/test_contest/test_leaderboard_contest.py
index 99cfb37..c49776b 100644
--- a/tests/models/thl/test_contest/test_leaderboard_contest.py
+++ b/tests/models/thl/test_contest/test_leaderboard_contest.py
@@ -1,6 +1,7 @@
from __future__ import annotations
from datetime import UTC
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -8,7 +9,6 @@ from redis import Redis
from generalresearch.currency import USDCent
from generalresearch.managers.leaderboard.manager import LeaderboardManager
-from generalresearch.managers.thl.user_manager.user_manager import UserManager
from generalresearch.models.thl.contest import ContestPrize
from generalresearch.models.thl.contest.definitions import (
ContestPrizeKind,
@@ -21,10 +21,13 @@ from generalresearch.models.thl.contest.utils import (
distribute_leaderboard_prizes,
)
from generalresearch.models.thl.leaderboard import LeaderboardRow
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.user import User
from tests.models.thl.test_contest.test_contest import TestContest
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.user_manager.user_manager import UserManager
+ from generalresearch.models.thl.product import Product
+
class TestLeaderboardContest(TestContest):
diff --git a/tests/models/thl/test_contest/test_raffle_contest.py b/tests/models/thl/test_contest/test_raffle_contest.py
index 8812cb3..e71851e 100644
--- a/tests/models/thl/test_contest/test_raffle_contest.py
+++ b/tests/models/thl/test_contest/test_raffle_contest.py
@@ -2,6 +2,7 @@ from __future__ import annotations
from collections import Counter
from datetime import datetime
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -21,10 +22,12 @@ from generalresearch.models.thl.contest.definitions import (
ContestType,
)
from generalresearch.models.thl.contest.raffle import RaffleContest
-from generalresearch.models.thl.product import Product
-from generalresearch.models.thl.user import User
from tests.models.thl.test_contest.test_contest import TestContest
+if TYPE_CHECKING:
+ from generalresearch.models.thl.product import Product
+ from generalresearch.models.thl.user import User
+
class TestRaffleContest(TestContest):
diff --git a/tests/models/thl/test_marketplace_condition.py b/tests/models/thl/test_marketplace_condition.py
index 1dd25e8..6936a7c 100644
--- a/tests/models/thl/test_marketplace_condition.py
+++ b/tests/models/thl/test_marketplace_condition.py
@@ -3,7 +3,7 @@ from __future__ import annotations
import pytest
from pydantic import ValidationError
-from generalresearch.models import LogicalOperator
+from generalresearch.models.definitions import LogicalOperator
from generalresearch.models.thl.survey.condition import (
ConditionValueType,
MarketplaceCondition,
@@ -130,7 +130,7 @@ class TestMarketplaceCondition:
assert c.evaluate_criterion(user_qas) is None
def test_list_and_negate(self):
- from generalresearch.models import LogicalOperator
+ from generalresearch.models.definitions import LogicalOperator
from generalresearch.models.thl.survey.condition import (
ConditionValueType,
MarketplaceCondition,
@@ -247,7 +247,7 @@ class TestMarketplaceCondition:
assert ["1", "10", "11", "12", "2", "3", "4", "5"] == c.values
def test_ranges_infinity(self):
- from generalresearch.models import LogicalOperator
+ from generalresearch.models.definitions import LogicalOperator
from generalresearch.models.thl.survey.condition import (
ConditionValueType,
MarketplaceCondition,
diff --git a/tests/models/thl/test_payout.py b/tests/models/thl/test_payout.py
index daf1bd7..927687e 100644
--- a/tests/models/thl/test_payout.py
+++ b/tests/models/thl/test_payout.py
@@ -7,12 +7,16 @@ from pydantic import ValidationError
from generalresearch.currency import USDCent
from generalresearch.models.gr import Team
-from generalresearch.models.gr.business import Business, BusinessAddress, BusinessType
+from generalresearch.models.gr.business import (
+ Business,
+ BusinessAddress,
+ BusinessType,
+)
from generalresearch.models.thl.payout import (
BrokerageProductPayoutEvent,
BusinessPayoutEvent,
)
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
class TestBusinessPayoutEvent:
diff --git a/tests/models/thl/test_payout_format.py b/tests/models/thl/test_payout_format.py
index fe7aea5..56eafe3 100644
--- a/tests/models/thl/test_payout_format.py
+++ b/tests/models/thl/test_payout_format.py
@@ -1,14 +1,20 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import pytest
from pydantic import BaseModel
from generalresearch.models.thl.payout_format import (
PayoutFormatField,
- PayoutFormatType,
format_payout_format,
)
+if TYPE_CHECKING:
+ from generalresearch.models.thl.payout_format import (
+ PayoutFormatType,
+ )
+
class PayoutFormatTestClass(BaseModel):
payout_format: PayoutFormatType = PayoutFormatField
diff --git a/tests/models/thl/test_product.py b/tests/models/thl/test_product.py
index 880799a..cc0fa8e 100644
--- a/tests/models/thl/test_product.py
+++ b/tests/models/thl/test_product.py
@@ -5,6 +5,7 @@ import shutil
from collections.abc import Callable
from datetime import UTC, datetime, timedelta
from decimal import Decimal
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
@@ -12,22 +13,9 @@ from dask.distributed import Client as DaskClient
from pydantic import ValidationError
from generalresearch.currency import USDCent
-from generalresearch.incite.base import GRLDatasets
-from generalresearch.incite.collections.thl_web import LedgerDFCollection
-from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
-from generalresearch.managers.thl.ledger_manager.thl_ledger import (
- ThlLedgerManager,
-)
-from generalresearch.managers.thl.payout import PayoutEventManager
-from generalresearch.managers.thl.product import ProductManager
-from generalresearch.models import Source
-from generalresearch.models.gr.business import Business
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.finance import ProductBalances
-from generalresearch.models.thl.payout import (
- BrokerageProductPayoutEvent,
-)
from generalresearch.models.thl.product import (
- BrokerageProductPayoutEventManager,
IntegrationMode,
PayoutConfig,
PayoutTransformation,
@@ -39,9 +27,24 @@ from generalresearch.models.thl.product import (
SupplyConfig,
SupplyPolicy,
)
-from generalresearch.models.thl.session import Session
-from generalresearch.models.thl.user import User
-from generalresearch.redis_helper import RedisConfig
+
+if TYPE_CHECKING:
+ from generalresearch.incite.base import GRLDatasets
+ from generalresearch.incite.collections.thl_web import LedgerDFCollection
+ from generalresearch.incite.mergers.pop_ledger import PopLedgerMerge
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import (
+ ThlLedgerManager,
+ )
+ from generalresearch.managers.thl.payout import PayoutEventManager
+ from generalresearch.managers.thl.product import ProductManager
+ from generalresearch.models.gr.business import Business
+ from generalresearch.models.thl.payout import (
+ BrokerageProductPayoutEvent,
+ )
+ from generalresearch.models.thl.product import BrokerageProductPayoutEventManager
+ from generalresearch.models.thl.session import Session
+ from generalresearch.models.thl.user import User
+ from generalresearch.redis_helper import RedisConfig
class TestProduct:
diff --git a/tests/models/thl/test_product_userwalletconfig.py b/tests/models/thl/test_product_userwalletconfig.py
index b348981..b1bfa60 100644
--- a/tests/models/thl/test_product_userwalletconfig.py
+++ b/tests/models/thl/test_product_userwalletconfig.py
@@ -6,7 +6,7 @@ from random import shuffle as rshuffle
from generalresearch.models.thl.product import (
UserWalletConfig,
)
-from generalresearch.models.thl.wallet import PayoutType
+from generalresearch.models.thl.wallet.definitions import PayoutType
def all_equal(iterable: list[str]) -> bool:
diff --git a/tests/models/thl/test_soft_pair.py b/tests/models/thl/test_soft_pair.py
index 3cf835e..34902e2 100644
--- a/tests/models/thl/test_soft_pair.py
+++ b/tests/models/thl/test_soft_pair.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.dynata.survey import (
ConditionValueType,
DynataCondition,
diff --git a/tests/models/thl/test_user.py b/tests/models/thl/test_user.py
index 9c4b548..bc941d4 100644
--- a/tests/models/thl/test_user.py
+++ b/tests/models/thl/test_user.py
@@ -6,16 +6,19 @@ from datetime import UTC, datetime, timedelta, timezone
from decimal import Decimal
from random import choice as rand_choice
from random import randint
+from typing import TYPE_CHECKING
from uuid import uuid4
import pytest
from pydantic import ValidationError
-from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
-from generalresearch.managers.thl.userhealth import AuditLogManager
-from generalresearch.models.thl.product import Product
from generalresearch.models.thl.user import User
+if TYPE_CHECKING:
+ from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+ from generalresearch.managers.thl.userhealth import AuditLogManager
+ from generalresearch.models.thl.product import Product
+
class TestUserUserID:
diff --git a/tests/models/thl/test_user_metadata.py b/tests/models/thl/test_user_metadata.py
index a7b479d..7e84f3e 100644
--- a/tests/models/thl/test_user_metadata.py
+++ b/tests/models/thl/test_user_metadata.py
@@ -2,7 +2,7 @@ from __future__ import annotations
import pytest
-from generalresearch.models import MAX_INT32
+from generalresearch.models.definitions import MAX_INT32
from generalresearch.models.thl.user_profile import UserMetadata
diff --git a/tests/models/thl/test_wall.py b/tests/models/thl/test_wall.py
index 58e9825..61ca11d 100644
--- a/tests/models/thl/test_wall.py
+++ b/tests/models/thl/test_wall.py
@@ -7,7 +7,7 @@ from uuid import uuid4
import pytest
from pydantic import ValidationError
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import (
Status,
StatusCode1,
diff --git a/tests/models/thl/test_wall_session.py b/tests/models/thl/test_wall_session.py
index 48b89ea..40d3619 100644
--- a/tests/models/thl/test_wall_session.py
+++ b/tests/models/thl/test_wall_session.py
@@ -5,7 +5,7 @@ from decimal import Decimal
import pytest
-from generalresearch.models import Source
+from generalresearch.models.definitions import Source
from generalresearch.models.thl.definitions import Status, StatusCode1
from generalresearch.models.thl.session import Session, Wall
from generalresearch.models.thl.user import User
diff --git a/tests/test_postgres.py b/tests/test_postgres.py
index ed5a7ae..c53f644 100644
--- a/tests/test_postgres.py
+++ b/tests/test_postgres.py
@@ -1,12 +1,15 @@
import socket
import subprocess
from collections.abc import Callable
+from typing import TYPE_CHECKING
from pydantic import PostgresDsn
-from generalresearch.models.custom_types import InternalHostname, PostgresDict
from generalresearch.pg_helper import PostgresConfig
+if TYPE_CHECKING:
+ from generalresearch.models.custom_types import InternalHostname, PostgresDict
+
def is_port_open(host: InternalHostname, port: int = 5432, timeout: int = 3):
try: