mdfetch 0.9.4__tar.gz → 0.9.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.github/scripts/generate_resources.py +40 -7
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.github/workflows/ci.yml +1 -1
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.github/workflows/integration.yml +1 -1
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.github/workflows/publish.yml +10 -4
- mdfetch-0.9.5/.python-version +1 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/PKG-INFO +1 -1
- {mdfetch-0.9.4 → mdfetch-0.9.5}/pyproject.toml +1 -1
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/medium.py +5 -3
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/substack.py +1 -1
- mdfetch-0.9.5/uv.lock +945 -0
- mdfetch-0.9.4/.python-version +0 -1
- mdfetch-0.9.4/uv.lock +0 -767
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-analyze/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-checklist/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-clarify/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-constitution/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-converge/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-implement/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-plan/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-specify/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-tasks/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.agents/skills/speckit-taskstoissues/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-analyze/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-archive-run/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-checklist/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-clarify/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-constitution/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-converge/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-git-commit/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-git-feature/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-git-initialize/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-git-remote/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-git-validate/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-implement/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-plan/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-reconcile-run/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-specify/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-tasks/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.claude/skills/speckit-taskstoissues/SKILL.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.analyze.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.checklist.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.clarify.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.constitution.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.implement.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.plan.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.specify.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.tasks.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gemini/commands/speckit.taskstoissues.toml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gitattributes +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.github/copilot-instructions.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.github/dependabot.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.gitignore +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/.registry +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/archive/LICENSE +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/archive/README.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/archive/commands/archive.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/archive/extension.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/README.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/commands/speckit.git.commit.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/commands/speckit.git.feature.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/commands/speckit.git.initialize.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/commands/speckit.git.remote.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/commands/speckit.git.validate.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/config-template.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/extension.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/git-config.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/bash/create-new-feature.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/bash/git-common.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/powershell/create-new-feature.ps1 +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/reconcile/LICENSE +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/reconcile/README.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/reconcile/commands/reconcile.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions/reconcile/extension.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/extensions.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/feature.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/init-options.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/integration.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/integrations/agy.manifest.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/integrations/claude.manifest.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/integrations/gemini.manifest.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/integrations/speckit.manifest.json +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/memory/changelog.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/memory/constitution.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/memory/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/memory/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/scripts/bash/common.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/scripts/bash/setup-plan.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/scripts/bash/setup-tasks.sh +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/templates/checklist-template.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/templates/constitution-template.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/templates/plan-template.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/templates/spec-template.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/templates/tasks-template.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/workflows/speckit/workflow.yml +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/.specify/workflows/workflow-registry.json +0 -0
- /mdfetch-0.9.4/GEMINI.md → /mdfetch-0.9.5/AGENTS.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/CLAUDE.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/LICENSE +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/Makefile +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/README.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/contracts/api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/001-mdfetch-medium-extractor/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/contracts/public-api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/002-devto-provider/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/003-medium-freedium-fallback/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/003-medium-freedium-fallback/contracts/extract-api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/003-medium-freedium-fallback/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/003-medium-freedium-fallback/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/003-medium-freedium-fallback/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/003-medium-freedium-fallback/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/004-remove-backoff/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/004-remove-backoff/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/004-remove-backoff/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/004-remove-backoff/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/004-remove-backoff/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/contracts/extractor-api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/005-substack-provider/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/contracts/public-api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/006-thenewstack-provider/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/contracts/public-api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/007-dzone-provider/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/contracts/cli.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/008-mdfetch-cli/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/contracts/formula.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/contracts/tap-update-job.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/009-homebrew-tap-formula/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/contracts/extractor-contract.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/010-boomi-blog-provider/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/contracts/extractor-contract.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/011-konghq-blog-provider/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/contracts/cli.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/012-list-platforms/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/checklists/requirements.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/contracts/api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/contracts/cli.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/data-model.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/plan.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/quickstart.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/research.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/spec.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/specs/013-tavily-fallback/tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/__init__.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/base.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/cli.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/exceptions.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/fallback.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/__init__.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/boomi.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/devto.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/dzone.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/kong.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/providers/thenewstack.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/src/mdfetch/router.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/__init__.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/conftest.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/__init__.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/conftest.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/architecting-the-asynchronous-agent.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/boomi-data-consistency-saas-on-prem.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/boomi-gartner-magic-quadrant-ipaas-2026.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/boomi-real-time-vs-batch-data-integration.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/devto-integration-digest-december-2025.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/devto-integration-digest-july-2025.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/devto-integration-digest-march-2026.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/dzone-image-classification-pipeline-camel-djl.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/dzone-integration-patterns-fail-production.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/dzone-kiro-feature-to-requirements-design-tasks.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/from-drift-to-parity.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/integration-digest-december-2025.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/kong-ai-gateway-vs-litellm.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/kong-gateway-3-14.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/kong-insomnia-12-6.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/substack-api-trends-2025.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/substack-kafka-topic-types.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/thenewstack-api-mcp-agent.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/thenewstack-async-apis.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/thenewstack-developer-portal-api.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/thenewstack-json-schema-ai.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/snapshots/thenewstack-mcp-api-governance.md +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_boomi_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_cli_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_devto_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_dzone_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_fallback_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_kong_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_medium_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_substack_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/integration/test_thenewstack_integration.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/__init__.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_boomi_extractor.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_cli.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_devto_extractor.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_dzone_extractor.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_fallback.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_fetch_errors.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_kong_extractor.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_medium_extractor.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_router.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_silent.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_substack_extractor.py +0 -0
- {mdfetch-0.9.4 → mdfetch-0.9.5}/tests/unit/test_thenewstack_extractor.py +0 -0
|
@@ -1,20 +1,39 @@
|
|
|
1
|
-
import
|
|
1
|
+
import argparse
|
|
2
2
|
import json
|
|
3
|
+
import sys
|
|
3
4
|
import urllib.request
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
from packaging.markers import Marker, default_environment
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def target_environment(python_version):
|
|
10
|
+
"""Marker environment of the Homebrew install: macOS with the formula's Python."""
|
|
11
|
+
env = default_environment()
|
|
12
|
+
env.update(
|
|
13
|
+
python_version=python_version,
|
|
14
|
+
python_full_version=f"{python_version}.0",
|
|
15
|
+
sys_platform="darwin",
|
|
16
|
+
platform_system="Darwin",
|
|
17
|
+
os_name="posix",
|
|
18
|
+
)
|
|
19
|
+
return env
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def generate(python_version):
|
|
23
|
+
env = target_environment(python_version)
|
|
24
|
+
seen = {}
|
|
6
25
|
for line in sys.stdin:
|
|
7
26
|
line = line.strip()
|
|
8
27
|
# Skip empty lines, comments, and local editable installs
|
|
9
28
|
if not line or line.startswith('#') or line.startswith('-e'):
|
|
10
29
|
continue
|
|
11
30
|
|
|
12
|
-
#
|
|
31
|
+
# Keep only requirements whose environment marker holds for the Homebrew
|
|
32
|
+
# install. A lock resolved for several Python versions lists some
|
|
33
|
+
# packages once per version range, e.g. anyio for < 3.15 and >= 3.15.
|
|
13
34
|
if ';' in line:
|
|
14
35
|
req, marker = line.split(';', 1)
|
|
15
|
-
|
|
16
|
-
marker_clean = marker.replace(' ', '').replace('"', '').replace("'", "")
|
|
17
|
-
if 'sys_platform==win32' in marker_clean or 'sys_platform==linux' in marker_clean:
|
|
36
|
+
if not Marker(marker.strip()).evaluate(env):
|
|
18
37
|
continue
|
|
19
38
|
line = req.strip()
|
|
20
39
|
|
|
@@ -29,6 +48,16 @@ def generate():
|
|
|
29
48
|
# We don't need a resource block for mdfetch itself
|
|
30
49
|
if pkg == "mdfetch":
|
|
31
50
|
continue
|
|
51
|
+
|
|
52
|
+
# Homebrew keeps only the first resource of a given name, so a second
|
|
53
|
+
# one would be dropped silently. Fail instead of guessing.
|
|
54
|
+
if pkg in seen:
|
|
55
|
+
print(
|
|
56
|
+
f"ERROR: {pkg} is pinned twice ({seen[pkg]} and {ver}) for Python {python_version}",
|
|
57
|
+
file=sys.stderr,
|
|
58
|
+
)
|
|
59
|
+
sys.exit(1)
|
|
60
|
+
seen[pkg] = ver
|
|
32
61
|
|
|
33
62
|
url = f"https://pypi.org/pypi/{pkg}/{ver}/json"
|
|
34
63
|
try:
|
|
@@ -56,4 +85,8 @@ def generate():
|
|
|
56
85
|
print(f' end\n')
|
|
57
86
|
|
|
58
87
|
if __name__ == "__main__":
|
|
59
|
-
|
|
88
|
+
parser = argparse.ArgumentParser(
|
|
89
|
+
description="Generate Homebrew resource blocks from `uv export` output on stdin."
|
|
90
|
+
)
|
|
91
|
+
parser.add_argument("--python", required=True, help="Python version of the formula, e.g. 3.13")
|
|
92
|
+
generate(parser.parse_args().python)
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
- name: Install uv
|
|
18
18
|
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
19
19
|
- name: Set up Python
|
|
20
|
-
run: uv python pin 3.
|
|
20
|
+
run: uv python pin 3.14
|
|
21
21
|
- name: Validate version
|
|
22
22
|
run: |
|
|
23
23
|
TAG_VERSION=${GITHUB_REF_NAME#v}
|
|
@@ -71,8 +71,10 @@ jobs:
|
|
|
71
71
|
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
72
72
|
|
|
73
73
|
- name: Set up Python
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
# Matches `depends_on "python@3.13"` in Formula/md-fetch.rb and the
|
|
75
|
+
# --python 3.13 flag below, not the 3.14 used by the other jobs.
|
|
76
|
+
run: uv python pin 3.13
|
|
77
|
+
|
|
76
78
|
- name: Fetch sdist info from PyPI (with retry)
|
|
77
79
|
env:
|
|
78
80
|
VERSION: ${{ github.ref_name }}
|
|
@@ -104,7 +106,11 @@ jobs:
|
|
|
104
106
|
|
|
105
107
|
- name: Generate PyPI resource blocks
|
|
106
108
|
run: |
|
|
107
|
-
|
|
109
|
+
# --python must match `depends_on "python@X.Y"` in Formula/md-fetch.rb,
|
|
110
|
+
# so environment markers are evaluated for the Python Homebrew uses.
|
|
111
|
+
uv export --no-dev --no-hashes --format requirements-txt \
|
|
112
|
+
| uv run --no-project --with packaging python .github/scripts/generate_resources.py --python 3.13 \
|
|
113
|
+
> /tmp/resources.rb
|
|
108
114
|
|
|
109
115
|
- name: Clone homebrew-tap and update formula
|
|
110
116
|
env:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mdfetch
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.5
|
|
4
4
|
Summary: Extract article content from web platforms and return it as clean Markdown.
|
|
5
5
|
Project-URL: Homepage, https://github.com/stn1slv/md-fetch
|
|
6
6
|
Project-URL: Source, https://github.com/stn1slv/md-fetch
|
|
@@ -46,13 +46,15 @@ class MediumExtractor(BaseExtractor):
|
|
|
46
46
|
):
|
|
47
47
|
button.decompose()
|
|
48
48
|
|
|
49
|
-
for element in article.find_all(attrs={"data-testid": "post-sidebar"}):
|
|
49
|
+
for element in article.find_all(None, attrs={"data-testid": "post-sidebar"}):
|
|
50
50
|
element.decompose()
|
|
51
51
|
|
|
52
|
-
for element in article.find_all(
|
|
52
|
+
for element in article.find_all(
|
|
53
|
+
None, attrs={"data-testid": re.compile(r"share", re.IGNORECASE)}
|
|
54
|
+
):
|
|
53
55
|
element.decompose()
|
|
54
56
|
|
|
55
|
-
for element in article.find_all(attrs={"data-testid": "post-footer"}):
|
|
57
|
+
for element in article.find_all(None, attrs={"data-testid": "post-footer"}):
|
|
56
58
|
element.decompose()
|
|
57
59
|
|
|
58
60
|
for section in article.find_all("section"):
|
|
@@ -40,7 +40,7 @@ class SubstackExtractor(BaseExtractor):
|
|
|
40
40
|
self._replace_embeds_with_links(
|
|
41
41
|
[
|
|
42
42
|
e
|
|
43
|
-
for e in body.find_all(attrs={"data-component-name": True})
|
|
43
|
+
for e in body.find_all(None, attrs={"data-component-name": True})
|
|
44
44
|
if e.get("data-component-name") not in _safe_components
|
|
45
45
|
],
|
|
46
46
|
soup,
|