11 Commits

Author SHA1 Message Date
8c707840f1 ci(drone): adopt standard PyPI pipeline with tag==version guard
Replace .drone.yml with the canonical Type A template: the tag build now fails unless the git tag equals the pyproject.toml version (both in the publish pipeline and the backfill replay), preventing a tag from silently publishing nothing. Also drops the emoji log decorations to match the standard.
2026-10-15 18:50:44 +05:30
99f3e9d044 chore(drone): precise version check and unified pydoclint gate 2026-10-15 00:09:59 +05:30
b984dd5f42 docs: add wiki, complete lib nav, and rebuild mcp artifacts
- Add hand-written wiki (index, overview, how-to, extending, dev) with
  MkDocs config following the platform anatomy
- Complete the library nav by registering the csv and xlsx groups in
  docforge.nav.yml and docs/mkdocs.lib.yml
- Regenerate lib/MCP outputs with the rebuilt nav
2026-09-16 19:58:59 +05:30
0eaa6ee99a fix: flatten docs/lib layout, remove stale nested docs/lib/omniread
- Remove 21 stale files from docs/lib/omniread/ (core, csv, html, pdf,
  xlsx subdirs + index.md)
- Update docs/lib/index.md to remove stale omniread/ child link
- Regenerate README.md from root docstring (add 3 missing Xlsx entries:
  FileSystemXlsxClient, XlsxScraper, XlsxParser)
- Regenerate via doc-forge build --mkdocs --module omniread --module-is-source
2026-09-15 18:52:01 +05:30
a4d4874b39 chore: standardise .gitignore 2026-09-13 21:05:16 +05:30
22a0524823 chore: drop root mkdocs.yml; adopt per-kind docs/mkdocs.lib.yml as source of truth 2026-09-13 18:23:35 +05:30
cd06de5435 fix: modernize docstring types (List → list, Optional → X | None) to match signatures; regenerate lib/MCP docs (pydoclint zero) 2026-09-13 16:21:09 +05:30
14d89f5f91 feat: add type stubs for csv and xlsx subpackages 2026-09-12 15:26:30 +05:30
7283a3eafd docs: nest lib docs under docs/lib with lib-prefixed nav 2026-09-11 05:38:06 +05:30
3ebfa34733 docs: nest generated docs under docs/lib and docs/mcp 2026-09-10 21:15:47 +05:30
1e7e7c8a6c standardize packaging, tooling, docs, CI, and licensing 2026-09-10 18:49:06 +05:30
4 changed files with 26 additions and 32 deletions

View File

@@ -1,3 +1,21 @@
# 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
type: docker
@@ -49,12 +67,8 @@ steps:
commands:
- pip install --upgrade pip build
- |
if [ -z "$PIP_REPO_URL" ] || [ -z "$PIP_USERNAME" ] || [ -z "$PIP_PASSWORD" ]; then
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"
AUTH_URL="https://${PIP_USERNAME}:${PIP_PASSWORD}@$(echo "${PIP_REPO_URL#*://}" | sed '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..."
- python -m black --check .
- python -m ruff check .

View File

@@ -7,26 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.0.3] - 2026-10-17
### Added
- `py.typed` marker for PEP 561 type information.
- Type stubs for the `csv` and `xlsx` subpackages.
- Hand-written wiki, plus doc-forge-generated API reference under `docs/lib`
and MCP bundle under `docs/mcp` (per-kind MkDocs configs).
- `.drone.yml` CI with a quality-gate step (black, ruff, mypy, pytest).
- Canonical `docforge.nav.yml`, generated `mkdocs.yml` and `mcp_docs/` via doc-forge.
- MIT `LICENSE`.
### Changed
- 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.
- Standardized `pyproject.toml` (canonical packaging, lint tool config, extras).
### Fixed
- `XLSX`/`CSV` members added to the `content` type surface.
- 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
- Stub fixes for typed API surfaces.

View File

@@ -66,5 +66,4 @@ markdown_extensions:
extra_css:
- https://unpkg.com/dracula-prism/dist/css/dracula-prism.css
plugins:
- search
- docforge-linkfix
- search

View File

@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "omniread"
version = "0.0.3"
version = "0.0.1"
description = "Composable content ingestion framework with pluggable scrapers and parsers for HTML, PDF, and structured data"
readme = "README.md"
requires-python = ">=3.10"
@@ -171,14 +171,6 @@ module = [
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]
source = ["omniread"]
omit = [