Skip to content

Commit 5f66259

Browse files
committed
consolidate conftests and clean up imports
1 parent fa5b5d5 commit 5f66259

File tree

36 files changed

+216
-512
lines changed

36 files changed

+216
-512
lines changed

fitbit_client/auth/callback_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def do_GET(self) -> None:
111111

112112
try:
113113
# Parse and validate query parameters
114-
query_params = self.parse_query_parameters()
114+
self.parse_query_parameters()
115115

116116
# Send success response
117117
self.send_success_response()

fitbit_client/auth/oauth.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,6 @@ def fetch_token(self, authorization_response: str) -> Dict[str, Any]:
202202
)
203203
except Exception as e:
204204
error_msg = str(e).lower()
205-
logger = getLogger("fitbit_client.oauth")
206205

207206
if "invalid_client" in error_msg:
208207
self.logger.error(

fitbit_client/exceptions.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
from typing import List
77
from typing import Optional
88

9-
# Local imports
10-
from fitbit_client.resources.constants import IntradayDetailLevel
11-
129

1310
class FitbitAPIException(Exception):
1411
"""Base exception for all Fitbit API errors"""

fitbit_client/resources/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ def _handle_json_response(self, calling_method: str, endpoint: str, response: Re
303303
"""
304304
try:
305305
content = response.json()
306-
except JSONDecodeError as e:
306+
except JSONDecodeError:
307307
self.logger.error(f"Invalid JSON response from {endpoint}")
308308
raise
309309

fitbit_client/resources/heartrate_timeseries.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from typing import Dict
66
from typing import Optional
77

8-
pass
98
# Local imports
109
from fitbit_client.resources.base import BaseResource
1110
from fitbit_client.resources.constants import Period

fitbit_client/resources/subscription.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from typing import Optional
77

88
# Local imports
9-
from fitbit_client.exceptions import ValidationException
109
from fitbit_client.resources.base import BaseResource
1110
from fitbit_client.resources.constants import SubscriptionCategory
1211

lint/add_file_headers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Standard library imports
44
from os import getcwd
55
from pathlib import Path
6+
from sys import exit
67
from typing import List
78

89
SEARCH_DIRS = ["tests", "fitbit_client", "lint"]
@@ -48,10 +49,13 @@ def main():
4849
"""Main script function."""
4950
project_root = Path(getcwd())
5051
python_files = find_python_files(project_root)
51-
52+
updated = 0
5253
for file_path in python_files:
54+
add_file_header(file_path, project_root)
5355
if add_file_header(file_path, project_root):
54-
print(f"Added or corrected path comment in {file_path.relative_to(project_root)}")
56+
updated = 1
57+
# print(f"Added or corrected path comment in {file_path.relative_to(project_root)}")
58+
exit(updated)
5559

5660

5761
if __name__ == "__main__":

pyproject.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,15 @@ build-backend = "pdm.backend"
4646
line-length = 100
4747
target-version = ['py312']
4848
preview = true
49+
quiet = true
4950
skip-magic-trailing-comma = true
5051

5152
[tool.isort]
5253
profile = "black"
5354
multi_line_output = 3
5455
force_single_line = true
5556
force_sort_within_sections = true
57+
quiet = true
5658
known_first_party = ["fitbit_client"]
5759
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
5860
import_heading_stdlib = "Standard library imports"
@@ -75,7 +77,7 @@ extensions = [
7577
testpaths = ["tests"]
7678
minversion = 6.0
7779
python_files = "test_*.py"
78-
addopts = "-ra -q --cov=fitbit_client --cache-clear --cov-report=term-missing --cov-report=html:cov_html -v --tb=native"
80+
addopts = "-ra -q --cov=fitbit_client --cache-clear --cov-report=term-missing --cov-report=html:_cov_html -v --tb=native"
7981
pythonpath = ["."]
8082

8183
# https://pytest-cov.readthedocs.io/en/latest/config.html
@@ -94,7 +96,7 @@ exclude_lines = [
9496
]
9597

9698
[tool.pdm.scripts]
97-
autoflake = { cmd = "autoflake . -ri --remove-all-unused-imports --quiet --exclude .venv/* --exclude _scripts/" }
99+
autoflake = { cmd = "autoflake . -r --remove-unused-variables --remove-all-unused-imports --ignore-pass-after-docstring --exclude ./.venv/*,./_scripts/*" }
98100
headers = { cmd = "python lint/add_file_headers.py" }
99101
format = { composite = [ "headers", "black .", "isort .", "mdformat .", ] }
100102

tests/conftest.py

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,39 @@
22

33
# Standard library imports
44
from unittest.mock import Mock
5+
from unittest.mock import patch
56

67
# Third party imports
78
from pytest import fixture
89
from requests import Response
910
from requests_oauthlib import OAuth2Session
1011

12+
# fmt: off
13+
# isort: off
14+
from fitbit_client.resources.active_zone_minutes import ActiveZoneMinutesResource
15+
from fitbit_client.resources.activity import ActivityResource
16+
from fitbit_client.resources.activity_timeseries import ActivityTimeSeriesResource
17+
from fitbit_client.resources.body import BodyResource
18+
from fitbit_client.resources.body_timeseries import BodyTimeSeriesResource
19+
from fitbit_client.resources.breathing_rate import BreathingRateResource
20+
from fitbit_client.resources.cardio_fitness_score import CardioFitnessScoreResource
21+
from fitbit_client.resources.device import DeviceResource
22+
from fitbit_client.resources.electrocardiogram import ElectrocardiogramResource
23+
from fitbit_client.resources.friends import FriendsResource
24+
from fitbit_client.resources.heartrate_timeseries import HeartrateTimeSeriesResource
25+
from fitbit_client.resources.heartrate_variability import HeartrateVariabilityResource
26+
from fitbit_client.resources.intraday import IntradayResource
27+
from fitbit_client.resources.irregular_rhythm_notifications import IrregularRhythmNotificationsResource
28+
from fitbit_client.resources.nutrition import NutritionResource
29+
from fitbit_client.resources.nutrition_timeseries import NutritionTimeSeriesResource
30+
from fitbit_client.resources.sleep import SleepResource
31+
from fitbit_client.resources.spo2 import SpO2Resource
32+
from fitbit_client.resources.subscription import SubscriptionResource
33+
from fitbit_client.resources.temperature import TemperatureResource
34+
from fitbit_client.resources.user import UserResource
35+
# isort: on
36+
# fmt: on
37+
1138

1239
@fixture
1340
def mock_oauth_session():
@@ -59,3 +86,135 @@ def _create_mock_response(status_code, json_data=None, content_type="application
5986
return response
6087

6188
return _create_mock_response
89+
90+
91+
@fixture
92+
def activity_resource(mock_oauth_session, mock_logger):
93+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
94+
return ActivityResource(oauth_session=mock_oauth_session, locale="en_US", language="en_US")
95+
96+
97+
@fixture
98+
def activity_timeseries_resource(mock_oauth_session, mock_logger):
99+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
100+
return ActivityTimeSeriesResource(
101+
oauth_session=mock_oauth_session, locale="en_US", language="en_US"
102+
)
103+
104+
105+
@fixture
106+
def azm_resource(mock_oauth_session, mock_logger):
107+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
108+
return ActiveZoneMinutesResource(
109+
oauth_session=mock_oauth_session, locale="en_US", language="en_US"
110+
)
111+
112+
113+
@fixture
114+
def body_resource(mock_oauth_session, mock_logger):
115+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
116+
return BodyResource(mock_oauth_session, "en_US", "en_US")
117+
118+
119+
@fixture
120+
def body_timeseries(mock_oauth_session, mock_logger):
121+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
122+
return BodyTimeSeriesResource(mock_oauth_session, "en_US", "en_US")
123+
124+
125+
@fixture
126+
def breathing_rate_resource(mock_oauth_session, mock_logger):
127+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
128+
return BreathingRateResource(mock_oauth_session, "en_US", "en_US")
129+
130+
131+
@fixture
132+
def cardio_fitness_score_resource(mock_oauth_session, mock_logger):
133+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
134+
return CardioFitnessScoreResource(mock_oauth_session, "en_US", "en_US")
135+
136+
137+
@fixture
138+
def device_resource(mock_oauth_session, mock_logger):
139+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
140+
return DeviceResource(mock_oauth_session, "en_US", "en_US")
141+
142+
143+
@fixture
144+
def ecg_resource(mock_oauth_session, mock_logger):
145+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
146+
return ElectrocardiogramResource(mock_oauth_session, "en_US", "en_US")
147+
148+
149+
@fixture
150+
def friends_resource(mock_oauth_session, mock_logger):
151+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
152+
return FriendsResource(oauth_session=mock_oauth_session, locale="en_US", language="en_US")
153+
154+
155+
@fixture
156+
def heartrate_resource(mock_oauth_session, mock_logger):
157+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
158+
return HeartrateTimeSeriesResource(
159+
oauth_session=mock_oauth_session, locale="en_US", language="en_US"
160+
)
161+
162+
163+
@fixture
164+
def hrv_resource(mock_oauth_session, mock_logger):
165+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
166+
return HeartrateVariabilityResource(mock_oauth_session, "en_US", "en_US")
167+
168+
169+
@fixture
170+
def intraday_resource(mock_oauth_session, mock_logger):
171+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
172+
return IntradayResource(oauth_session=mock_oauth_session, locale="en_US", language="en_US")
173+
174+
175+
@fixture
176+
def irn_resource(mock_oauth_session, mock_logger):
177+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
178+
return IrregularRhythmNotificationsResource(mock_oauth_session, "en_US", "en_US")
179+
180+
181+
@fixture
182+
def nutrition_resource(mock_oauth_session, mock_logger):
183+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
184+
return NutritionResource(oauth_session=mock_oauth_session, locale="en_US", language="en_US")
185+
186+
187+
@fixture
188+
def nutrition_timeseries_resource(mock_oauth_session, mock_logger):
189+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
190+
return NutritionTimeSeriesResource(mock_oauth_session, "en_US", "en_US")
191+
192+
193+
@fixture
194+
def sleep_resource(mock_oauth_session, mock_logger):
195+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
196+
return SleepResource(mock_oauth_session, "en_US", "en_US")
197+
198+
199+
@fixture
200+
def spo2_resource(mock_oauth_session, mock_logger):
201+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
202+
return SpO2Resource(mock_oauth_session, "en_US", "en_US")
203+
204+
205+
@fixture
206+
def subscription_resource(mock_oauth_session, mock_logger):
207+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
208+
return SubscriptionResource(mock_oauth_session, "en_US", "en_US")
209+
210+
211+
@fixture
212+
def temperature_resource(mock_oauth_session, mock_logger):
213+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
214+
return TemperatureResource(mock_oauth_session, "en_US", "en_US")
215+
216+
217+
@fixture
218+
def user_resource(mock_oauth_session, mock_logger):
219+
with patch("fitbit_client.resources.base.getLogger", return_value=mock_logger):
220+
return UserResource(mock_oauth_session, "en_US", "en_US")

tests/resources/active_zone_minutes/conftest.py

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)