From 1761509e0467726b49ee1c955a615d3a5993a1fe Mon Sep 17 00:00:00 2001 From: Sid Mohan Date: Fri, 30 May 2025 19:31:36 -0700 Subject: [PATCH 1/6] fix(ci): replace invalid --benchmark-skip flag with simple performance test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The --benchmark-skip flag is not a valid pytest argument, causing 'error: unrecognized arguments' in beta-release workflow. Replaced with simple performance test that doesn't require pytest-benchmark plugin. Changes: - Remove invalid --benchmark-skip flag - Use simple_performance_test.py for performance validation - Maintains performance verification without plugin dependencies - Runs with optimal performance settings (4 threads, no memory debugging) πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/beta-release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index fe747c33..fb91e2bb 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -126,9 +126,9 @@ jobs: echo "Running integration tests..." python run_tests.py -m integration --no-header - # Run benchmark tests with optimal performance (no memory debugging) - echo "Running benchmark tests with performance optimizations..." - OMP_NUM_THREADS=4 MKL_NUM_THREADS=4 OPENBLAS_NUM_THREADS=4 python -m pytest tests/benchmark_text_service.py -v --no-header --benchmark-skip + # Run simple performance validation (no pytest-benchmark dependency) + echo "Running simple performance validation..." + OMP_NUM_THREADS=4 MKL_NUM_THREADS=4 OPENBLAS_NUM_THREADS=4 python tests/simple_performance_test.py - name: Build package run: | From 9dc97ac3eddcee94d29ee85fb54c1cb5c6378af0 Mon Sep 17 00:00:00 2001 From: Sid Mohan Date: Fri, 30 May 2025 19:40:44 -0700 Subject: [PATCH 2/6] chore: set version to 4.2.0b1 for beta testing of unreleased 4.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since 4.2.0 has not been publicly released yet, creating 4.2.0b1 beta instead of jumping to 4.3.0b1. This allows proper beta testing of the current 4.2.0 feature set before the official release. πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- datafog/__about__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafog/__about__.py b/datafog/__about__.py index 0fd7811c..afcedcd6 100644 --- a/datafog/__about__.py +++ b/datafog/__about__.py @@ -1 +1 @@ -__version__ = "4.2.0" +__version__ = "4.2.0b1" From a036f02da478c7cf0fe2c25bbe8a0a36591ed318 Mon Sep 17 00:00:00 2001 From: Sid Mohan Date: Fri, 30 May 2025 19:41:24 -0700 Subject: [PATCH 3/6] fix(ci): improve beta versioning logic and use GH_PAT token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improvements to beta-release workflow: 1. Fixed version logic: Create beta of current version (4.2.0b1) instead of auto-incrementing minor version (4.3.0b1) for unreleased versions 2. Updated token usage: Use GH_PAT instead of GITHUB_TOKEN to resolve permission issues with git operations 3. Better versioning strategy: - 4.2.0 (unreleased) β†’ 4.2.0b1 (current approach) - 4.2.0b1 β†’ 4.2.0b2 (future increments) - Only increment minor version after official release πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/beta-release.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index fb91e2bb..313f3027 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -62,7 +62,7 @@ jobs: with: fetch-depth: 0 ref: dev - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.GH_PAT }} - name: Set up Python uses: actions/setup-python@v5 @@ -90,15 +90,18 @@ jobs: echo "Current version: $CURRENT_VERSION" if [[ $CURRENT_VERSION == *"b"* ]]; then + # Already a beta, increment beta number BASE_VERSION=$(echo $CURRENT_VERSION | cut -d'b' -f1) BETA_NUM=$(echo $CURRENT_VERSION | cut -d'b' -f2) BETA_VERSION="${BASE_VERSION}b$((BETA_NUM + 1))" elif [[ $CURRENT_VERSION == *"a"* ]]; then + # Alpha version, convert to beta BASE_VERSION=$(echo $CURRENT_VERSION | cut -d'a' -f1) BETA_VERSION="${BASE_VERSION}b1" else - BASE_VERSION=$(python3 -c "import sys; version='$CURRENT_VERSION'; parts=version.split('.'); parts[1]=str(int(parts[1])+1); parts[2]='0'; print('.'.join(parts))") - BETA_VERSION="${BASE_VERSION}b1" + # Stable version - create beta of current version for unreleased features + # Don't auto-increment minor version; use current version for beta testing + BETA_VERSION="${CURRENT_VERSION}b1" fi echo "beta_version=$BETA_VERSION" >> $GITHUB_OUTPUT @@ -137,7 +140,7 @@ jobs: - name: Create GitHub release env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GH_PAT }} run: | BETA_VERSION="${{ steps.version.outputs.beta_version }}" git add datafog/__about__.py setup.py @@ -169,7 +172,7 @@ jobs: - name: Cleanup old betas env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GH_PAT }} run: | BETA_RELEASES=$(gh release list --limit 30 | grep b | tail -n +6 | cut -f3) From 7609e491bd21390c8d23c635f71455404e0316b1 Mon Sep 17 00:00:00 2001 From: Sid Mohan Date: Fri, 30 May 2025 19:41:24 -0700 Subject: [PATCH 4/6] fix(ci): improve beta versioning logic and use GH_PAT token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improvements to beta-release workflow: 1. Fixed version logic: Create beta of current version (4.2.0b1) instead of auto-incrementing minor version (4.3.0b1) for unreleased versions 2. Updated token usage: Use GH_PAT instead of GITHUB_TOKEN to resolve permission issues with git operations 3. Better versioning strategy: - 4.2.0 (unreleased) β†’ 4.2.0b1 (current approach) - 4.2.0b1 β†’ 4.2.0b2 (future increments) - Only increment minor version after official release πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/beta-release.yml | 13 ++-- BETA_CHANGELOG.md | 102 +++++++++++++++++++++++++++++ scripts/generate_changelog.py | 28 ++++++-- 3 files changed, 132 insertions(+), 11 deletions(-) create mode 100644 BETA_CHANGELOG.md diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index fb91e2bb..313f3027 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -62,7 +62,7 @@ jobs: with: fetch-depth: 0 ref: dev - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.GH_PAT }} - name: Set up Python uses: actions/setup-python@v5 @@ -90,15 +90,18 @@ jobs: echo "Current version: $CURRENT_VERSION" if [[ $CURRENT_VERSION == *"b"* ]]; then + # Already a beta, increment beta number BASE_VERSION=$(echo $CURRENT_VERSION | cut -d'b' -f1) BETA_NUM=$(echo $CURRENT_VERSION | cut -d'b' -f2) BETA_VERSION="${BASE_VERSION}b$((BETA_NUM + 1))" elif [[ $CURRENT_VERSION == *"a"* ]]; then + # Alpha version, convert to beta BASE_VERSION=$(echo $CURRENT_VERSION | cut -d'a' -f1) BETA_VERSION="${BASE_VERSION}b1" else - BASE_VERSION=$(python3 -c "import sys; version='$CURRENT_VERSION'; parts=version.split('.'); parts[1]=str(int(parts[1])+1); parts[2]='0'; print('.'.join(parts))") - BETA_VERSION="${BASE_VERSION}b1" + # Stable version - create beta of current version for unreleased features + # Don't auto-increment minor version; use current version for beta testing + BETA_VERSION="${CURRENT_VERSION}b1" fi echo "beta_version=$BETA_VERSION" >> $GITHUB_OUTPUT @@ -137,7 +140,7 @@ jobs: - name: Create GitHub release env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GH_PAT }} run: | BETA_VERSION="${{ steps.version.outputs.beta_version }}" git add datafog/__about__.py setup.py @@ -169,7 +172,7 @@ jobs: - name: Cleanup old betas env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GH_PAT }} run: | BETA_RELEASES=$(gh release list --limit 30 | grep b | tail -n +6 | cut -f3) diff --git a/BETA_CHANGELOG.md b/BETA_CHANGELOG.md new file mode 100644 index 00000000..39c07dfb --- /dev/null +++ b/BETA_CHANGELOG.md @@ -0,0 +1,102 @@ +# Beta Release Notes + +_Beta Release: 2025-05-30_ + +⚠️ **This is a beta release for testing purposes.** + +## πŸš€ New Features + +- fix(ci): add diagnostics and plugin verification for benchmark tests +- fix(ci): add diagnostics and plugin verification for benchmark tests +- Merge pull request #104 from DataFog/feature/sample-notebooks +- Merge branch 'dev' into feature/sample-notebooks +- Fix segmentation fault in beta-release workflow and add sample notebook +- Merge pull request #103 from DataFog/feature/sample-notebooks +- Fix segmentation fault in beta-release workflow and add sample notebook +- Merge pull request #102 from DataFog/feature/gliner-integration-v420 +- Merge branch 'dev' into feature/gliner-integration-v420 +- Merge branch 'feature/gliner-integration-v420' of github.com:DataFog/datafog-python into feature/gliner-integration-v420 +- Merge pull request #101 from DataFog/feature/gliner-integration-v420 +- Merge branch 'dev' into feature/gliner-integration-v420 +- Merge pull request #100 from DataFog/feature/gliner-integration-v420 +- docs: add release guidelines to Claude.md +- feat(nlp): add GLiNER integration with smart cascading engine +- fix(deps): add pydantic-settings to cli and all extras +- Merge pull request #92 from DataFog/feature/automated-release-pipeline +- feat(ci): configure release workflows for 4.2.0 minor version bump +- feat(ci): add comprehensive alphaβ†’betaβ†’stable release cycle +- feat(ci): add nightly alpha builds for Monday-Thursday +- Merge pull request #91 from DataFog/feature/implement-weekly-release-plan +- feat(release): implement weekly release plan infrastructure + +## πŸ› Bug Fixes + +- fix(ci): improve beta versioning logic and use GH_PAT token +- fix(ci): replace invalid --benchmark-skip flag with simple performance test +- Merge branch 'dev' into fix/performance-regression +- Merge pull request #105 from DataFog/fix/performance-regression +- fix(ci): reset benchmark baseline to resolve false regression alerts +- fix(performance): eliminate memory debugging overhead from benchmarks +- fix(performance): eliminate redundant regex calls in structured output mode +- fix(performance): eliminate redundant regex calls in structured output mode +- fix(ci): handle segfault gracefully while preserving test validation +- fix(tests): make spaCy address detection test more robust +- fix(ci): improve GLiNER validation to confirm PyTorch exclusion +- fix(ci): exclude PyTorch dependencies entirely to prevent segfault +- fix(ci): eliminate PyTorch segfaults and enhance README with GLiNER examples +- fix(ci): workaround for PyTorch segfault in CI environments +- fix(ci): split test execution to prevent memory segfault +- fix(ci): reduce coverage reporting to prevent segmentation fault +- fix(tests): resolve final GLiNER test failures +- fix(tests): update GLiNER test mocking for proper import paths +- fix(tests): resolve GLiNER dependency mocking for CI environments +- Merge pull request #99 from DataFog/fix/github-actions-workflow-fixes +- Merge branch 'dev' into fix/github-actions-workflow-fixes +- fix(deps): move pydantic-settings to core dependencies +- fix(ci): install all extras and configure pytest-asyncio in workflows +- Merge pull request #98 from DataFog/fix/github-actions-workflow-fixes +- fix(ci): resolve YAML syntax errors in GitHub Actions workflows +- Merge pull request #96 from DataFog/codex/fix-failing-github-actions-in-workflows +- fix release workflows +- Merge pull request #95 from DataFog/hotfix/readme-fix +- Merge branch 'dev' into hotfix/readme-fix +- fix(ci): remove indentation from Python code in workflow commands +- fix(text): resolve missing Span import for structured output +- fix(ci): resolve YAML syntax issues in workflow files +- fix(ci): resolve prettier pre-commit hook configuration +- fix(ci): resolve YAML syntax issues in release workflows +- fix(lint): resolve flake8 string formatting warnings +- fix(ci): restore expected job names and consolidate workflows +- fix(imports): resolve flake8 E402 import order issues + +## πŸ“š Documentation + +- docs: streamline Claude.md development guide for v4.2.0 +- fixed readme + +## πŸ”§ Other Changes + +- chore: set version to 4.2.0b1 for beta testing of unreleased 4.2.0 +- resolve: merge conflicts with enhanced segfault detection +- release: prepare v4.2.0 with GLiNER integration +- updated workflows +- Merge pull request #94 from DataFog/hotfix/beta-workflow-yaml-syntax +- Merge branch 'dev' into hotfix/beta-workflow-yaml-syntax +- Merge pull request #93 from DataFog/hotfix/beta-workflow-yaml-syntax + +## πŸ“₯ Installation + +```bash +# Core package (lightweight) +pip install datafog + +# With all features +pip install datafog[all] +``` + +## πŸ“Š Metrics + +- Package size: ~2MB (core) +- Install time: ~10 seconds +- Tests passing: βœ… +- Commits this week: 68 diff --git a/scripts/generate_changelog.py b/scripts/generate_changelog.py index 8050a8c8..91b4f0f4 100755 --- a/scripts/generate_changelog.py +++ b/scripts/generate_changelog.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 """Generate changelog for weekly releases.""" +import argparse import re import subprocess from datetime import datetime @@ -60,7 +61,7 @@ def categorize_commits(commits): return categories -def generate_changelog(): +def generate_changelog(beta=False): """Generate changelog content.""" latest_tag = get_latest_tag() commits = get_commits_since_tag(latest_tag) @@ -70,8 +71,13 @@ def generate_changelog(): categories = categorize_commits(commits) - changelog = "# What's New\n\n" - changelog += f"*Released: {datetime.now().strftime('%Y-%m-%d')}*\n\n" + if beta: + changelog = "# Beta Release Notes\n\n" + changelog += f"*Beta Release: {datetime.now().strftime('%Y-%m-%d')}*\n\n" + changelog += "⚠️ **This is a beta release for testing purposes.**\n\n" + else: + changelog = "# What's New\n\n" + changelog += f"*Released: {datetime.now().strftime('%Y-%m-%d')}*\n\n" if categories["features"]: changelog += "## πŸš€ New Features\n" @@ -121,13 +127,23 @@ def generate_changelog(): if __name__ == "__main__": - changelog_content = generate_changelog() + parser = argparse.ArgumentParser(description="Generate changelog for releases") + parser.add_argument( + "--beta", action="store_true", help="Generate beta release changelog" + ) + parser.add_argument( + "--output", help="Output file name", default="CHANGELOG_LATEST.md" + ) + + args = parser.parse_args() + + changelog_content = generate_changelog(beta=args.beta) # Write to file for GitHub release - with open("CHANGELOG_LATEST.md", "w") as f: + with open(args.output, "w") as f: f.write(changelog_content) - print("βœ… Changelog generated: CHANGELOG_LATEST.md") + print(f"βœ… Changelog generated: {args.output}") print("\nPreview:") print("=" * 50) print(changelog_content) From a53d2f6d66fa40e011928f8cfe80054108945853 Mon Sep 17 00:00:00 2001 From: Sid Mohan Date: Fri, 30 May 2025 19:58:58 -0700 Subject: [PATCH 5/6] fix(ci): improve beta version detection to check existing git tags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fetch all tags before determining next beta version - Loop through beta numbers to find next available version (e.g., b1 β†’ b2 β†’ b3) - Prevents 'tag already exists' errors when v4.2.0b1 exists - Ensures automatic increment to v4.2.0b2, v4.2.0b3, etc. πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/beta-release.yml | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index 313f3027..79aae4d6 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -86,24 +86,34 @@ jobs: id: version run: | set -e + + # Fetch all tags to ensure we have the complete tag history + git fetch --tags + CURRENT_VERSION=$(python -c "from datafog.__about__ import __version__; print(__version__)") echo "Current version: $CURRENT_VERSION" + # Extract base version (remove any alpha/beta suffix) if [[ $CURRENT_VERSION == *"b"* ]]; then - # Already a beta, increment beta number BASE_VERSION=$(echo $CURRENT_VERSION | cut -d'b' -f1) - BETA_NUM=$(echo $CURRENT_VERSION | cut -d'b' -f2) - BETA_VERSION="${BASE_VERSION}b$((BETA_NUM + 1))" elif [[ $CURRENT_VERSION == *"a"* ]]; then - # Alpha version, convert to beta BASE_VERSION=$(echo $CURRENT_VERSION | cut -d'a' -f1) - BETA_VERSION="${BASE_VERSION}b1" else - # Stable version - create beta of current version for unreleased features - # Don't auto-increment minor version; use current version for beta testing - BETA_VERSION="${CURRENT_VERSION}b1" + BASE_VERSION=$CURRENT_VERSION fi + echo "Base version: $BASE_VERSION" + + # Find the next available beta version by checking existing tags + BETA_NUM=1 + while git tag -l "v${BASE_VERSION}b${BETA_NUM}" | grep -q "v${BASE_VERSION}b${BETA_NUM}"; do + echo "Tag v${BASE_VERSION}b${BETA_NUM} already exists" + BETA_NUM=$((BETA_NUM + 1)) + done + + BETA_VERSION="${BASE_VERSION}b${BETA_NUM}" + echo "Next available beta version: $BETA_VERSION" + echo "beta_version=$BETA_VERSION" >> $GITHUB_OUTPUT sed -i "s/__version__ = \".*\"/__version__ = \"$BETA_VERSION\"/" datafog/__about__.py sed -i "s/version=\".*\"/version=\"$BETA_VERSION\"/" setup.py From ae032694a417044c8387b085da0de15cd24b3b70 Mon Sep 17 00:00:00 2001 From: Sid Mohan Date: Fri, 30 May 2025 20:05:14 -0700 Subject: [PATCH 6/6] chore: clean up test changelog file after merge --- BETA_CHANGELOG.md | 102 ---------------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 BETA_CHANGELOG.md diff --git a/BETA_CHANGELOG.md b/BETA_CHANGELOG.md deleted file mode 100644 index 39c07dfb..00000000 --- a/BETA_CHANGELOG.md +++ /dev/null @@ -1,102 +0,0 @@ -# Beta Release Notes - -_Beta Release: 2025-05-30_ - -⚠️ **This is a beta release for testing purposes.** - -## πŸš€ New Features - -- fix(ci): add diagnostics and plugin verification for benchmark tests -- fix(ci): add diagnostics and plugin verification for benchmark tests -- Merge pull request #104 from DataFog/feature/sample-notebooks -- Merge branch 'dev' into feature/sample-notebooks -- Fix segmentation fault in beta-release workflow and add sample notebook -- Merge pull request #103 from DataFog/feature/sample-notebooks -- Fix segmentation fault in beta-release workflow and add sample notebook -- Merge pull request #102 from DataFog/feature/gliner-integration-v420 -- Merge branch 'dev' into feature/gliner-integration-v420 -- Merge branch 'feature/gliner-integration-v420' of github.com:DataFog/datafog-python into feature/gliner-integration-v420 -- Merge pull request #101 from DataFog/feature/gliner-integration-v420 -- Merge branch 'dev' into feature/gliner-integration-v420 -- Merge pull request #100 from DataFog/feature/gliner-integration-v420 -- docs: add release guidelines to Claude.md -- feat(nlp): add GLiNER integration with smart cascading engine -- fix(deps): add pydantic-settings to cli and all extras -- Merge pull request #92 from DataFog/feature/automated-release-pipeline -- feat(ci): configure release workflows for 4.2.0 minor version bump -- feat(ci): add comprehensive alphaβ†’betaβ†’stable release cycle -- feat(ci): add nightly alpha builds for Monday-Thursday -- Merge pull request #91 from DataFog/feature/implement-weekly-release-plan -- feat(release): implement weekly release plan infrastructure - -## πŸ› Bug Fixes - -- fix(ci): improve beta versioning logic and use GH_PAT token -- fix(ci): replace invalid --benchmark-skip flag with simple performance test -- Merge branch 'dev' into fix/performance-regression -- Merge pull request #105 from DataFog/fix/performance-regression -- fix(ci): reset benchmark baseline to resolve false regression alerts -- fix(performance): eliminate memory debugging overhead from benchmarks -- fix(performance): eliminate redundant regex calls in structured output mode -- fix(performance): eliminate redundant regex calls in structured output mode -- fix(ci): handle segfault gracefully while preserving test validation -- fix(tests): make spaCy address detection test more robust -- fix(ci): improve GLiNER validation to confirm PyTorch exclusion -- fix(ci): exclude PyTorch dependencies entirely to prevent segfault -- fix(ci): eliminate PyTorch segfaults and enhance README with GLiNER examples -- fix(ci): workaround for PyTorch segfault in CI environments -- fix(ci): split test execution to prevent memory segfault -- fix(ci): reduce coverage reporting to prevent segmentation fault -- fix(tests): resolve final GLiNER test failures -- fix(tests): update GLiNER test mocking for proper import paths -- fix(tests): resolve GLiNER dependency mocking for CI environments -- Merge pull request #99 from DataFog/fix/github-actions-workflow-fixes -- Merge branch 'dev' into fix/github-actions-workflow-fixes -- fix(deps): move pydantic-settings to core dependencies -- fix(ci): install all extras and configure pytest-asyncio in workflows -- Merge pull request #98 from DataFog/fix/github-actions-workflow-fixes -- fix(ci): resolve YAML syntax errors in GitHub Actions workflows -- Merge pull request #96 from DataFog/codex/fix-failing-github-actions-in-workflows -- fix release workflows -- Merge pull request #95 from DataFog/hotfix/readme-fix -- Merge branch 'dev' into hotfix/readme-fix -- fix(ci): remove indentation from Python code in workflow commands -- fix(text): resolve missing Span import for structured output -- fix(ci): resolve YAML syntax issues in workflow files -- fix(ci): resolve prettier pre-commit hook configuration -- fix(ci): resolve YAML syntax issues in release workflows -- fix(lint): resolve flake8 string formatting warnings -- fix(ci): restore expected job names and consolidate workflows -- fix(imports): resolve flake8 E402 import order issues - -## πŸ“š Documentation - -- docs: streamline Claude.md development guide for v4.2.0 -- fixed readme - -## πŸ”§ Other Changes - -- chore: set version to 4.2.0b1 for beta testing of unreleased 4.2.0 -- resolve: merge conflicts with enhanced segfault detection -- release: prepare v4.2.0 with GLiNER integration -- updated workflows -- Merge pull request #94 from DataFog/hotfix/beta-workflow-yaml-syntax -- Merge branch 'dev' into hotfix/beta-workflow-yaml-syntax -- Merge pull request #93 from DataFog/hotfix/beta-workflow-yaml-syntax - -## πŸ“₯ Installation - -```bash -# Core package (lightweight) -pip install datafog - -# With all features -pip install datafog[all] -``` - -## πŸ“Š Metrics - -- Package size: ~2MB (core) -- Install time: ~10 seconds -- Tests passing: βœ… -- Commits this week: 68