Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions .github/workflows/pypi-publish.yml
Original file line number Diff line number Diff line change
@@ -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/
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 6 additions & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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 = [
Expand Down
2 changes: 1 addition & 1 deletion src/snipepy/__init__.py
Original file line number Diff line number Diff line change
@@ -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 (
Expand Down
Loading