From 96110d07d94bd9a5063198f41328f2d6f3706b63 Mon Sep 17 00:00:00 2001 From: Coding-Dev-Tools Date: Wed, 10 Jun 2026 06:02:55 -0400 Subject: [PATCH 1/4] ci: update publish workflow and package versions --- .github/workflows/publish.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index de19f7b..7e7074f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,27 +13,32 @@ on: - pypi - testpypi +permissions: + contents: read + id-token: write + jobs: publish: runs-on: ubuntu-latest environment: pypi - permissions: - id-token: write steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 + - uses: actions/checkout@v4 with: persist-credentials: false - name: Set up Python 3.12 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 + uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install dependencies run: | python -m pip install --upgrade pip - pip install build twine + pip install build twine ruff + + - name: Lint with ruff + run: ruff check src/ --target-version py310 - name: Build package run: python -m build @@ -43,10 +48,10 @@ jobs: - name: Publish to TestPyPI if: ${{ inputs.pypi_target == 'testpypi' }} - uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b + uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/ - name: Publish to PyPI if: ${{ inputs.pypi_target == 'pypi' || github.event_name == 'release' }} - uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b + uses: pypa/gh-action-pypi-publish@release/v1 From 45fbf95a60eaa45ec9a2cf6ee0f536dc0289d65f Mon Sep 17 00:00:00 2001 From: Coding-Dev-Tools Date: Tue, 23 Jun 2026 02:59:03 -0400 Subject: [PATCH 2/4] docs: add AGENTS.md for agent discoverability --- AGENTS.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..ec6b788 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,29 @@ +# datamorph + +## Purpose +Batch data format converter — stream files between CSV, JSON, Parquet, YAML, Avro, and more. Includes schema inference and validation. + +## Build & Test Commands +- Install: `pip install -e .` or `pip install datamorph-cli` +- Test: `pytest tests/` (or `python -m pytest tests/ -v --tb=short`) +- Lint: `ruff check .` +- Build: `pip install build twine && python -m build && twine check dist/*` +- CLI check: `datamorph --version && datamorph --help && datamorph formats` + +## Architecture +Key directories: +- `src/datamorph/` — Main package (CLI, converters, schema inference, validation) +- `tests/` — Test suite +- `.github/workflows/` — CI/CD (auto-code-review.yml, ci.yml, pages.yml, publish.yml) +- `dist/` — Built distributions + +## Conventions +- Language: Python 3.10+ +- Test framework: pytest +- CI: GitHub Actions (lint + test matrix: Python 3.10, 3.11, 3.12, 3.13) +- Linting: ruff +- Build system: hatchling +- Package layout: src/ layout +- Dependencies: click, rich, faker, flask, requests, jsonschema, werkzeug, pandas, pyarrow +- CLI entry point: datamorph.cli:cli +- Default branch: master \ No newline at end of file From ea6c21a57340ee48aa8f08e1e5a4015836499643 Mon Sep 17 00:00:00 2001 From: Coding-Dev-Tools Date: Wed, 24 Jun 2026 15:25:48 -0400 Subject: [PATCH 3/4] improve: expose package API and tighten CLI help --- src/datamorph/__init__.py | 24 ++++++++++++++++++++++-- src/datamorph/cli.py | 10 +--------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/datamorph/__init__.py b/src/datamorph/__init__.py index 49488b6..108f77c 100644 --- a/src/datamorph/__init__.py +++ b/src/datamorph/__init__.py @@ -1,2 +1,22 @@ -"""DataMorph CLI — Batch data format converter with streaming support.""" -__version__ = "0.1.1" +"""DataMorph package — batch format converter with streaming.""" +from .converters import ( + ConversionResult, + ValidationResult, + convert, + convert_batch, + detect_format, + supported_formats, + validate, +) +from . import __version__ + +__all__ = [ + "__version__", + "convert", + "convert_batch", + "validate", + "detect_format", + "supported_formats", + "ConversionResult", + "ValidationResult", +] diff --git a/src/datamorph/cli.py b/src/datamorph/cli.py index ebc080d..539cb7d 100644 --- a/src/datamorph/cli.py +++ b/src/datamorph/cli.py @@ -31,15 +31,7 @@ def cli() -> None: Supports CSV, JSON, JSONL, YAML, Parquet, Avro (and Protobuf with optional protobuf package). - Examples: - - datamorph convert input.csv output.parquet - - datamorph convert input.csv output.json --pretty - - datamorph batch ./data/ --from csv --to parquet - - datamorph schema input.parquet + Also try: batch, schema, formats, validate """ From c1c181196afebc252f39e81b19d24923c924552a Mon Sep 17 00:00:00 2001 From: Coding-Dev-Tools Date: Sat, 27 Jun 2026 05:31:39 -0400 Subject: [PATCH 4/4] chore: rename Revenue Holdings to DevForge in pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3fa0d39..5b2314e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ description = "CLI tool for batch converting between data formats (CSV, JSON, YA readme = "README.md" requires-python = ">=3.10" license = "MIT" -authors = [{name = "Revenue Holdings"}] +authors = [{name = "DevForge"}] keywords = ["data-converter", "csv", "json", "yaml", "parquet", "avro", "etl", "cli"] classifiers = [ "Development Status :: 4 - Beta",