From d9b4af54bd21a1018eeba37c01d36fb0ae8b5159 Mon Sep 17 00:00:00 2001
From: takunomi-build-bot <build-bot@takunomi.space>
Date: Sun, 13 Apr 2025 14:30:19 +0200
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 ++++++
 CONVENTIONS.md                            | 17 +++++
 LICENSE                                   |  3 +
 README.md                                 | 49 ++++++++++++++
 aider_gitea/_version.py                   |  1 +
 ruff.toml                                 | 80 +++++++++++++++++++++++
 setup.py                                  | 51 +++++++++++++++
 10 files changed, 296 insertions(+)
 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 CONVENTIONS.md
 create mode 100644 LICENSE
 create mode 100644 README.md
 create mode 100644 aider_gitea/_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..2ee342a
--- /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', 'CONVENTIONS.md', '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..40cd5da
--- /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', 'CONVENTIONS.md', '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=aider_gitea --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..28092b4
--- /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', 'CONVENTIONS.md', '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 aider_gitea; assert aider_gitea.__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/CONVENTIONS.md b/CONVENTIONS.md
new file mode 100644
index 0000000..60cd60c
--- /dev/null
+++ b/CONVENTIONS.md
@@ -0,0 +1,17 @@
+When contributing code to this project, you MUST follow these principles:
+
+- Code should be easy to read and understand.
+- Keep the code as simple as possible. Avoid unnecessary complexity.
+- Use meaningful names for variables, functions, etc. Names should reveal intent.
+- Functions should be small and do one thing well. They should not exceed a few lines.
+- Function names should describe the action being performed.
+- Only use comments when necessary, as they can become outdated. Instead, strive to make the code self-explanatory.
+- When comments are used, they should add useful information that is not readily apparent from the code itself.
+- Properly handle errors and exceptions to ensure the software's robustness.
+- Use exceptions rather than error codes for handling errors.
+- Consider security implications of the code. Implement security best practices to protect against vulnerabilities and attacks.
+- Documentation should document semantics, not syntax.
+- Prefer importing modules, not individual items from modules.
+- Do not use f-strings in logging statements.
+- Loop variables and walrus-expression-variables should be deleted when
+  unneeded to keep scope clean, and to avoid accidental use.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..6ff6703
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,3 @@
+Copyright (c) 2025 Jon Michael Aanes
+
+All rights reserved.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..adae03e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,49 @@
+<!---                   WARNING                    --->
+<!---        THIS IS AN AUTO-GENERATED FILE        --->
+<!---  MANUAL CHANGES CAN AND WILL BE OVERWRITTEN  --->
+
+
+
+# 
+
+![Test program/library](https://gitfub.space/Jmaa/aider-gitea/actions/workflows/python-test.yml/badge.svg)
+
+
+
+
+
+## Dependencies
+
+This project requires [Python](https://www.python.org/) 3.8 or newer.
+
+This project does not have any library requirements 😎
+
+## Contributing
+
+Feel free to submit pull requests. Please follow the [Code Conventions](CONVENTIONS.md) when doing so.
+
+
+### Testing
+
+Testing requires the [pytest](https://docs.pytest.org/en/stable/) library.
+
+Run tests with the following command:
+
+```sh
+pytest test
+```
+
+Test coverage can be run using the [`pytest-cov`](https://pypi.org/project/pytest-cov/) extension:
+
+```sh
+pytest --cov=aider_gitea test
+```
+
+
+## License
+
+```
+Copyright (c) 2025 Jon Michael Aanes
+
+All rights reserved.
+```
diff --git a/aider_gitea/_version.py b/aider_gitea/_version.py
new file mode 100644
index 0000000..b794fd4
--- /dev/null
+++ b/aider_gitea/_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..4b7a5c6
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,51 @@
+# WARNING
+#
+# THIS IS AN AUTOGENERATED FILE.
+#
+# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN.
+
+import re
+
+from setuptools import setup
+
+PACKAGE_NAME = 'aider_gitea'
+
+PACKAGE_DESCRIPTION = """
+""".strip()
+
+PACKAGE_DESCRIPTION_SHORT = """
+""".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',
+)