Compare commits
3 Commits
lib-standa
...
HEAD
| Author | SHA1 | Date | |
|---|---|---|---|
| bcf0fa0a4f | |||
| a91cb67487 | |||
| 650d3a19e8 |
26
.drone.yml
26
.drone.yml
@@ -1,21 +1,3 @@
|
|||||||
# Drone standard — Type A: PyPI package
|
|
||||||
#
|
|
||||||
# Canonical pipeline for internal Python libraries that ship a wheel/sdist to
|
|
||||||
# the private index (dagpipe, doc-forge, hexa, mail-intake, mongo-ops,
|
|
||||||
# omniread, openapi-first, py-jwt).
|
|
||||||
#
|
|
||||||
# Two pipelines ship together:
|
|
||||||
# build-and-publish-pypi — tag-triggered build + quality gate + publish.
|
|
||||||
# backfill-pypi-from-tags — custom-triggered replay of every git tag that is
|
|
||||||
# missing from the index (disaster recovery).
|
|
||||||
#
|
|
||||||
# Secrets (Drone): PIP_REPO_URL, PIP_USERNAME, PIP_PASSWORD.
|
|
||||||
# Copy to <repo>/.drone.yml unchanged; the package name and version are read
|
|
||||||
# from pyproject.toml, so no per-repo edits are required.
|
|
||||||
#
|
|
||||||
# Version guard: the tag build fails unless the git tag equals the version in
|
|
||||||
# pyproject.toml (see the versioning standard). This stops a tag from looking
|
|
||||||
# like a release while silently publishing nothing.
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
type: docker
|
||||||
@@ -67,8 +49,12 @@ steps:
|
|||||||
commands:
|
commands:
|
||||||
- pip install --upgrade pip build
|
- pip install --upgrade pip build
|
||||||
- |
|
- |
|
||||||
AUTH_URL="https://${PIP_USERNAME}:${PIP_PASSWORD}@$(echo "${PIP_REPO_URL#*://}" | sed 's:/*$::')/simple"
|
if [ -z "$PIP_REPO_URL" ] || [ -z "$PIP_USERNAME" ] || [ -z "$PIP_PASSWORD" ]; then
|
||||||
pip install --index-url "$AUTH_URL" --extra-index-url https://pypi.org/simple/ -U ".[dev]" "pydoclint>=0.9.1"
|
echo "PIP_REPO_URL / PIP_USERNAME / PIP_PASSWORD are not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- AUTH_URL="https://$PIP_USERNAME:$PIP_PASSWORD@$(echo "$PIP_REPO_URL" | sed -E 's|^[a-zA-Z]+://||; s|/*$||')/simple"
|
||||||
|
- pip install --index-url "$AUTH_URL" --extra-index-url https://pypi.org/simple/ -U ".[dev]" "pydoclint>=0.9.1"
|
||||||
- echo "Running quality gate..."
|
- echo "Running quality gate..."
|
||||||
- python -m black --check .
|
- python -m black --check .
|
||||||
- python -m ruff check .
|
- python -m ruff check .
|
||||||
|
|||||||
17
CHANGELOG.md
17
CHANGELOG.md
@@ -7,15 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.0.3] - 2026-10-17
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- `py.typed` marker for PEP 561 type information.
|
- `py.typed` marker for PEP 561 type information.
|
||||||
- `.drone.yml` CI with a quality-gate step (black, ruff, mypy, pytest).
|
- Type stubs for the `csv` and `xlsx` subpackages.
|
||||||
- Canonical `docforge.nav.yml`, generated `mkdocs.yml` and `mcp_docs/` via doc-forge.
|
- Hand-written wiki, plus doc-forge-generated API reference under `docs/lib`
|
||||||
|
and MCP bundle under `docs/mcp` (per-kind MkDocs configs).
|
||||||
- MIT `LICENSE`.
|
- MIT `LICENSE`.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Standardized `pyproject.toml` (canonical packaging, lint tool config, extras).
|
- Adopted the standard Type A PyPI CI pipeline: a `tag == version` guard and a
|
||||||
|
quality gate (black, ruff, mypy, pydoclint, pytest).
|
||||||
|
- Standardized `pyproject.toml` (canonical packaging, lint tool config, extras)
|
||||||
|
with a shared Google-style `[tool.pydoclint]` configuration.
|
||||||
|
- Docstring types modernised (`List` -> `list`, `Optional` -> `X | None`) to
|
||||||
|
match signatures.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- `XLSX`/`CSV` members added to the `content` type surface.
|
- `XLSX`/`CSV` members added to the `content` type surface.
|
||||||
- Stub fixes for typed API surfaces.
|
- Stub fixes for typed API surfaces.
|
||||||
|
|
||||||
|
[Unreleased]: https://git.aetoskia.com/aetos/omniread/compare/0.0.3...HEAD
|
||||||
|
[0.0.3]: https://git.aetoskia.com/aetos/omniread/compare/0.0.2...0.0.3
|
||||||
|
|||||||
@@ -67,3 +67,4 @@ extra_css:
|
|||||||
- https://unpkg.com/dracula-prism/dist/css/dracula-prism.css
|
- https://unpkg.com/dracula-prism/dist/css/dracula-prism.css
|
||||||
plugins:
|
plugins:
|
||||||
- search
|
- search
|
||||||
|
- docforge-linkfix
|
||||||
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "omniread"
|
name = "omniread"
|
||||||
version = "0.0.1"
|
version = "0.0.3"
|
||||||
description = "Composable content ingestion framework with pluggable scrapers and parsers for HTML, PDF, and structured data"
|
description = "Composable content ingestion framework with pluggable scrapers and parsers for HTML, PDF, and structured data"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
@@ -171,6 +171,14 @@ module = [
|
|||||||
ignore_missing_imports = true
|
ignore_missing_imports = true
|
||||||
|
|
||||||
|
|
||||||
|
[tool.pydoclint]
|
||||||
|
style = "google"
|
||||||
|
exclude = '\.pyi$|tests/'
|
||||||
|
allow-init-docstring = true
|
||||||
|
skip-checking-raises = true
|
||||||
|
check-class-attributes = false
|
||||||
|
|
||||||
|
|
||||||
[tool.coverage.run]
|
[tool.coverage.run]
|
||||||
source = ["omniread"]
|
source = ["omniread"]
|
||||||
omit = [
|
omit = [
|
||||||
|
|||||||
Reference in New Issue
Block a user