From 49f071eb41d1407a8b7bbb6da0aed99818180856 Mon Sep 17 00:00:00 2001 From: programmer-666 Date: Thu, 20 Aug 2026 23:21:30 +0300 Subject: [PATCH 1/3] feat: migrate project to GitHub from Codeberg - Update CI runners from codeberg-small to ubuntu-latest - Update git clone URL to github.com/programmer-666/snipepy - Update project URLs (Homepage, Source, Documentation, Bug Tracker, Changelog) to GitHub - Update branch convention example in AGENTS.md --- .github/workflows/ci.yaml | 4 ++-- AGENTS.md | 2 +- CONTRIBUTING.md | 2 +- pyproject.toml | 10 +++++----- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 707be72..b5d552d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -9,7 +9,7 @@ on: jobs: static-analysis: name: Static Analysis - runs-on: codeberg-small + runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 @@ -42,7 +42,7 @@ jobs: test-matrix: name: Tests (Python ${{ matrix.python-version }}) - runs-on: codeberg-small + runs-on: ubuntu-latest timeout-minutes: 15 needs: static-analysis strategy: diff --git a/AGENTS.md b/AGENTS.md index 362a851..6260b64 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -609,7 +609,7 @@ docs/agents-branch-convention # Add this branch convention to AGENTS.md # CI ci/add-py314 # Add Python 3.14 to test matrix -ci/codeberg-small-runner # Switch runner from docker to codeberg-small +ci/github-actions-runner # Switch runner from codeberg to github-actions ci-tox/integration-env # Add tox -e integration environment # Refactoring diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b4f0461..56c178b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,7 +35,7 @@ Before writing any code, read [ARCHITECTURE.md](ARCHITECTURE.md) and [AGENTS.md] Always work inside a virtual environment. Never install packages into the system Python. ```bash -git clone https://codeberg.org/snipepy/snipepy.git +git clone https://github.com/programmer-666/snipepy.git cd snipepy python3 -m venv .venv diff --git a/pyproject.toml b/pyproject.toml index 50c11e8..66d3977 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,11 +36,11 @@ dependencies = [ ] [project.urls] -Homepage = "https://codeberg.org/programmer-666/snipepy" -Source = "https://codeberg.org/programmer-666/snipepy" -Documentation = "https://codeberg.org/programmer-666/snipepy/src/branch/main/docs" -"Bug Tracker" = "https://codeberg.org/programmer-666/snipepy/issues" -Changelog = "https://codeberg.org/programmer-666/snipepy/src/branch/main/CHANGELOG.md" +Homepage = "https://github.com/programmer-666/snipepy" +Source = "https://github.com/programmer-666/snipepy" +Documentation = "https://github.com/programmer-666/snipepy/tree/main/docs" +"Bug Tracker" = "https://github.com/programmer-666/snipepy/issues" +Changelog = "https://github.com/programmer-666/snipepy/tree/main/CHANGELOG.md" [project.optional-dependencies] dev = [ From e8386615bec5c7c42eecfad7a00b90a3d9ae5a54 Mon Sep 17 00:00:00 2001 From: programmer-666 Date: Thu, 20 Aug 2026 23:28:42 +0300 Subject: [PATCH 2/3] feat: release version 0.1.0 stable transition - Bump version from 0.1.0a5 to 0.1.0 - Update development status classifier to 5 - Production/Stable - Add changelog entry for first stable release Refs: v0.1.0 --- CHANGELOG.md | 19 +++++++++++++++++++ pyproject.toml | 2 +- src/snipepy/__init__.py | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9457898..23a8435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ ## Versions +## [0.1.0] - 2026-08-20 + +### Changed +- First stable release, transitioning from pre-release (alpha) to production/stable +- Development status classifier updated to `5 - Production/Stable` +- Project migrated from Codeberg to GitHub (`github.com/programmer-666/snipepy`) +- CI workflow runners updated from `codeberg-small` to `ubuntu-latest` + +### Added +- Support for Assets, Users, Licenses, Accessories, Components, Consumables, Locations, Companies, Categories, Manufacturers, Asset Models, Status Labels, Departments, Groups, Suppliers, Asset Maintenances, Settings, Reports, Custom Fields services + +### Fixed +- `LicenseSeat` model now correctly parses `assigned_user` field from SnipeIT API +- `AssetMaintenancesService.create()` now uses `maintenance_type_id` instead of `asset_maintenance_type` + +### Testing +- Comprehensive smoke tests across 14 SnipeIT versions (v4.8.0 through `latest`) +- Full unit test suite covering config, HTTP client, models, and all service classes + ## [0.1.0a5] - 2026-08-07 ### Added diff --git a/pyproject.toml b/pyproject.toml index 66d3977..f5d664b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ authors = [ {name = "Süha Arslan", email = "suha@suhaarslan.com"}, ] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", diff --git a/src/snipepy/__init__.py b/src/snipepy/__init__.py index 4ab0756..500fd4b 100644 --- a/src/snipepy/__init__.py +++ b/src/snipepy/__init__.py @@ -1,6 +1,6 @@ """Snipepy - Python wrapper for the SnipeIT REST API.""" -__version__ = "0.1.0a5" +__version__ = "0.1.0" from snipepy._config import Config from snipepy._http_client import ( From 42364ed44f984bba27f297d5856289ff44a3932d Mon Sep 17 00:00:00 2001 From: programmer-666 Date: Sat, 22 Aug 2026 11:41:44 +0300 Subject: [PATCH 3/3] feat(ci): add PyPI publish workflow with prerelease routing - Publish to PyPI for stable releases (release.prerelease=false) - Publish to TestPyPI for pre-releases (release.prerelease=true) - Use trusted publishing (OIDC) with id-token: write - environments: pypi_env, testpypi_env - Remove unused push.tags trigger --- .github/workflows/pypi-publish.yml | 82 ++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/pypi-publish.yml diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml new file mode 100644 index 0000000..8972f90 --- /dev/null +++ b/.github/workflows/pypi-publish.yml @@ -0,0 +1,82 @@ +name: Publish to PyPI + +on: + release: + types: [published] + +permissions: + contents: read + +jobs: + build: + name: Build distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install build tool + run: python -m pip install --upgrade build setuptools_scm + + - name: Build sdist and wheel + run: python -m build + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ + + publish-pypi: + name: Publish to PyPI + needs: build + if: >- + github.event_name == 'release' && + github.event.action == 'published' && + !github.event.release.prerelease + runs-on: ubuntu-latest + environment: + name: pypi_env + url: https://pypi.org/project/snipepy/ + permissions: + id-token: write + steps: + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + + publish-testpypi: + name: Publish to TestPyPI + needs: build + if: >- + github.event_name == 'release' && + github.event.action == 'published' && + github.event.release.prerelease + runs-on: ubuntu-latest + environment: + name: testpypi_env + url: https://test.pypi.org/project/snipepy/ + permissions: + id-token: write + steps: + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - name: Publish to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/