From af65179f2ddc68898fdf1b10d487fb6eb8a6e96b Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Tue, 1 Oct 2024 16:14:51 +0200 Subject: [PATCH] Codequality --- favro_sync/__init__.py | 3 +++ favro_sync/favro_client.py | 10 +++++++--- favro_sync/favro_data_model.py | 29 +++++++++++++++++++---------- favro_sync/favro_fuse.py | 6 +++--- favro_sync/favro_markdown.py | 6 ++++-- test/test_client.py | 3 +++ test/test_init.py | 10 +++++----- 7 files changed, 44 insertions(+), 23 deletions(-) diff --git a/favro_sync/__init__.py b/favro_sync/__init__.py index f0d3065..95078c2 100644 --- a/favro_sync/__init__.py +++ b/favro_sync/__init__.py @@ -63,3 +63,6 @@ Following features are work in progress: - [ ] Get the correct last-modified date. - [ ] Improve cache behaviour. User and tags can have much longer cache times. """ + +__all__ = ['__version__'] +from _version import __version__ diff --git a/favro_sync/favro_client.py b/favro_sync/favro_client.py index 7547362..506bda0 100644 --- a/favro_sync/favro_client.py +++ b/favro_sync/favro_client.py @@ -111,7 +111,9 @@ class FavroClient: while page < num_pages: # Determine params for get_cards - request = self._get_cards_request(seq_id, todo_list, page=page, request_id=request_id) + request = self._get_cards_request( + seq_id, todo_list, page=page, request_id=request_id + ) # Run query logger.warning('Sending request: %s', request.url) @@ -133,7 +135,7 @@ class FavroClient: def _get_cards_request( self, seq_id: SeqId | None = None, - todo_list: bool=False, + todo_list: bool = False, request_id: None | str = None, page: None | int = None, ) -> requests.PreparedRequest: @@ -168,7 +170,9 @@ class FavroClient: return TagInfo.from_json(response.json()) def get_custom_field(self, tag_id: CustomFieldId) -> CustomFieldInfo: - response = self.session.get(URL_GET_CUSTOM_FIELD.format(custom_field_id=custom_field_id.raw_id)) + response = self.session.get( + URL_GET_CUSTOM_FIELD.format(custom_field_id=custom_field_id.raw_id) + ) return CustomFieldInfo.from_json(response.json()) def _invalidate_cache(self, card_id: CardId) -> None: diff --git a/favro_sync/favro_data_model.py b/favro_sync/favro_data_model.py index 16cc53e..ce0c828 100644 --- a/favro_sync/favro_data_model.py +++ b/favro_sync/favro_data_model.py @@ -33,14 +33,17 @@ class UserId: class OrganizationId: raw_id: str + @dataclasses.dataclass(frozen=True) class CustomFieldId: raw_id: str + @dataclasses.dataclass(frozen=True) class WidgetCommonId: raw_id: str + @dataclasses.dataclass(frozen=True) class CustomFieldItemId: raw_id: str @@ -81,7 +84,6 @@ class TagId: raw_id: str - @dataclasses.dataclass(frozen=True) class TagInfo: tag_id: TagId @@ -98,19 +100,22 @@ class TagInfo: json.get('color'), ) + @dataclasses.dataclass(frozen=True) class CustomFieldItem: - """ Custom field item object. + """Custom field item object. Fields: - customFieldItemId: The id of the custom field item. - name: The name of the custom field item. """ + custom_field_item_id: CustomFieldItemId name: str + @dataclasses.dataclass(frozen=True) class CustomFieldInfo: - """ Custom field object. + """Custom field object. Fields: - organizationId: The id of the organization that this custom field exists in. @@ -121,9 +126,10 @@ class CustomFieldInfo: - enabled: True if the custom field is currently enabled for the organization. - customFieldItems: The list of items that this custom field can have in case it is a selectable one. """ - organization_id : OrganizationId - custom_field_id : CustomFieldId - widget_common_id : WidgetCommonId + + organization_id: OrganizationId + custom_field_id: CustomFieldId + widget_common_id: WidgetCommonId type: str name: str enabled: bool @@ -131,7 +137,7 @@ class CustomFieldInfo: @staticmethod def from_json(json: dict[str, Any]) -> 'CustomFieldInfo': - pass # TODO + pass # TODO @dataclasses.dataclass(frozen=True) @@ -203,9 +209,11 @@ class Card: ], tags=[TagId(tag) for tag in json['tags']], creator_user_id=UserId(json['createdByUserId']), - creation_date=map_opt(datetime.datetime.fromisoformat,json.get('createdAt')), - start_date=map_opt(datetime.datetime.fromisoformat,json.get('startDate')), - due_date=map_opt(datetime.datetime.fromisoformat,json.get('dueDate')), + creation_date=map_opt( + datetime.datetime.fromisoformat, json.get('createdAt') + ), + start_date=map_opt(datetime.datetime.fromisoformat, json.get('startDate')), + due_date=map_opt(datetime.datetime.fromisoformat, json.get('dueDate')), assignments=[CardAssignment.from_json(ass) for ass in json['assignments']], custom_fields=[ CustomField.from_json(field) for field in json['customFields'] @@ -214,6 +222,7 @@ class Card: attachments=json['attachments'], # TODO ) + def map_opt(mapper, value): if value is not None: return mapper(value) diff --git a/favro_sync/favro_fuse.py b/favro_sync/favro_fuse.py index 5ed893d..fb17a93 100644 --- a/favro_sync/favro_fuse.py +++ b/favro_sync/favro_fuse.py @@ -200,10 +200,10 @@ class FavroFuse(fuse.Fuse): org_id=card.organization_id.raw_id, seq_id=card.seq_id.raw_id, ), - todo_list_completed = card.todo_list_completed, + todo_list_completed=card.todo_list_completed, archived=card.archived, - start_date= card.start_date, - due_date= card.due_date, + start_date=card.start_date, + due_date=card.due_date, ) return self.formatter.format_card_contents(card_contents) diff --git a/favro_sync/favro_markdown.py b/favro_sync/favro_markdown.py index bd12034..83904d9 100644 --- a/favro_sync/favro_markdown.py +++ b/favro_sync/favro_markdown.py @@ -21,6 +21,7 @@ FM_KEY_START_DATE = 'start-date' ################################################################################ + @dataclasses.dataclass(frozen=True) class CardContents: identifier: str | None @@ -111,8 +112,9 @@ class CardFileFormatter: # Card contents if description := card.description: if self.obsidian_mode: - description = re.sub(r'\-\s*\[\s*\]', '- [ ]', description, - flags=re.MULTILINE) + description = re.sub( + r'\-\s*\[\s*\]', '- [ ]', description, flags=re.MULTILINE + ) ls.append(description) del description fm = frontmatter.Post(''.join(ls), **frontmatter_data) diff --git a/test/test_client.py b/test/test_client.py index ba111af..af16262 100644 --- a/test/test_client.py +++ b/test/test_client.py @@ -28,12 +28,14 @@ def test_get_card(): assert len(card.attachments) == 0 assert len(card.custom_fields) == 2 + @needs_secrets def test_get_cards(): client = create_client() for card in client.get_cards(todo_list=True): assert_valid_card(card) + def create_client(): return FavroClient( favro_org_id=OrganizationId(secrets.favro_org_id()), @@ -42,6 +44,7 @@ def create_client(): read_only=True, ) + def assert_valid_card(card): assert card is not None assert card.name is not None diff --git a/test/test_init.py b/test/test_init.py index f5e8ce0..7cb1fea 100644 --- a/test/test_init.py +++ b/test/test_init.py @@ -1,6 +1,6 @@ def test_import(): - import favro_sync.favro_data_model # noqa - import favro_sync.favro_client # noqa - import favro_sync.favro_fuse # noqa - import favro_sync.favro_markdown # noqa - import favro_sync # noqa + import favro_sync + import favro_sync.favro_client + import favro_sync.favro_data_model + import favro_sync.favro_fuse + import favro_sync.favro_markdown # noqa:F401