diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72ea0b9..00d6ed7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,32 +1,20 @@ # Contributing to mkdocstrings-python-xref -This project's environment and developemtn tasks are managed using [pixi] -(previously it used conda and make). - ## Prerequisites -* [install pixi][pixi-install] - -## Development setup - -To (re)create a pixi development environment for this project, from inside -the source tree run: - -``` -pixi reinstall -``` +* [pixi][pixi] [must be installed][pixi-install] on your machine -This is actually optional, since pixi will automatically install the -environment the first time you run a command. +## Development tasks -See `pixi task list` for a list of available tasks. +All development tasks are managed using [pixi][pixi]. +Use `pixi task list` to see the available tasks. ## Versioning The versions will generally track the version of [mkdocstrings_python][] on which it depends. +[pixi]: https://pixi.sh/dev/ +[pixi-install]: https://pixi.sh/dev/advanced/installation/ [mkdocstrings_python]: https://github.com/mkdocstrings/python -[pixi]: https://pixi.sh/latest/ -[pixi-install]: https://pixi.sh/latest/installation/ diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 56ce4fc..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,5 +0,0 @@ -# Including requirements via manifest.in allows: -# - tox to find the same requirements file. -# TODO - removes this if TOX support is dropped or other way -# to tell tox to include this -include runtime-env.yml diff --git a/Makefile b/Makefile deleted file mode 100644 index 5285d69..0000000 --- a/Makefile +++ /dev/null @@ -1,245 +0,0 @@ -# This makefile is deprecated! - -CONDA := conda -ECHO := echo -RM := rm -RMDIR := $(RM) -rf -CAT := cat -TOUCH := touch - -# OS specific values -ifndef OS - # maxOs or linux - USERNAME := $(shell whoami) -else - # windows -endif - -COVERAGE_HTML := $(abspath htmlcov) - -# If you want to override default variables in your own source tree, -# define a custom.mk file, for instance to use the name 'garconf-dev' for -# the conda development environment, you could use the entry: -# -# override DEV_ENV := garconf-dev --include custom.mk - -# General env/build/deploy args -PACKAGE := mkdocstrings-python-xref -PACKAGE_VERSION_PATH := src/mkdocstrings_handlers/python_xref/VERSION -VERSION := $(strip $(file < $(PACKAGE_VERSION_PATH))) - -SRC_FILES := $(wildcard src/mkdocstrings_handlers/python_xref/*.py) $(PYTHON_VERSION_PATH) - -# Env names -DEV_ENV := mkxref-dev - -PIXI_RUN := pixi run -CONDA_RUN := $(PIXI_RUN) - -# Testing args -PYTEST_ARGS := -TOX_ARGS := -PYLINT_ARGS := -MYPY_ARGS := -RUFF_ARGS := - -DOC_DIR := docs -MKDOC_CONFIG := mkdocs.yml -MKDOC_FILES := $(MKDOC_CONFIG) $(wildcard $(DOC_DIR)/user/*.md) - -# 'make help' colors -TOP_COLOR :=\033[0;34m -SECTION_COLOR :=\033[0;32m -COLORLESS :=\033[0m - -help: - @$(ECHO) - @$(ECHO) "$(TOP_COLOR)=== Make targets ===$(COLORLESS)" - @$(ECHO) "$(SECTION_COLOR)--- conda environment ---$(COLORLESS)" - @$(ECHO) "create-dev - Create conda development environment named '$(DEV_ENV)'." - @$(ECHO) "update-dev - Update conda development environment '$(DEV_ENV)'." - @$(ECHO) "clean-dev - Remove $(DEV_ENV) conda environment" - @$(ECHO) - @$(ECHO) "$(SECTION_COLOR)--- test ---$(COLORLESS)" - @$(ECHO) "pytest - Run pytest in '$(DEV_ENV)' environment." - @$(ECHO) "test - Run tests and linting in '$(DEV_ENV)' environment." - @$(ECHO) "coverage-test - Runs pytest instrumented for coverage and generates html report" - @$(ECHO) "coverage-show - Open html coverage report in a web browser." - @$(ECHO) - @$(ECHO) "$(SECTION_COLOR)--- lint ---$(COLORLESS)" - @$(ECHO) "lint - Run linting commands in '$(DEV_ENV)' environment." - @$(ECHO) "ruff - Run ruff in '$(DEV_ENV)' environment." - @$(ECHO) "mypy - Run mypy in '$(DEV_ENV)' environment." - @$(ECHO) - @$(ECHO) "$(SECTION_COLOR)--- build ---$(COLORLESS)" - @$(ECHO) "build - Build wheel" - @$(ECHO) "build-wheel - Build wheel." - @$(ECHO) "build-conda - Build conda package (requires whl2conda)" - @$(ECHO) "unpacked-wheel - Build wheel and unpack it (for debugging)" - @$(ECHO) - @$(ECHO) "$(SECTION_COLOR)--- upload ---$(COLORLESS)" - @$(ECHO) "upload - Upload wheel to pypi (requires authorization)" - @$(ECHO) "check-upload - Verify file for upload" - @$(ECHO) - @$(ECHO) "$(SECTION_COLOR)--- documentation ---$(COLORLESS)" - @$(ECHO) "doc - Build HTML documentation in site/ directory." - @$(ECHO) "doc-strict - Build documentation but fail if any warnings" - @$(ECHO) "showdoc - Show HTML documentation using local HTML server." - @$(ECHO) - @$(ECHO) "$(SECTION_COLOR)--- cleanup ---$(COLORLESS)" - @$(ECHO) "clean - Remove generated files." - @$(ECHO) "clean-test - Remove generated test files including tox environments." - @$(ECHO) "clean-doc - Remove generated documentation files." - @$(ECHO) - @$(ECHO) "$(TOP_COLOR)====================$(COLORLESS)" - @$(ECHO) - -dev-install: - $(CONDA_RUN) pip install -e . --no-deps --no-build-isolation - -create-dev: - $(CONDA) env create -f environment.yml --yes - $(MAKE) dev-install - -createdev: create-dev - -update-dev: - $(CONDA) env update -f environment.yml - $(MAKE) dev-install - -updatedev: update-dev - -create-ci-env: create-dev - -clean-dev: - -$(CONDA) env remove -n $(DEV_ENV) - -pytest: - $(CONDA_RUN) pytest -sv -ra $(PYTEST_ARGS) tests - -test: lint pytest - -test-all: test tox - -.coverage: - @$(CONDA_RUN) pytest -ra $(PYTEST_ARGS) --cov --cov-report=html --cov-report=term -- tests - -coverage-test: - @$(MAKE) -B .coverage - -coverage: coverage-test - -coverage-show: - @$(CONDA_RUN) python -m webbrowser file://$(COVERAGE_HTML)/index.html - -pylint: - $(CONDA_RUN) pylint src/mkdocstrings_handlers tests $(PYLINT_ARGS) - -ruff: - $(CONDA_RUN) ruff check src/mkdocstrings_handlers tests $(RUFF_ARGS) - -mypy: - $(CONDA_RUN) mypy $(MYPY_ARGS) - -lint: ruff mypy - -WHEEL_FILE := dist/$(subst -,_,$(PACKAGE))-$(VERSION)-py3-none-any.whl -CONDA_FILE := dist/$(PACKAGE)-$(VERSION)-py_0.conda - -build-sdist: - $(CONDA_RUN) python -m build --sdist --no-isolation --outdir dist - -$(WHEEL_FILE): - $(CONDA_RUN) pip wheel . --no-deps --no-build-isolation -w dist - -build-wheel: $(WHEEL_FILE) - -$(CONDA_FILE): $(WHEEL_FILE) - $(CONDA_RUN) whl2conda convert $(WHEEL_FILE) - -build-conda: $(CONDA_FILE) - -build: build-wheel build-sdist build-conda - -unpacked-wheel: $(WHEEL_FILE) - $(CONDA_RUN) wheel unpack $(WHEEL_FILE) -d dist - -site/index.html: $(MKDOC_FILES) $(SRC_FILES) - $(CONDA_RUN) mkdocs build -f $(MKDOC_CONFIG) - -site/.doc-strict: $(MKDOC_FILES) $(SRC_FILES) - $(CONDA_RUN) mkdocs build -f $(MKDOC_CONFIG) --strict - $(CONDA_RUN) linkchecker -f linkcheckerrc.ini site - $(TOUCH) site/.doc-strict - -doc: site/index.html - -docs: doc - -doc-strict: site/.doc-strict - -showdoc: site/index.html - $(CONDA_RUN) mkdocs serve -f $(MKDOC_CONFIG) - -showdocs: showdoc - -doc-deploy: - $(CONDA_RUN) mike deploy -F $(MKDOC_CONFIG) -u $(VERSION) latest - $(CONDA_RUN) mike set-default -F $(MKDOC_CONFIG) latest - -mike-deploy: doc-deploy -mike-build: doc-deploy - -doc-push: - git push origin gh-pages - -doc-upload: doc-push - -doc-serve-all: - $(CONDA_RUN) mike serve -F $(MKDOC_CONFIG) - -mike-serve: doc-serve-all - -check-upload-wheel: - $(CONDA_RUN) twine check dist/*.whl - -check-upload-sdist: - $(CONDA_RUN) twine check dist/*.tar.gz - -check-upload: check-upload-sdist check-upload-wheel - -upload-wheel: check-upload-wheel - # NOTE: --skip-existing doesn't seem to actually work - $(CONDA_RUN) twine upload --skip-existing $(lastword $(sort $(wildcard dist/*.whl))) - - -upload-sdist: check-upload-sdist - # NOTE: --skip-existing doesn't seem to actually work - $(CONDA_RUN) twine upload --skip-existing $(lastword $(sort $(wildcard dist/*.tar.gz))) - -upload: upload-sdist upload-wheel - -clean-build: - -@$(RMDIR) build - -@$(RMDIR) dist - -clean-doc: - -@$(RMDIR) site - -clean-tox: - -@$(RMDIR) .tox - -@$(RM) tox-env.yml tox-requirements.txt - -clean-test: clean-coverage clean-tox - -@$(RMDIR) .pytest_cache - -@$(RMDIR) .mypy_cache - -clean-coverage: - -@$(RMDIR) $(COVERAGE_HTML) .coverage .coverage.* - -clean-python: - -@python -Bc "import pathlib; [p.unlink() for p in pathlib.Path('.').rglob('*.py[co]')]" - -@python -Bc "import pathlib; [p.rmdir() for p in pathlib.Path('.').rglob('__pycache__')]" - -clean: clean-doc clean-python clean-test clean-build diff --git a/environment.yml b/environment.yml deleted file mode 100644 index 3c8fc6f..0000000 --- a/environment.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: mkxref-dev -channels: - - conda-forge - -dependencies: - # runtime - - python >=3.9,<3.14 - - mkdocstrings-python >=1.16.6,<2 - - griffe >=1.0 - # build - - python-build >=1.0.0 - - hatchling >=1.21 - # test - - coverage >=7.4.0 - - pytest >=8.2 - - pytest-cov >=5.0 - - mypy >=1.10 - - ruff >=0.4.10 - - beautifulsoup4 >=4.12 - # documentation - - black >=23.12 - - mike >=1.1,<2.0 - - mkdocs >=1.5.3,<2.0 - - mkdocs-material >=9.5.4 - - linkchecker >=10.4 diff --git a/pixi.lock b/pixi.lock index 6f533fb..b1f48b2 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,7 +9,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda @@ -20,9 +23,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmarkgfm-2024.11.20-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-45.0.4-py312hda17c39_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda @@ -31,18 +39,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.27.0-pypyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.5.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.6.0-pyha804496_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-hee588c1_0.conda @@ -52,7 +68,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/linkchecker-10.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda @@ -62,13 +80,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.16.12-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.16.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.0-py310h1570de5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda @@ -84,13 +105,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.1.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.13-py312h1d08497_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda @@ -98,6 +125,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2025.5.9.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-6.1.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda @@ -109,7 +137,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - pypi: ./ osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda @@ -120,9 +151,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmarkgfm-2024.11.20-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda @@ -131,12 +165,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.27.0-pypyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.5.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.6.0-pyh534df25_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -146,7 +185,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/linkchecker-10.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda @@ -156,9 +197,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.16.12-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.16.0-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.3.0-py310h1620c0a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda @@ -178,12 +221,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-h81fe080_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.1.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.13-py313h19b3928_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -192,6 +240,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2025.5.9.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-6.1.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda @@ -203,7 +252,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - pypi: ./ win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda @@ -214,9 +266,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmarkgfm-2024.11.20-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda @@ -225,12 +280,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.27.0-pypyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.5.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.6.0-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda @@ -239,7 +299,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/linkchecker-10.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda @@ -249,8 +311,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.29.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.16.12-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.16.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nh3-0.2.21-py39he870945_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda @@ -270,11 +334,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h261c0b1_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-ctypes-0.2.3-py313hfa70ccb_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.1.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.13-py313h784dc11_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -283,6 +353,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2025.5.9.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-6.1.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda @@ -320,6 +391,17 @@ packages: purls: [] size: 23621 timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 + md5: aaa2a381ccc56eac91d63b6c1240312f + depends: + - cpython + - python-gil + license: MIT + license_family: MIT + purls: [] + size: 8191 + timestamp: 1744137672556 - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac md5: 0a01c169f0ab0f91b26e77a3301fbfe4 @@ -332,6 +414,28 @@ packages: - pkg:pypi/babel?source=compressed-mapping size: 6938256 timestamp: 1738490268466 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + sha256: e1c3dc8b5aa6e12145423fed262b4754d70fec601339896b9ccf483178f690a6 + md5: 767d508c1a67e02ae8f50e44cacfadb2 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 7069 + timestamp: 1733218168786 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhd8ed1ab_1.conda + sha256: a0f41db6d7580cec3c850e5d1b82cb03197dd49a3179b1cee59c62cd2c761b36 + md5: df837d654933488220b454c6a3b0fad6 + depends: + - backports + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/backports-tarfile?source=hash-mapping + size: 32786 + timestamp: 1733325872620 - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda sha256: 3a0af23d357a07154645c41d035a4efbd15b7a642db397fa9ea0193fd58ae282 md5: b16e2595d3a9042aa9d570375978835f @@ -585,6 +689,52 @@ packages: - pkg:pypi/click?source=compressed-mapping size: 88117 timestamp: 1747811467132 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmarkgfm-2024.11.20-py312h66e93f0_0.conda + sha256: 294643f1ad5cbaa8646f803b89cc2da2b43c41cf4d3855883662ab0bb5455d3e + md5: bf99b4a864e31ecd9244affd27f3ceb6 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cmarkgfm?source=hash-mapping + size: 139452 + timestamp: 1732193337513 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmarkgfm-2024.11.20-py313h90d716c_0.conda + sha256: 1db57935a8b697598b9cea3ccebf528db76d81eb651aa1003d5843e008ac04ae + md5: ed5171986d1267e7d823ba589b4281fe + depends: + - __osx >=11.0 + - cffi >=1.0.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cmarkgfm?source=hash-mapping + size: 113823 + timestamp: 1732193485989 +- conda: https://conda.anaconda.org/conda-forge/win-64/cmarkgfm-2024.11.20-py313ha7868ed_0.conda + sha256: ebb28d032a14df9d4f5912e2fc8229ef0ae10b8ebfbbe68b169f91b101dc4d6c + md5: 22bd38be6f6822fa0ad2d8ad1c0e2797 + depends: + - cffi >=1.0.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cmarkgfm?source=hash-mapping + size: 121616 + timestamp: 1732193771495 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -639,6 +789,62 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 405028 timestamp: 1749833588845 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + noarch: generic + sha256: 7e7bc8e73a2f3736444a8564cbece7216464c00f0bc38e604b0c792ff60d621a + md5: e5279009e7a7f7edd3cd2880c502b3cc + depends: + - python >=3.12,<3.13.0a0 + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 45852 + timestamp: 1749047748072 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + noarch: generic + sha256: 058c8156ff880b1180a36b94307baad91f9130d0e3019ad8c7ade035852016fb + md5: 0401f31e3c9e48cebf215472aa3e7104 + depends: + - python >=3.13,<3.14.0a0 + - python_abi * *_cp313 + license: Python-2.0 + purls: [] + size: 47560 + timestamp: 1750062514868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-45.0.4-py312hda17c39_0.conda + sha256: 5d36a2f20b54f05341845ba19b909ed40ada50f1fd4f7b606282a4563e1a6a2c + md5: f56a043ace4885f37c8856a24447cd19 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.12 + - libgcc >=13 + - openssl >=3.5.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=hash-mapping + size: 1658881 + timestamp: 1749539059944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + sha256: 3b988146a50e165f0fa4e839545c679af88e4782ec284cc7b6d07dd226d6a068 + md5: 679616eb5ad4e521c83da4650860aba7 + depends: + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libexpat >=2.7.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - libglib >=2.84.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 437860 + timestamp: 1747855126005 - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 md5: 5fbd60d61d21b4bd2f9d7a48fe100418 @@ -660,6 +866,16 @@ packages: - pkg:pypi/dnspython?source=hash-mapping size: 172172 timestamp: 1733256829961 +- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda + sha256: dd585e49f231ec414e6550783f2aff85027fa829e5d66004ad702e1cfa6324aa + md5: 140faac6cff4382f5ea077ca618b2931 + depends: + - python >=3.9 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - pkg:pypi/docutils?source=hash-mapping + size: 436452 + timestamp: 1753875179563 - conda: https://conda.anaconda.org/conda-forge/noarch/editables-0.5-pyhd8ed1ab_1.conda sha256: 8d4f908e670be360617d418c328213bc46e7100154c3742db085148141712f60 md5: 2cf824fe702d88e641eec9f9f653e170 @@ -759,6 +975,19 @@ packages: - pkg:pypi/hyperframe?source=hash-mapping size: 17397 timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/noarch/id-1.5.0-pyh29332c3_0.conda + sha256: 161e3eb5aba887d0329bb4099f72cb92eed9072cf63f551d08540480116e69a2 + md5: d37314c8f553e3b4b44d113a0ee10196 + depends: + - python >=3.9 + - requests + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/id?source=hash-mapping + size: 24444 + timestamp: 1737528654512 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 @@ -819,6 +1048,53 @@ packages: - pkg:pypi/iniconfig?source=hash-mapping size: 11474 timestamp: 1733223232820 +- conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_2.conda + sha256: 3d16a0fa55a29fe723c918a979b2ee927eb0bf9616381cdfd26fa9ea2b649546 + md5: ade6b25a6136661dadd1a43e4350b10b + depends: + - more-itertools + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jaraco-classes?source=hash-mapping + size: 12109 + timestamp: 1733326001034 +- conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.0.1-pyhd8ed1ab_0.conda + sha256: bfaba92cd33a0ae2488ab64a1d4e062bcf52b26a71f88292c62386ccac4789d7 + md5: bcc023a32ea1c44a790bbf1eae473486 + depends: + - backports.tarfile + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jaraco-context?source=hash-mapping + size: 12483 + timestamp: 1733382698758 +- conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.3.0-pyhd8ed1ab_0.conda + sha256: 89320bb2c6bef18f5109bee6cb07a193701cf00552a4cfc6f75073cf0d3e44f6 + md5: b86839fa387a5b904846e77c84167e57 + depends: + - more-itertools + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jaraco-functools?source=hash-mapping + size: 16238 + timestamp: 1755584796828 +- conda: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.9.0-pyhd8ed1ab_0.conda + sha256: 00d37d85ca856431c67c8f6e890251e7cc9e5ef3724a0302b8d4a101f22aa27f + md5: b4b91eb14fbe2f850dd2c5fc20676c0d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jeepney?source=hash-mapping + size: 40015 + timestamp: 1740828380668 - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda sha256: f1ac18b11637ddadc05642e8185a851c7fab5998c6f5470d716812fae943b2af md5: 446bd6c8cb26050d528881df495ce646 @@ -831,6 +1107,60 @@ packages: - pkg:pypi/jinja2?source=compressed-mapping size: 112714 timestamp: 1741263433881 +- conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.6.0-pyh534df25_0.conda + sha256: c8b436fa9853bf8b836c96afbb7684a04955b80b37f5d5285fd836b6a8566cc5 + md5: d2c0c5bda93c249f877c7fceea9e63af + depends: + - __osx + - importlib-metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/keyring?source=hash-mapping + size: 37280 + timestamp: 1735210369348 +- conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.6.0-pyh7428d3b_0.conda + sha256: a0a1df88cb2bfa5b8363908bfed97185a37674293c5aa86bcc834f992be46a96 + md5: 4fa149bfac931bd5a059b9d9d0039c16 + depends: + - __win + - importlib-metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - python >=3.9 + - pywin32-ctypes >=0.2.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/keyring?source=hash-mapping + size: 37334 + timestamp: 1735210722089 +- conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.6.0-pyha804496_0.conda + sha256: b6f57c17cf098022c32fe64e85e9615d427a611c48a5947cdfc357490210a124 + md5: cdd58ab99c214b55d56099108a914282 + depends: + - __linux + - importlib-metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - jeepney >=0.4.2 + - python >=3.9 + - secretstorage >=3.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/keyring?source=hash-mapping + size: 36985 + timestamp: 1735210286595 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda sha256: dcd2b1a065bbf5c54004ddf6551c775a8eb6993c8298ca8a6b92041ed413f785 md5: 6dc9e1305e7d3129af4ad0dabda30e56 @@ -948,6 +1278,22 @@ packages: purls: [] size: 34586 timestamp: 1746642200749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda + sha256: e1ad3d9ddaa18f95ff5d244587fd1a37aca6401707f85a37f7d9b5002fcf16d0 + md5: 467f23819b1ea2b89c3fc94d65082301 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.45,<10.46.0a0 + constrains: + - glib 2.84.3 *_0 + license: LGPL-2.1-or-later + purls: [] + size: 3961899 + timestamp: 1754315006443 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb md5: fbe7d535ff9d3a168c148e07358cd5b1 @@ -958,6 +1304,16 @@ packages: purls: [] size: 452635 timestamp: 1746642113092 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + purls: [] + size: 790176 + timestamp: 1754908768807 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 md5: 1a580f7796c7bf6393fddb8bbbde58dc @@ -1153,6 +1509,18 @@ packages: - pkg:pypi/markdown?source=hash-mapping size: 80015 timestamp: 1744984620627 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e + md5: 5b5203189eb668f042ac2b0826244964 + depends: + - mdurl >=0.1,<1 + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/markdown-it-py?source=compressed-mapping + size: 64736 + timestamp: 1754951288511 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b @@ -1202,6 +1570,17 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 27930 timestamp: 1733220059655 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdurl?source=hash-mapping + size: 14465 + timestamp: 1733255681319 - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda sha256: e5b555fd638334a253d83df14e3c913ef8ce10100090e17fd6fb8e752d36f95d md5: d9a8fc1f01deae61735c88ec242e855c @@ -1360,7 +1739,7 @@ packages: - pypi: ./ name: mkdocstrings-python-xref version: 1.16.3 - sha256: 07b578f8cb9e04ab7cbc2ec7e851cbcc4bb458056456d19c654b0dc4c87fdc4a + sha256: 207356af5ea06c13597d5d38455eaa328f5aaba629b2410ff00f85d3d17cd976 requires_dist: - griffe>=1.0 - mkdocstrings-python>=1.16.6,<2.0 @@ -1379,6 +1758,17 @@ packages: - ruff>=0.4.10 ; extra == 'dev' requires_python: '>=3.9' editable: true +- conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.7.0-pyhd8ed1ab_0.conda + sha256: d0c2253dcb1da6c235797b57d29de688dabc2e48cc49645b1cff2b52b7907428 + md5: 7c65a443d58beb0518c35b26c70e201d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/more-itertools?source=hash-mapping + size: 61359 + timestamp: 1745349566387 - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.16.0-py312h66e93f0_0.conda sha256: 2a1d7b66b6abf0d2b72ae881612f60c5953244eaa3a2326f07dc0e176b432531 md5: af65ec3f748ca1e4c4bec26e2844f7e3 @@ -1464,6 +1854,56 @@ packages: purls: [] size: 797030 timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.0-py310h1570de5_1.conda + noarch: python + sha256: dd028894853b53138c221f2fb8fb9eed4a5cd1604ea239fa5aaf9b19bac6f251 + md5: 79950595aaec27abdc75a20d7af62d21 + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - _python_abi3_support 1.* + - cpython >=3.10 + constrains: + - __glibc >=2.17 + license: MIT + purls: + - pkg:pypi/nh3?source=hash-mapping + size: 685199 + timestamp: 1756737399450 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.3.0-py310h1620c0a_1.conda + noarch: python + sha256: fb11036890e3ac425ee05f6ab20c62d0c9e554d02c48ee144176879cad3e6d5a + md5: 42cc71a7337ac72d1e85511f03d8f5aa + depends: + - python + - __osx >=11.0 + - _python_abi3_support 1.* + - cpython >=3.10 + constrains: + - __osx >=11.0 + license: MIT + purls: + - pkg:pypi/nh3?source=hash-mapping + size: 620918 + timestamp: 1756737501179 +- conda: https://conda.anaconda.org/conda-forge/win-64/nh3-0.2.21-py39he870945_1.conda + noarch: python + sha256: c441efc437deeafa37d37120fb8d671238427e926279db9ca22315352ccf5065 + md5: d07edf27dc51778b81a9a9748f3a9356 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + - ucrt >=10.0.20348.0 + - _python_abi3_support 1.* + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/nh3?source=hash-mapping + size: 513432 + timestamp: 1741652669968 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 md5: de356753cfdbffcde5bb1e86e3aa6cd0 @@ -1534,6 +1974,19 @@ packages: - pkg:pypi/pathspec?source=hash-mapping size: 41075 timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + sha256: 27c4014f616326240dcce17b5f3baca3953b6bc5f245ceb49c3fa1e6320571eb + md5: b90bece58b4c2bf25969b70f3be42d25 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1197308 + timestamp: 1745955064657 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda sha256: 0f48999a28019c329cd3f6fd2f01f09fc32cc832f7d6bbe38087ddac858feaa3 md5: 424844562f5d337077b445ec6b1398a7 @@ -1620,7 +2073,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - purls: [] + purls: + - pkg:pypi/pycparser?source=hash-mapping size: 110100 timestamp: 1733195786147 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -1834,6 +2288,26 @@ packages: - pkg:pypi/python-dateutil?source=hash-mapping size: 222505 timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda + sha256: b8afeaefe409d61fa4b68513b25a66bb17f3ca430d67cfea51083c7bfbe098ef + md5: 859c6bec94cd74119f12b961aba965a8 + depends: + - cpython 3.12.11.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 45836 + timestamp: 1749047798827 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda + sha256: ac6cf618100c2e0cad1cabfe2c44bf4a944aa07bb1dc43abff73373351a7d079 + md5: 2eabcede0db21acee23c181db58b4128 + depends: + - cpython 3.13.5.* + - python_abi * *_cp313 + license: Python-2.0 + purls: [] + size: 47572 + timestamp: 1750062593102 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda build_number: 7 sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 @@ -1867,6 +2341,18 @@ packages: - pkg:pypi/pytz?source=hash-mapping size: 189015 timestamp: 1742920947249 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-ctypes-0.2.3-py313hfa70ccb_2.conda + sha256: aae9bea82bd176d4a13ccc2db232fe413c1ed0dd0c7b8a663685dd6cccb2516e + md5: 8676c3d5a5cf760f39c520bcc011c40c + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pywin32-ctypes?source=hash-mapping + size: 57622 + timestamp: 1755891964298 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b md5: cf2485f39740de96e2a7f2bb18ed2fee @@ -1946,6 +2432,21 @@ packages: purls: [] size: 252359 timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_1.conda + sha256: 66f3adf6aaabf977cfcc22cb65607002b1de4a22bc9fac7be6bb774bc6f85a3a + md5: c58dd5d147492671866464405364c0f1 + depends: + - cmarkgfm >=0.8.0 + - docutils >=0.21.2 + - nh3 >=0.2.14 + - pygments >=2.5.1 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/readme-renderer?source=hash-mapping + size: 17481 + timestamp: 1734339765256 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda sha256: 9866aaf7a13c6cfbe665ec7b330647a0fb10a81e6f9b8fee33642232a1920e18 md5: f6082eae112814f1447b56a5e1f6ed05 @@ -1963,6 +2464,44 @@ packages: - pkg:pypi/requests?source=hash-mapping size: 59407 timestamp: 1749498221996 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + sha256: c0b815e72bb3f08b67d60d5e02251bbb0164905b5f72942ff5b6d2a339640630 + md5: 66de8645e324fda0ea6ef28c2f99a2ab + depends: + - python >=3.9 + - requests >=2.0.1,<3.0.0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests-toolbelt?source=hash-mapping + size: 44285 + timestamp: 1733734886897 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + sha256: d617373ba1a5108336cb87754d030b9e384dcf91796d143fa60fe61e76e5cfb0 + md5: 43e14f832d7551e5a8910672bfc3d8c6 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/rfc3986?source=hash-mapping + size: 38028 + timestamp: 1733921806657 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.1.0-pyhe01879c_0.conda + sha256: 3bda3cd6aa2ca8f266aeb8db1ec63683b4a7252d7832e8ec95788fb176d0e434 + md5: c41e49bd1f1479bed6c6300038c5466e + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/rich?source=hash-mapping + size: 201098 + timestamp: 1753436991345 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.13-py312h1d08497_0.conda sha256: 25e99382bbe8431e25f086960ba34de8d975c903a4810fbf2009e95285e4d719 md5: 8e7c909d4f48865c8c5241d83649fc66 @@ -2012,6 +2551,21 @@ packages: - pkg:pypi/ruff?source=hash-mapping size: 8262379 timestamp: 1749216842505 +- conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_3.conda + sha256: c6d5d0bc7fb6cbfa3b8be8f2399a3c1308b3392a4e20bd1a0f29a828fda5ab20 + md5: 4840da9db2808db946a0d979603c6de4 + depends: + - cryptography + - dbus + - jeepney >=0.6 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/secretstorage?source=hash-mapping + size: 31601 + timestamp: 1725915741329 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -2113,6 +2667,28 @@ packages: - pkg:pypi/trove-classifiers?source=hash-mapping size: 19516 timestamp: 1746817031708 +- conda: https://conda.anaconda.org/conda-forge/noarch/twine-6.1.0-pyh29332c3_0.conda + sha256: c5b373f6512b96324c9607d7d91a76bb53c1056cb1012b4f9c86900c6b7f8898 + md5: d319066fad04e07a0223bf9936090161 + depends: + - id + - importlib-metadata >=3.6 + - keyring >=15.1 + - packaging >=24.0 + - python >=3.9 + - readme_renderer >=35.0 + - requests >=2.20 + - requests-toolbelt >=0.8.0,!=0.9.0 + - rfc3986 >=1.4.0 + - rich >=12.0.0 + - urllib3 >=1.26.0 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/twine?source=hash-mapping + size: 40401 + timestamp: 1737553658703 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4 md5: a1cdd40fc962e2f7944bc19e01c7e584 diff --git a/pyproject.toml b/pyproject.toml index c85d7ed..9dc20ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,6 +71,7 @@ mike = "*" mkdocs = "*" mkdocs-material = "*" linkchecker = "*" +twine = "*" [tool.pixi.pypi-dependencies] mkdocstrings-python-xref = { path = ".", editable = true } @@ -222,30 +223,73 @@ disable = [ [tool.pixi.tasks] # linting tasks -mypy = "mypy" -ruff = "ruff check src/mkdocstrings_handlers tests" -lint = {depends-on = ["ruff", "mypy"]} +[tool.pixi.tasks.mypy] +description = "Run mypy type checking" +cmd = "mypy" + +[tool.pixi.tasks.ruff] +description = "Run ruff linting on source code and tests" +cmd = "ruff check src/mkdocstrings_handlers tests" + +[tool.pixi.tasks.lint] +description = "Run all linting tasks (ruff and mypy)" +depends-on = ["ruff", "mypy"] # testing tasks -pytest = "pytest -sv -ra tests" -test = {depends-on = ["pytest", "lint"]} -coverage = "pytest -ra --cov --cov-report=html --cov-report=term -- tests" -coverage-show = "python -m webbrowser file://$PIXI_PROJECT_ROOT/htmlcov/index.html" +[tool.pixi.tasks.pytest] +description = "Run pytest with verbose output" +cmd = "pytest -sv -ra tests" + +[tool.pixi.tasks.test] +description = "Run tests and linting" +depends-on = ["pytest", "lint"] + +[tool.pixi.tasks.coverage] +description = "Run tests with coverage reporting" +cmd = "pytest -ra --cov --cov-report=html --cov-report=term -- tests" + +[tool.pixi.tasks.coverage-show] +description = "Open coverage report in web browser" +cmd = "python -m webbrowser file://$PIXI_PROJECT_ROOT/htmlcov/index.html" # doc tasks -docs = {depends-on = ["doc"]} -show-doc = "mkdocs serve -f mkdocs.yml" -show-docs = {depends-on = ["show-doc"]} +[tool.pixi.tasks.docs] +description = "Build documentation" +depends-on = ["doc"] + +[tool.pixi.tasks.show-doc] +description = "Serve documentation locally with live reload" +cmd = "mkdocs serve -f mkdocs.yml" + +[tool.pixi.tasks.show-docs] +description = "Serve documentation locally (alias for show-doc)" +depends-on = ["show-doc"] # cleanup tasks -clean-build = "rm -rf build dist" -clean-coverage = "rm -rf .coverage .coverage.* htmlcov" -clean-docs = "rm -rf site" -clean-test = "rm -rf .pytest_cache .mypy_cache .ruff_cache" -clean = {depends-on = ["clean-build", "clean-coverage", "clean-test"]} +[tool.pixi.tasks.clean-build] +description = "Remove build and distribution artifacts" +cmd = "rm -rf build dist" + +[tool.pixi.tasks.clean-coverage] +description = "Remove coverage reports and cache files" +cmd = "rm -rf .coverage .coverage.* htmlcov" + +[tool.pixi.tasks.clean-docs] +description = "Remove generated documentation site" +cmd = "rm -rf site" + +[tool.pixi.tasks.clean-test] +description = "Remove test and linting cache directories" +cmd = "rm -rf .pytest_cache .mypy_cache .ruff_cache" + +[tool.pixi.tasks.clean] +description = "Remove all build, coverage, and test artifacts" +depends-on = ["clean-build", "clean-coverage", "clean-test"] # build tasks -build = {depends-on = ["build-wheel", "build-sdist", "build-conda"]} +[tool.pixi.tasks.build] +description = "Build all package formats (wheel, sdist, conda)" +depends-on = ["build-wheel", "build-sdist", "build-conda"] [tool.pixi.tasks.build-wheel] env = {VERSION = "$(cat src/mkdocstrings_handlers/python_xref/VERSION)"} @@ -254,18 +298,71 @@ inputs = ["pyproject.toml", "LICENSE.md", "src/**/*"] outputs = ["dist/mkdocstrings_python_xref-$VERSION-py3-none-any.whl"] [tool.pixi.tasks.build-sdist] -env = {VERSION = "$(cat src/mkdocstrings_handlers/python_xref/VERSION)"} cmd = "python -m build --sdist --no-isolation --outdir dist" inputs = ["pyproject.toml", "LICENSE.md", "src/**/*"] -outputs = ["dist/mkdocstrings_python_xref-$VERSION.tar.gz"] +outputs = ["dist/mkdocstrings_python_xref-*.tar.gz"] [tool.pixi.tasks.build-conda] -#env = {VERSION = "$(cat src/mkdocstrings_handlers/python_xref/VERSION)"} -cmd = "whl2conda convert dist/*.whl -w dist --overwrite" +description = "Build conda package from wheel" +env = {VERSION = "$(cat src/mkdocstrings_handlers/python_xref/VERSION)"} +cmd = "whl2conda convert dist/mkdocstrings_python_xref-$VERSION-py3-none-any.whl -w dist --overwrite" depends-on = ["build-wheel"] -inputs = ["dist/mkdocstrings_python_xref-$VERSION-py3-none-any.whl"] +inputs = ["dist/mkdocstrings_python_xref-*-none-any.whl"] + +# upload tasks +[tool.pixi.tasks.check-upload-wheel] +description = "Check wheel package for upload readiness using twine" +cmd = "twine check dist/*.whl" +depends-on = ["build-wheel"] + +[tool.pixi.tasks.check-upload-sdist] +description = "Check source distribution for upload readiness using twine" +cmd = "twine check dist/*.tar.gz" +depends-on = ["build-sdist"] + +[tool.pixi.tasks.check-upload] +description = "Check all packages for upload readiness" +depends-on = ["check-upload-sdist", "check-upload-wheel"] + +[tool.pixi.tasks.upload-wheel] +description = "Upload wheel package to PyPI (skips existing versions)" +cmd = "twine upload --skip-existing dist/*.whl" +depends-on = ["check-upload-wheel"] + +[tool.pixi.tasks.upload-sdist] +description = "Upload source distribution to PyPI (skips existing versions)" +cmd = "twine upload --skip-existing dist/*.tar.gz" +depends-on = ["check-upload-sdist"] + +[tool.pixi.tasks.upload] +description = "Upload all packages to PyPI" +depends-on = ["upload-sdist", "upload-wheel"] [tool.pixi.tasks.doc] +description = "Build documentation site" cmd = "mkdocs build -f mkdocs.yml" inputs = ["docs/*.md", "docs/*.svg", "mkdocs.yml"] outputs = ["site/*.html"] + +[tool.pixi.tasks.doc-strict] +description = "Build documentation and check for broken links" +cmd = "linkchecker site" +depends-on = ["doc"] +inputs = ["site/**"] + +[tool.pixi.tasks.showdoc] +description = "Serve documentation locally (alias for show-doc)" +cmd = "mkdocs serve -f mkdocs.yml" + +[tool.pixi.tasks.doc-serve-all] +description = "Serve all documentation versions using mike" +cmd = "mike serve -F mkdocs.yml" + +[tool.pixi.tasks.doc-deploy] +env = {VERSION = "$(cat src/mkdocstrings_handlers/python_xref/VERSION)"} +description = "Deploy the current version to the gh-pages branch" +cmd = "mike deploy -F mkdocs.yml -u $VERSION latest & mike set-default -u $VERSION latest" + +[tool.pixi.tasks.show-version] +env = {VERSION = "$(cat src/mkdocstrings_handlers/python_xref/VERSION)"} +cmd = "echo $VERSION"