diff --git a/.env.default b/.env.default index f28208d..0c62acf 100644 --- a/.env.default +++ b/.env.default @@ -5,4 +5,4 @@ ADMIN_EMAIL="" ADMIN_FIRST_NAME="" BOT_NAME="" N8N_WEBHOOK_URL="" -WEBEX_API_KEY="" \ No newline at end of file +WEBEX_API_KEY="" diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0d35f6e..55e6153 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @luketainton \ No newline at end of file +* @luketainton diff --git a/.github/renovate.json b/.github/renovate.json index 4e3342a..979ffa0 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,47 +1,47 @@ { + "assignAutomerge": true, + "assigneesFromCodeOwners": true, + "baseBranches": [ + "main" + ], + "dependencyDashboardAutoclose": true, "extends": [ "config:base", ":semanticCommits", ":semanticCommitTypeAll(fix)" ], - "baseBranches": [ - "main" - ], - "platformCommit": true, - "dependencyDashboardAutoclose": true, - "assignAutomerge": true, - "assigneesFromCodeOwners": true, - "rebaseWhen": "behind-base-branch", - "rollbackPrs": true, "labels": [ "dependencies" ], "packageRules": [ { + "labels": [ + "linting" + ], "matchPackagePatterns": [ "black", "pylint" - ], - "labels": [ - "linting" ] }, { + "labels": [ + "unit-tests" + ], "matchPackagePatterns": [ "coverage", "pytest" - ], - "labels": [ - "unit-tests" ] } ], + "platformCommit": true, + "rebaseWhen": "behind-base-branch", + "rollbackPrs": true, "vulnerabilityAlerts": { + "commitMessagePrefix": "[SECURITY] ", "enabled": true, "labels": [ "security" ], - "commitMessagePrefix": "[SECURITY] ", "prCreation": "immediate" } -} \ No newline at end of file +} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..9298bce --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,60 @@ +fail_fast: false + +minimum_pre_commit_version: 3.8.0 + +default_install_hook_types: [pre-commit, commit-msg] + +default_language_version: + python: python3.11 + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: trailing-whitespace + - id: mixed-line-ending + - id: end-of-file-fixer + - id: requirements-txt-fixer + - id: check-yaml + - id: check-added-large-files + - id: check-ast + - id: check-docstring-first + - id: check-json + - id: check-merge-conflict + - id: check-toml + - id: check-xml + - id: detect-private-key + - id: no-commit-to-branch + - id: requirements-txt-fixer + - id: name-tests-test + args: [--pytest-test-first] + - id: pretty-format-json + args: [--autofix] + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.5.6 + hooks: + - id: ruff-format # Run the formatter. + - id: ruff # Run the linter. + args: [--fix] + + - repo: https://github.com/pycqa/isort + rev: 5.13.2 + hooks: + - id: isort + + - repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 + hooks: + - id: python-use-type-annotations + + - repo: https://github.com/asottile/pyupgrade + rev: v3.17.0 + hooks: + - id: pyupgrade + + - repo: https://github.com/compilerla/conventional-pre-commit + rev: v3.4.0 + hooks: + - id: conventional-pre-commit + stages: [commit-msg] diff --git a/app/utils/datetime.py b/app/utils/datetime.py index 472371c..f645d3b 100644 --- a/app/utils/datetime.py +++ b/app/utils/datetime.py @@ -1,18 +1,18 @@ #!/usr/bin/env python3 -from zoneinfo import ZoneInfo - from datetime import datetime +from zoneinfo import ZoneInfo def timestamp_to_date(timestamp: int) -> str: """Convert timestamp to date. - + Args: timestamp (int): Timestamp to convert. - + Returns: str: Date in the format YYYY-MM-DD. """ - return datetime.fromtimestamp(timestamp=timestamp, tz=ZoneInfo("UTC")).strftime("%Y-%m-%d") - + return datetime.fromtimestamp(timestamp=timestamp, tz=ZoneInfo("UTC")).strftime( + "%Y-%m-%d" + ) diff --git a/app/utils/n8n.py b/app/utils/n8n.py index 4c0f84b..6940174 100644 --- a/app/utils/n8n.py +++ b/app/utils/n8n.py @@ -6,10 +6,10 @@ from app.utils.config import config def __n8n_post(data: dict) -> bool: """Post data to N8N webhook URL. - + Args: data (dict): Data to post to webhook URL. - + Returns: bool: True if successful, else False. """ @@ -26,13 +26,13 @@ def __n8n_post(data: dict) -> bool: def submit_task(summary, description, completion_date, requestor) -> bool: """Submit task to N8N webhook URL. - + Args: summary (str): Summary of task. description (str): Description of task. completion_date (str): Completion date of task. requestor (str): Requestor of task. - + Returns: bool: True if successful, else False. """ @@ -49,10 +49,10 @@ def submit_task(summary, description, completion_date, requestor) -> bool: def get_tasks(requestor) -> bool: """Get tasks from N8N webhook URL. - + Args: requestor (str): Requestor of tasks. - + Returns: bool: True if successful, else False. """ diff --git a/docker-compose.yml b/docker-compose.yml index ee034ed..dab1a66 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,4 +7,4 @@ services: dockerfile: Dockerfile restart: unless-stopped env_file: .env -... \ No newline at end of file +...