From 08a4bd1271de0c71ea65cb64aba2268692acbe0f Mon Sep 17 00:00:00 2001 From: takunomi-build-bot Date: Thu, 19 Dec 2024 14:01:37 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Repository=20layout=20updated=20?= =?UTF-8?q?to=20latest=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit was automatically generated by a script: https://gitfub.space/Jmaa/repo-manager --- .gitea/workflows/python-package.yml | 16 +++++ .gitea/workflows/python-test.yml | 31 +++++++++ .gitea/workflows/python-version-check.yml | 28 ++++++++ .gitignore | 20 ++++++ LICENSE | 3 + README.md | 32 +++++++++ feed_chat_webhook/__init__.py | 5 +- feed_chat_webhook/_version.py | 1 + ruff.toml | 80 +++++++++++++++++++++++ setup.py | 54 +++++++++++++++ 10 files changed, 269 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/python-package.yml create mode 100644 .gitea/workflows/python-test.yml create mode 100644 .gitea/workflows/python-version-check.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 feed_chat_webhook/_version.py create mode 100644 ruff.toml create mode 100644 setup.py diff --git a/.gitea/workflows/python-package.yml b/.gitea/workflows/python-package.yml new file mode 100644 index 0000000..09275ea --- /dev/null +++ b/.gitea/workflows/python-package.yml @@ -0,0 +1,16 @@ +name: Package Python +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + +jobs: + Package: + uses: jmaa/workflows/.gitea/workflows/python-package.yaml@v6.21 + with: + REGISTRY_DOMAIN: gitfub.space + REGISTRY_ORGANIZATION: jmaa + secrets: + PIPY_REPO_USER: ${{ secrets.PIPY_REPO_USER }} + PIPY_REPO_PASS: ${{ secrets.PIPY_REPO_PASS }} diff --git a/.gitea/workflows/python-test.yml b/.gitea/workflows/python-test.yml new file mode 100644 index 0000000..27a600b --- /dev/null +++ b/.gitea/workflows/python-test.yml @@ -0,0 +1,31 @@ +name: Run Python tests (through Pytest) + +on: + push: + paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + +jobs: + Test: + runs-on: ubuntu-latest + container: + image: node:21-bookworm + steps: + - name: Setting up Python ${{ env.PYTHON_VERSION }} for ${{runner.arch}} ${{runner.os}} + run: | + apt-get update + apt-get install -y python3 python3-pip + - name: Check out repository code + if: success() + uses: actions/checkout@v3 + - name: Installing Python Dependencies + if: success() + run: python3 -m pip install --upgrade pip setuptools wheel build twine pytest pytest-cov --break-system-packages + - name: Installing Python Test Dependencies + if: success() && hashFiles('requirements_test.txt') != '' + run: python3 -m pip install --upgrade -r requirements_test.txt --break-system-packages + - name: Installing package + if: success() + run: python3 -m pip install .[test] --break-system-packages + - name: Test Python Code + if: success() + run: python3 -m pytest test --cov=feed_chat_webhook --cov-report html:htmlcov --cov-fail-under=0 diff --git a/.gitea/workflows/python-version-check.yml b/.gitea/workflows/python-version-check.yml new file mode 100644 index 0000000..9be567a --- /dev/null +++ b/.gitea/workflows/python-version-check.yml @@ -0,0 +1,28 @@ +name: Verify Python project can be installed, loaded and have version checked + +on: + push: + paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + +jobs: + Test: + runs-on: ubuntu-latest + container: + image: node:21-bookworm + steps: + - name: Setting up Python ${{ env.PYTHON_VERSION }} for ${{runner.arch}} ${{runner.os}} + run: | + apt-get update + apt-get install -y python3 python3-pip + - name: Check out repository code + if: success() + uses: actions/checkout@v3 + - name: Installing Python Dependencies + if: success() + run: python3 -m pip install --upgrade pip setuptools wheel build twine --break-system-packages + - name: Installing package + if: success() + run: python3 -m pip install . --break-system-packages + - name: Check version field + if: success() + run: python3 -c "import feed_chat_webhook; assert feed_chat_webhook.__version__ is not None" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..41180b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Program specific +/output/ +/deps/ +/secrets +/private_deps/ +/data/ +/config/ + +# Python +__pycache__/ +/build/ +/dist/ +*.egg-info/ +.mypy_cache/ + +# Python, Testing +/test/secrets.py +/.coverage +/.hypothesis/ +/htmlcov/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6a69d01 --- /dev/null +++ b/LICENSE @@ -0,0 +1,3 @@ +Copyright (c) 2024 Jon Michael Aanes + +All rights reserved. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d958ebf --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ + + + + + + +# Feed Chat Webhook + +![Test program/library](https://gitfub.space/Jmaa/feed-chat-webhook/actions/workflows/python-test.yml/badge.svg) + +Work in progress. + + + +## Dependencies + +All requirements can be installed easily using: + +```bash +pip install -r requirements.txt +``` + +Full list of requirements: + + +## License + +``` +Copyright (c) 2024 Jon Michael Aanes + +All rights reserved. +``` diff --git a/feed_chat_webhook/__init__.py b/feed_chat_webhook/__init__.py index fac5ef5..d4194f6 100644 --- a/feed_chat_webhook/__init__.py +++ b/feed_chat_webhook/__init__.py @@ -1 +1,4 @@ -"""# Feed Chat Webhook.""" +"""# Feed Chat Webhook. + +Work in progress. +""" diff --git a/feed_chat_webhook/_version.py b/feed_chat_webhook/_version.py new file mode 100644 index 0000000..b794fd4 --- /dev/null +++ b/feed_chat_webhook/_version.py @@ -0,0 +1 @@ +__version__ = '0.1.0' diff --git a/ruff.toml b/ruff.toml new file mode 100644 index 0000000..c397e12 --- /dev/null +++ b/ruff.toml @@ -0,0 +1,80 @@ +#[tool.ruff] +lint.select = [ 'ALL' ] +lint.ignore = [ + 'ANN', # Type annotations (lots of work.) + 'FBT', # Boolean trap is bullshit. + 'C90', 'PLR0911', 'PLR0915', 'PLR0913', # Code complexity measures are bullshit. + 'Q003', 'D205', # Format conflict + + 'TCH', # Microoptimization at the cost of readability + 'TID252', # I like relative imports + + 'D407', 'D413', # Weird documentation stuff + + 'D100', 'D101', 'D102', 'D103', 'D104', 'D105', 'D106', 'D107', 'D300', 'D401', # Missing docstrings (lots of work) + 'TD002', 'TD003', 'TD004', 'FIX', # Who cares about TODO standards? + "E501", 'PLR0912', 'PTH123', 'F405', 'E402', 'PLW0603', + + 'SIM102', + + 'TRY002', 'TRY003', +] + +# Autofix +lint.fixable = [ + 'SIM', 'C', 'Q', + 'UP035', 'UP004', 'UP032', 'UP006', 'UP007', 'I001', + 'F401', 'COM812', 'B011', 'PLR1722', 'PLR0402', 'S101', +] +lint.unfixable = ['SIM102', 'SIM114'] + +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".hg", + ".mypy_cache", + ".nox", + ".pants.d", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "venv", +] + +# Same as Black. +line-length = 88 + +# Allow unused variables when underscore-prefixed. +lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +# Assume Python 3.10. +target-version = "py310" + +[lint.flake8-quotes] +inline-quotes = "single" +multiline-quotes = "double" +docstring-quotes = "double" + +[format] +quote-style = "single" +indent-style = "space" +docstring-code-format = true + +[lint.per-file-ignores] +"test/*" = [ + "S101", # Test Asserts + "T201", # Debug prints + "PLR2004", # magic-value-comparison + 'SLF001', # Allow access to private members +] diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..01b211f --- /dev/null +++ b/setup.py @@ -0,0 +1,54 @@ +# WARNING +# +# THIS IS AN AUTOGENERATED FILE. +# +# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN. + +import re + +from setuptools import setup + +PACKAGE_NAME = 'feed_chat_webhook' + +PACKAGE_DESCRIPTION = """ +# Feed Chat Webhook. + +Work in progress. +""".strip() + +PACKAGE_DESCRIPTION_SHORT = """ +Work in progress.""".strip() + + +def parse_version_file(text: str) -> str: + match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text) + if match is None: + msg = 'Malformed _version.py file!' + raise Exception(msg) + return match.group(2) + + +with open(PACKAGE_NAME + '/_version.py') as f: + version = parse_version_file(f.read()) + + +REQUIREMENTS_MAIN = [] +REQUIREMENTS_TEST = [] + + +setup( + name=PACKAGE_NAME, + version=version, + description=PACKAGE_DESCRIPTION_SHORT, + long_description=PACKAGE_DESCRIPTION, + long_description_content_type='text/markdown', + author='Jon Michael Aanes', + author_email='jonjmaa@gmail.com', + url='https://gitfub.space/Jmaa/' + PACKAGE_NAME, + packages=[PACKAGE_NAME], + install_requires=REQUIREMENTS_MAIN, + extras_require={ + 'test': REQUIREMENTS_TEST, + }, + python_requires='>=3.9', +)