From 6cf7ccbaa8306700e64ada19d6f99807743b2865 Mon Sep 17 00:00:00 2001
From: Max Nanis
Date: Fri, 21 Aug 2026 17:19:41 -0700
Subject: Ruff auto updates to 3.14
---
tests/models/spectrum/test_question.py | 14 +++++++-------
tests/models/spectrum/test_survey.py | 26 +++++++++++++-------------
tests/models/spectrum/test_survey_manager.py | 13 ++++++-------
3 files changed, 26 insertions(+), 27 deletions(-)
(limited to 'tests/models/spectrum')
diff --git a/tests/models/spectrum/test_question.py b/tests/models/spectrum/test_question.py
index ba118d7..4f92961 100644
--- a/tests/models/spectrum/test_question.py
+++ b/tests/models/spectrum/test_question.py
@@ -1,17 +1,17 @@
-from datetime import datetime, timezone
+from datetime import UTC, datetime, timezone
from generalresearch.models import Source
from generalresearch.models.spectrum.question import (
- SpectrumQuestionOption,
SpectrumQuestion,
- SpectrumQuestionType,
SpectrumQuestionClass,
+ SpectrumQuestionOption,
+ SpectrumQuestionType,
)
from generalresearch.models.thl.profiling.upk_question import (
UpkQuestion,
+ UpkQuestionChoice,
UpkQuestionSelectorMC,
UpkQuestionType,
- UpkQuestionChoice,
)
@@ -43,7 +43,7 @@ class TestSpectrumQuestion:
tags=None,
options=None,
class_num=SpectrumQuestionClass.CORE,
- created=datetime(2017, 8, 16, 7, 52, 7, 688000, tzinfo=timezone.utc),
+ created=datetime(2017, 8, 16, 7, 52, 7, 688000, tzinfo=UTC),
is_live=True,
source=Source.SPECTRUM,
category_id=None,
@@ -85,7 +85,7 @@ class TestSpectrumQuestion:
SpectrumQuestionOption(id="112", text="Female", order=1),
],
class_num=SpectrumQuestionClass.CORE,
- created=datetime(2017, 8, 16, 7, 52, 7, 688000, tzinfo=timezone.utc),
+ created=datetime(2017, 8, 16, 7, 52, 7, 688000, tzinfo=UTC),
is_live=True,
source=Source.SPECTRUM,
category_id=None,
@@ -160,7 +160,7 @@ class TestSpectrumQuestion:
SpectrumQuestionOption(id="999", text="None of the above", order=3),
],
class_num=SpectrumQuestionClass.EXTENDED,
- created=datetime(2017, 8, 16, 7, 52, 7, 688000, tzinfo=timezone.utc),
+ created=datetime(2017, 8, 16, 7, 52, 7, 688000, tzinfo=UTC),
is_live=True,
source=Source.SPECTRUM,
category_id=None,
diff --git a/tests/models/spectrum/test_survey.py b/tests/models/spectrum/test_survey.py
index b612a63..5e095a3 100644
--- a/tests/models/spectrum/test_survey.py
+++ b/tests/models/spectrum/test_survey.py
@@ -1,4 +1,4 @@
-from datetime import datetime, timezone
+from datetime import UTC, datetime, timezone
from decimal import Decimal
@@ -140,11 +140,11 @@ class TestSpectrumSurvey:
"survey_id": 29333264,
"survey_name": "Exciting New Survey #29333264",
"survey_status": 22,
- "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=timezone.utc),
+ "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=UTC),
"category": "Exciting New",
"category_code": 232,
- "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=timezone.utc),
- "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=timezone.utc),
+ "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=UTC),
+ "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=UTC),
"soft_launch": False,
"click_balancing": 0,
"price_type": 1,
@@ -212,7 +212,7 @@ class TestSpectrumSurvey:
survey_id="29333264",
survey_name="Exciting New Survey #29333264",
status=SpectrumStatus.LIVE,
- field_end_date=datetime(2024, 5, 23, 18, 18, 31, tzinfo=timezone.utc),
+ field_end_date=datetime(2024, 5, 23, 18, 18, 31, tzinfo=UTC),
category_code="232",
calculation_type=TaskCalculationType.COMPLETES,
requires_pii=False,
@@ -240,8 +240,8 @@ class TestSpectrumSurvey:
values=["18-64"],
)
},
- created_api=datetime(2024, 5, 20, 17, 48, 13, tzinfo=timezone.utc),
- modified_api=datetime(2024, 5, 20, 18, 18, 31, tzinfo=timezone.utc),
+ created_api=datetime(2024, 5, 20, 17, 48, 13, tzinfo=UTC),
+ modified_api=datetime(2024, 5, 20, 18, 18, 31, tzinfo=UTC),
updated=None,
)
assert expected_survey.model_dump_json() == s.model_dump_json()
@@ -255,11 +255,11 @@ class TestSpectrumSurvey:
"survey_id": 29333264,
"survey_name": "#29333264",
"survey_status": 22,
- "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=timezone.utc),
+ "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=UTC),
"category": "Exciting New",
"category_code": 232,
- "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=timezone.utc),
- "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=timezone.utc),
+ "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=UTC),
+ "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=UTC),
"soft_launch": False,
"click_balancing": 0,
"price_type": 1,
@@ -318,11 +318,11 @@ class TestSpectrumSurvey:
"survey_id": 29333264,
"survey_name": "#29333264",
"survey_status": 22,
- "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=timezone.utc),
+ "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=UTC),
"category": "Exciting New",
"category_code": 232,
- "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=timezone.utc),
- "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=timezone.utc),
+ "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=UTC),
+ "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=UTC),
"soft_launch": False,
"click_balancing": 0,
"price_type": 1,
diff --git a/tests/models/spectrum/test_survey_manager.py b/tests/models/spectrum/test_survey_manager.py
index 582093c..11970bf 100644
--- a/tests/models/spectrum/test_survey_manager.py
+++ b/tests/models/spectrum/test_survey_manager.py
@@ -1,22 +1,21 @@
import copy
import logging
-from datetime import timezone, datetime
+from datetime import UTC, datetime, timezone
from decimal import Decimal
from pymysql import IntegrityError
-
logger = logging.getLogger()
example_survey_api_response = {
"survey_id": 29333264,
"survey_name": "#29333264",
"survey_status": 22,
- "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=timezone.utc),
+ "field_end_date": datetime(2024, 5, 23, 18, 18, 31, tzinfo=UTC),
"category": "Exciting New",
"category_code": 232,
- "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=timezone.utc),
- "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=timezone.utc),
+ "crtd_on": datetime(2024, 5, 20, 17, 48, 13, tzinfo=UTC),
+ "mod_on": datetime(2024, 5, 20, 18, 18, 31, tzinfo=UTC),
"soft_launch": False,
"click_balancing": 0,
"price_type": 1,
@@ -66,7 +65,7 @@ class TestSpectrumSurvey:
assert settings.debug, "CRITICAL: Do not run this on production."
- now = datetime.now(tz=timezone.utc)
+ now = datetime.now(tz=UTC)
spectrum_rw.execute_sql_query(
query=f"""
DELETE FROM `{spectrum_rw.db}`.spectrum_survey
@@ -93,7 +92,7 @@ class TestSpectrumSurvey:
assert settings.debug, "CRITICAL: Do not run this on production."
- now = datetime.now(tz=timezone.utc)
+ now = datetime.now(tz=UTC)
spectrum_rw.execute_sql_query(
query=f"""
DELETE FROM `{spectrum_rw.db}`.spectrum_survey
--
cgit v1.2.3
From e2c5de703be45746bacaea4136f24440ff5a291c Mon Sep 17 00:00:00 2001
From: Max Nanis
Date: Mon, 24 Aug 2026 12:35:35 -0700
Subject: Ruff std replacements
---
generalresearch/__init__.py | 2 +-
generalresearch/config.py | 2 +-
generalresearch/grliq/managers/event_plotter.py | 4 +-
generalresearch/grliq/managers/forensic_data.py | 4 +-
generalresearch/grliq/managers/forensic_events.py | 76 ++++++++++------------
generalresearch/grliq/managers/forensic_results.py | 7 +-
generalresearch/grliq/models/custom_types.py | 3 +-
generalresearch/grliq/models/forensic_data.py | 1 -
generalresearch/grliq/models/forensic_summary.py | 3 +-
generalresearch/grliq/utils.py | 2 +-
generalresearch/grpc.py | 2 +-
generalresearch/incite/base.py | 10 +--
generalresearch/incite/collections/__init__.py | 18 ++---
generalresearch/incite/defaults.py | 2 +-
.../incite/mergers/foundations/__init__.py | 2 +-
.../incite/mergers/foundations/enriched_session.py | 10 +--
.../mergers/foundations/enriched_task_adjust.py | 5 +-
.../incite/mergers/foundations/enriched_wall.py | 8 +--
generalresearch/incite/mergers/ym_survey_wall.py | 10 ++-
generalresearch/incite/mergers/ym_wall_summary.py | 3 +-
generalresearch/incite/schemas/thl_web.py | 2 +-
generalresearch/locales/setup_json.py | 1 +
generalresearch/locales/timezone.py | 1 -
generalresearch/managers/cint/survey.py | 2 +-
generalresearch/managers/criteria.py | 4 +-
generalresearch/managers/dynata/survey.py | 2 +-
generalresearch/managers/events.py | 4 +-
generalresearch/managers/gr/authentication.py | 5 +-
generalresearch/managers/gr/team.py | 2 +-
generalresearch/managers/innovate/survey.py | 2 +-
generalresearch/managers/leaderboard/__init__.py | 3 +-
generalresearch/managers/leaderboard/manager.py | 2 +-
generalresearch/managers/morning/survey.py | 2 +-
generalresearch/managers/network/label.py | 9 ++-
generalresearch/managers/network/tool_run.py | 22 +++----
generalresearch/managers/precision/survey.py | 10 +--
generalresearch/managers/prodege/survey.py | 2 +-
generalresearch/managers/repdata/survey.py | 4 +-
generalresearch/managers/sago/survey.py | 2 +-
generalresearch/managers/spectrum/survey.py | 2 +-
generalresearch/managers/survey.py | 2 -
generalresearch/managers/thl/buyer.py | 2 +-
generalresearch/managers/thl/cashout_method.py | 2 +-
generalresearch/managers/thl/contest_manager.py | 3 +-
.../managers/thl/ledger_manager/conditions.py | 4 +-
.../managers/thl/ledger_manager/exceptions.py | 5 --
.../managers/thl/ledger_manager/ledger.py | 15 ++---
.../managers/thl/ledger_manager/thl_ledger.py | 22 +++----
generalresearch/managers/thl/product.py | 10 +--
generalresearch/managers/thl/profiling/question.py | 2 +-
generalresearch/managers/thl/profiling/uqa.py | 2 +-
generalresearch/managers/thl/profiling/user_upk.py | 2 +-
generalresearch/managers/thl/session.py | 11 +---
generalresearch/managers/thl/survey.py | 25 ++++---
generalresearch/managers/thl/task_adjustment.py | 7 +-
generalresearch/managers/thl/user_compensate.py | 2 +-
.../thl/user_manager/mysql_user_manager.py | 2 +-
.../managers/thl/user_manager/user_manager.py | 1 -
generalresearch/managers/thl/userhealth.py | 2 +-
generalresearch/managers/thl/wall.py | 2 +-
generalresearch/managers/thl/wallet/tango.py | 2 +-
generalresearch/models/admin/request.py | 2 +-
generalresearch/models/custom_types.py | 3 +-
generalresearch/models/dynata/survey.py | 4 +-
generalresearch/models/gr/authentication.py | 5 +-
generalresearch/models/gr/business.py | 6 +-
generalresearch/models/gr/team.py | 7 +-
generalresearch/models/legacy/questions.py | 3 -
generalresearch/models/network/mtr/execute.py | 2 +-
generalresearch/models/network/nmap/parser.py | 2 +-
generalresearch/models/network/rdns/execute.py | 2 +-
generalresearch/models/spectrum/survey.py | 2 +-
generalresearch/models/string_utils.py | 1 -
generalresearch/models/thl/contest/contest.py | 4 +-
.../models/thl/contest/contest_entry.py | 2 +-
generalresearch/models/thl/contest/examples.py | 7 --
generalresearch/models/thl/contest/io.py | 2 +-
generalresearch/models/thl/contest/leaderboard.py | 2 +-
generalresearch/models/thl/contest/milestone.py | 3 +-
generalresearch/models/thl/contest/raffle.py | 2 +-
generalresearch/models/thl/finance.py | 5 +-
generalresearch/models/thl/ipinfo.py | 2 +-
generalresearch/models/thl/ledger_example.py | 2 +-
generalresearch/models/thl/offerwall/cache.py | 2 +-
generalresearch/models/thl/payout_format.py | 12 ++--
generalresearch/models/thl/product.py | 2 -
.../models/thl/profiling/marketplace.py | 2 +-
.../models/thl/profiling/upk_question.py | 2 +-
.../models/thl/profiling/upk_question_answer.py | 2 +-
.../models/thl/profiling/user_question_answer.py | 2 +-
generalresearch/models/thl/session.py | 2 +-
generalresearch/models/thl/survey/__init__.py | 3 -
generalresearch/models/thl/survey/buyer.py | 2 +-
generalresearch/models/thl/survey/model.py | 2 +-
generalresearch/models/thl/survey/penalty.py | 2 +-
generalresearch/models/thl/task_adjustment.py | 2 +-
generalresearch/models/thl/user.py | 2 +-
generalresearch/models/thl/user_iphistory.py | 3 +-
generalresearch/models/thl/wallet/payout.py | 2 +-
generalresearch/pg_helper.py | 12 ++--
generalresearch/schemas/survey_stats.py | 2 +-
generalresearch/sql_helper.py | 19 ++----
generalresearch/thl_django/apps.py | 14 ++--
generalresearch/thl_django/fields.py | 3 +-
.../thl_django/migrations/0001_initial.py | 3 +-
..._live_alter_surveycategory_strength_and_more.py | 2 +-
...rveystat_surveystat_live_survey_idx_and_more.py | 2 +-
...ssion_thl_session_status_d578b7_idx_and_more.py | 2 +-
...p_portscanport_iplabel_mtr_portscan_and_more.py | 5 +-
generalresearch/thl_django/network/models.py | 5 +-
generalresearch/utils/enum.py | 4 +-
generalresearch/wall_status_codes/lucid.py | 2 +-
generalresearch/wall_status_codes/morning.py | 2 +-
generalresearch/wall_status_codes/pollfish.py | 2 +-
generalresearch/wall_status_codes/precision.py | 2 +-
generalresearch/wall_status_codes/repdata.py | 2 +-
test_utils/conftest.py | 3 +-
test_utils/grliq/conftest.py | 2 +-
test_utils/incite/conftest.py | 2 +-
test_utils/managers/conftest.py | 2 -
test_utils/models/conftest.py | 9 +--
test_utils/models/contest/conftest.py | 2 +-
test_utils/models/network/conftest.py | 2 +-
test_utils/models/thl/conftest.py | 2 +-
test_utils/spectrum/conftest.py | 2 +-
.../incite/collections/test_df_collection_base.py | 3 +-
.../collections/test_df_collection_item_base.py | 2 +-
.../collections/test_df_collection_item_thl_web.py | 11 +---
.../test_df_collection_thl_marketplaces.py | 7 +-
.../collections/test_df_collection_thl_web.py | 2 -
.../mergers/foundations/test_enriched_session.py | 7 +-
.../foundations/test_enriched_task_adjust.py | 7 --
.../mergers/foundations/test_enriched_wall.py | 23 +------
.../mergers/foundations/test_user_id_product.py | 15 +----
tests/incite/mergers/test_merge_collection.py | 3 +-
tests/incite/mergers/test_merge_collection_item.py | 9 +--
tests/incite/mergers/test_pop_ledger.py | 8 +--
tests/incite/mergers/test_ym_survey_merge.py | 17 +----
tests/incite/test_collection_base.py | 3 +-
tests/incite/test_collection_base_item.py | 2 +-
tests/incite/test_grl_flow.py | 11 ++--
tests/incite/test_interval_idx.py | 3 +-
tests/managers/gr/test_authentication.py | 3 -
tests/managers/gr/test_business.py | 4 +-
tests/managers/gr/test_team.py | 2 -
tests/managers/leaderboard.py | 2 +-
tests/managers/network/test_label.py | 2 +-
tests/managers/test_events.py | 15 ++---
tests/managers/test_userpid.py | 4 +-
.../managers/thl/test_contest/test_leaderboard.py | 8 +--
tests/managers/thl/test_contest/test_milestone.py | 14 +---
tests/managers/thl/test_contest/test_raffle.py | 14 +---
tests/managers/thl/test_harmonized_uqa.py | 2 +-
tests/managers/thl/test_ipinfo.py | 2 +-
tests/managers/thl/test_ledger/test_lm_accounts.py | 6 --
tests/managers/thl/test_ledger/test_lm_tx_locks.py | 23 ++-----
.../thl/test_ledger/test_thl_lm_accounts.py | 32 ++++-----
.../thl/test_ledger/test_thl_lm_bp_payout.py | 10 +--
tests/managers/thl/test_ledger/test_thl_lm_tx.py | 64 +++---------------
.../test_ledger/test_thl_lm_tx__user_payouts.py | 3 +-
tests/managers/thl/test_ledger/test_thl_pem.py | 7 +-
tests/managers/thl/test_ledger/test_user_txs.py | 3 +-
tests/managers/thl/test_ledger/test_wallet.py | 2 +-
tests/managers/thl/test_product.py | 9 ++-
tests/managers/thl/test_product_prod.py | 2 -
tests/managers/thl/test_profiling/test_user_upk.py | 2 +-
tests/managers/thl/test_session_manager.py | 7 +-
tests/managers/thl/test_survey.py | 2 +-
tests/managers/thl/test_survey_penalty.py | 1 -
tests/managers/thl/test_task_adjustment.py | 2 +-
tests/managers/thl/test_task_status.py | 2 +-
tests/managers/thl/test_user_manager/test_base.py | 4 +-
tests/managers/thl/test_user_manager/test_mysql.py | 1 -
.../thl/test_user_manager/test_user_fetch.py | 1 -
.../thl/test_user_manager/test_user_metadata.py | 1 -
tests/managers/thl/test_user_streak.py | 2 +-
tests/managers/thl/test_userhealth.py | 2 +-
tests/managers/thl/test_wall_manager.py | 13 ++--
tests/models/admin/test_report_request.py | 2 +-
tests/models/custom_types/test_aware_datetime.py | 2 +-
tests/models/custom_types/test_dsn.py | 1 -
tests/models/dynata/test_eligbility.py | 2 +-
tests/models/gr/test_authentication.py | 2 +-
tests/models/gr/test_business.py | 3 +-
tests/models/innovate/test_question.py | 6 +-
.../models/legacy/test_user_question_answer_in.py | 4 +-
tests/models/morning/test.py | 2 +-
tests/models/network/test_mtr.py | 4 +-
tests/models/network/test_nmap_parser.py | 1 +
tests/models/prodege/test_survey_participation.py | 2 +-
tests/models/spectrum/test_question.py | 2 +-
tests/models/spectrum/test_survey.py | 2 +-
tests/models/spectrum/test_survey_manager.py | 2 +-
tests/models/test_finance.py | 2 +-
tests/models/thl/question/test_question_info.py | 2 +-
tests/models/thl/test_adjustments.py | 30 ++-------
.../thl/test_contest/test_leaderboard_contest.py | 2 +-
tests/models/thl/test_ledger.py | 2 +-
tests/models/thl/test_payout.py | 5 +-
tests/models/thl/test_product.py | 2 +-
tests/models/thl/test_upkquestion.py | 12 +---
tests/models/thl/test_user.py | 6 +-
tests/models/thl/test_user_iphistory.py | 2 +-
tests/models/thl/test_user_streak.py | 2 +-
tests/models/thl/test_wall.py | 2 +-
tests/models/thl/test_wall_session.py | 2 +-
tests/sql_helper.py | 4 +-
207 files changed, 398 insertions(+), 725 deletions(-)
(limited to 'tests/models/spectrum')
diff --git a/generalresearch/__init__.py b/generalresearch/__init__.py
index 604b7e2..3b2ec3d 100644
--- a/generalresearch/__init__.py
+++ b/generalresearch/__init__.py
@@ -129,7 +129,7 @@ def synchronized(wrapped):
if lock is None:
lock = threading.RLock()
- setattr(context, "_synchronized_lock", lock)
+ context._synchronized_lock = lock
return lock
diff --git a/generalresearch/config.py b/generalresearch/config.py
index 76e3995..c6f41e8 100644
--- a/generalresearch/config.py
+++ b/generalresearch/config.py
@@ -1,7 +1,7 @@
from __future__ import annotations
import os
-from datetime import UTC, datetime, timezone
+from datetime import UTC, datetime
from pathlib import Path
from pydantic import DirectoryPath, Field, MariaDBDsn, PostgresDsn, RedisDsn
diff --git a/generalresearch/grliq/managers/event_plotter.py b/generalresearch/grliq/managers/event_plotter.py
index 0bba7c5..94b70ef 100644
--- a/generalresearch/grliq/managers/event_plotter.py
+++ b/generalresearch/grliq/managers/event_plotter.py
@@ -13,7 +13,7 @@ def make_events_svg(
mouse_events: list[MouseEvent], keyboard_events: list[KeyboardEvent]
) -> str:
if len(mouse_events) + len(keyboard_events) == 0:
- return f'"
+ return '"
t = np.array([pm.timeStamp for pm in mouse_events])
t_diff = t.max() - t.min()
@@ -88,7 +88,7 @@ def make_events_svg(
svg_elements.append(svg_multiline_text(text, cx + 5, cy - 5, font_size))
svg = (
- f'