Shared development tools for Python projects - character validation, circular import detection, and more
Project description
apdev (Python)
General-purpose development tools for Python projects.
Installation
pip install apdev
For development:
pip install apdev[dev]
Tools
check-chars
Validate that files contain only allowed characters (ASCII, common emoji, and technical symbols like arrows and box-drawing characters).
# Check default project directories (src/, tests/, examples/) and config files
apdev check-chars
# Check a directory recursively
apdev check-chars src/
# Check specific files
apdev check-chars src/mypackage/*.py
# Enable extra charset (e.g. Chinese characters)
apdev check-chars --charset chinese src/
Options:
--charset <name>— Enable a built-in charset preset (repeatable, e.g.chinese)--charset-file <path>— Load a custom charset JSON file (repeatable)- Environment variable
APDEV_EXTRA_CHARS— Comma-separated list of charset names or file paths, used when no--charset/--charset-fileis given
check-imports
Detect circular imports in a Python package.
# Specify package explicitly
apdev check-imports --package mypackage --src-dir src
# Or configure in pyproject.toml (see Configuration below)
apdev check-imports
release
Interactive release automation for publishing Python packages to PyPI and GitHub. Auto-detects project name from pyproject.toml and GitHub repo from git remote.
# Run with auto-detected version from pyproject.toml
apdev release
# Or specify version explicitly
apdev release 0.2.0
The command provides an interactive menu with steps:
- Version verification (checks
pyproject.tomland__init__.pymatch) - Status check (tag, build files, PyPI)
- Clean build files
- Build package (
python -m build) - Check package (
twine check) - Create git tag and push
- Create GitHub release (via
ghCLI or API) - Upload to PyPI (
twine upload)
Override auto-detection with environment variables:
PROJECT_NAME=mypackage GITHUB_REPO=owner/repo apdev release
Configuration
Add to your project's pyproject.toml so commands can run without CLI arguments:
[tool.apdev]
base_package = "mypackage" # Required by check-imports
src_dir = "src" # Source directory (default: "src")
With this config, both commands work out of the box:
apdev check-chars # Checks default project directories and config files
apdev check-imports # Reads base_package / src_dir from pyproject.toml
Pre-commit Integration
repos:
- repo: https://github.com/aipartnerup/apdev
rev: python/v0.1.0
hooks:
- id: check-chars
- id: check-imports
Or use as a local hook with the pip-installed package:
repos:
- repo: local
hooks:
- id: check-chars
name: apdev check-chars
entry: apdev check-chars
language: system
types_or: [text, python]
- id: check-imports
name: apdev check-imports
entry: apdev check-imports
language: system
pass_filenames: false
always_run: true
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apdev-0.2.3.tar.gz.
File metadata
- Download URL: apdev-0.2.3.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56f7e57dbfe729960a2e98b789eadaf77780fad6996b3694ad99f6d946bbdeb1
|
|
| MD5 |
a50e4edbef29c7cf09e3ab3340a5ac08
|
|
| BLAKE2b-256 |
3d9d217c4a4b853d0e760caf0f67cb3b591ca40e8266db1319a0d07009b33890
|
File details
Details for the file apdev-0.2.3-py3-none-any.whl.
File metadata
- Download URL: apdev-0.2.3-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5062eac2ce4eb291ab98e6470fd01334d4c4e62aee530e55c93bb725a22b7600
|
|
| MD5 |
a66cf8bc0d3aae07ec5902241678e79e
|
|
| BLAKE2b-256 |
0b720d4f8d13a8a7a5c878f71d31286037ba5e543b798f509835e512ec51fed8
|