pyrefdev 2025.4__tar.gz → 2025.6__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.
- {pyrefdev-2025.4 → pyrefdev-2025.6}/.gitignore +1 -0
- pyrefdev-2025.6/.pre-commit-config.yaml +10 -0
- pyrefdev-2025.6/CHANGELOG.md +115 -0
- pyrefdev-2025.6/CLAUDE.md +51 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/PKG-INFO +12 -9
- {pyrefdev-2025.4 → pyrefdev-2025.6}/README.md +5 -5
- {pyrefdev-2025.4 → pyrefdev-2025.6}/pyproject.toml +8 -4
- pyrefdev-2025.6/src/pyrefdev/__main__.py +42 -0
- pyrefdev-2025.6/src/pyrefdev/_version.py +1 -0
- pyrefdev-2025.6/src/pyrefdev/config.py +134 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/indexer/__main__.py +2 -0
- pyrefdev-2025.6/src/pyrefdev/indexer/add_docs.py +44 -0
- pyrefdev-2025.6/src/pyrefdev/indexer/crawl_docs.py +262 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/indexer/parse_docs.py +173 -46
- pyrefdev-2025.6/src/pyrefdev/indexer/requests.py +54 -0
- pyrefdev-2025.6/src/pyrefdev/indexer/schema.py +16 -0
- pyrefdev-2025.6/src/pyrefdev/indexer/update_docs.py +31 -0
- pyrefdev-2025.6/src/pyrefdev/indexer/update_landing_page.py +50 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/mapping/__init__.py +6 -2
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/mapping/__python__.py +56 -3
- pyrefdev-2025.6/src/pyrefdev/mapping/aiohttp.py +646 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/aioitertools.py +47 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/aiosignal.py +9 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/anyio.py +302 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/apache-beam.py +6066 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/arrow.py +857 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/attrs.py +99 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/azure-identity.py +182 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/boto3.py +154 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/botocore.py +58 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/cachetools.py +41 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/cattrs.py +239 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/charset-normalizer.py +68 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/click.py +219 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/coverage.py +113 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/cryptography.py +1188 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/cyclopts.py +257 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/distlib.py +197 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/fastapi.py +897 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/fastjsonschema.py +11 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/filelock.py +35 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/flask.py +502 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/frozenlist.py +8 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/fsspec.py +248 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/google-api-core.py +250 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/google-auth.py +670 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/grpcio.py +282 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/h11.py +61 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/h5py.py +120 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/httplib2.py +38 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/ipython.py +5 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/jinja2.py +268 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/jsonschema.py +184 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/jupyter-core.py +83 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/libcst.py +939 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/markupsafe.py +12 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/matplotlib.py +6351 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/more-itertools.py +161 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/multidict.py +41 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/nbformat.py +38 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/networkx.py +1490 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/numba.py +48 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/mapping/numpy.py +43 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/oauthlib.py +248 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/packaging.py +144 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/mapping/pandas.py +5 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pathspec.py +88 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pillow.py +1364 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/platformdirs.py +163 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pluggy.py +74 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/propcache.py +8 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/protobuf.py +2011 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/psutil.py +176 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pyOpenSSL.py +274 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pyarrow.py +5194 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pyasn1.py +442 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pydantic-core.py +158 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pydantic.py +417 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pygments.py +60 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pyjwt.py +29 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pyparsing.py +403 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/pytest.py +547 -0
- pyrefdev-2025.4/src/pyrefdev/mapping/dateutil.py → pyrefdev-2025.6/src/pyrefdev/mapping/python-dateutil.py +11 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/requests-oauthlib.py +26 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/requests-toolbelt.py +89 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/mapping/requests.py +6 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/rich.py +556 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/rpds-py.py +44 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/s3fs.py +121 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/scikit-learn.py +63 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/scipy.py +4151 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/semver.py +5 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/setuptools.py +26 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/six.py +67 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/sniffio.py +9 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/sqlalchemy.py +6604 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/tomlkit.py +159 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/torch.py +5493 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/tox.py +270 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/trio.py +425 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/typing-extensions.py +127 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/mapping/urllib3.py +11 -1
- pyrefdev-2025.6/src/pyrefdev/mapping/werkzeug.py +567 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/wrapt.py +5 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/yarl.py +63 -0
- pyrefdev-2025.6/src/pyrefdev/mapping/yib.py +10 -0
- pyrefdev-2025.6/src/pyrefdev/server.py +35 -0
- pyrefdev-2025.6/static/logo128.png +0 -0
- pyrefdev-2025.6/templates/index.html +564 -0
- pyrefdev-2025.6/tests/test_pyrefdev.py +11 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/uv.lock +169 -7
- pyrefdev-2025.4/CHANGELOG.md +0 -21
- pyrefdev-2025.4/index.html +0 -353
- pyrefdev-2025.4/src/pyrefdev/__main__.py +0 -27
- pyrefdev-2025.4/src/pyrefdev/_version.py +0 -1
- pyrefdev-2025.4/src/pyrefdev/config.py +0 -67
- pyrefdev-2025.4/src/pyrefdev/indexer/add_docs.py +0 -49
- pyrefdev-2025.4/src/pyrefdev/indexer/crawl_docs.py +0 -163
- pyrefdev-2025.4/src/pyrefdev/indexer/update_docs.py +0 -16
- pyrefdev-2025.4/src/pyrefdev/server.py +0 -21
- pyrefdev-2025.4/tests/test_mapping.py +0 -6
- {pyrefdev-2025.4 → pyrefdev-2025.6}/.github/workflows/ci.yml +0 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/.github/workflows/pypi_upload.yml +0 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/LICENSE +0 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/pyrefdev.service +0 -0
- {pyrefdev-2025.4 → pyrefdev-2025.6}/src/pyrefdev/__init__.py +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
Nothing noticeable unreleased.
|
|
6
|
+
|
|
7
|
+
## v2025.6
|
|
8
|
+
|
|
9
|
+
- Added a `-p/--print` flag to the `pyrefdev` CLI to print the URL instead of opening it in the browser.
|
|
10
|
+
- Support [cyclopts](https://cyclopts.readthedocs.io/en/latest/).
|
|
11
|
+
- Support [yib](https://yib.readthedocs.io/en/latest/).
|
|
12
|
+
|
|
13
|
+
## v2025.5
|
|
14
|
+
|
|
15
|
+
- Added `add-docs`, `update-docs`, and `update-landing-page` commands to `pyrefdev-indexer`.
|
|
16
|
+
- Added missing module symbols.
|
|
17
|
+
- Support [aiohttp](https://docs.aiohttp.org/en/stable/).
|
|
18
|
+
- Support [aioitertools](https://aioitertools.omnilib.dev/en/stable/).
|
|
19
|
+
- Support [aiosignal](https://aiosignal.aio-libs.org/en/stable/).
|
|
20
|
+
- Support [anyio](https://anyio.readthedocs.io/en/stable/).
|
|
21
|
+
- Support [apache-beam](https://beam.apache.org/releases/pydoc/current/).
|
|
22
|
+
- Support [arrow](https://arrow.readthedocs.io/en/latest/).
|
|
23
|
+
- Support [attrs](https://www.attrs.org/en/stable/).
|
|
24
|
+
- Support [azure-identity](https://azuresdkdocs.z19.web.core.windows.net/python/azure-identity/latest/index.html).
|
|
25
|
+
- Support [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html).
|
|
26
|
+
- Support [botocore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html).
|
|
27
|
+
- Support [cachetools](https://cachetools.readthedocs.io/en/latest/).
|
|
28
|
+
- Support [cattrs](https://catt.rs/en/stable/).
|
|
29
|
+
- Support [charset-normalizer](https://charset-normalizer.readthedocs.io/en/latest/).
|
|
30
|
+
- Support [click](https://click.palletsprojects.com/en/stable/).
|
|
31
|
+
- Support [coverage](https://coverage.readthedocs.io/en/latest/).
|
|
32
|
+
- Support [cryptography](https://cryptography.io/en/latest/).
|
|
33
|
+
- Support [distlib](https://distlib.readthedocs.io/en/latest/).
|
|
34
|
+
- Support [fastapi](https://fastapi.tiangolo.com/reference/).
|
|
35
|
+
- Support [fastjsonschema](https://horejsek.github.io/python-fastjsonschema/).
|
|
36
|
+
- Support [filelock](https://py-filelock.readthedocs.io/en/latest/).
|
|
37
|
+
- Support [flask](https://flask.palletsprojects.com/en/stable/).
|
|
38
|
+
- Support [frozenlist](https://frozenlist.aio-libs.org/en/latest/).
|
|
39
|
+
- Support [fsspec](https://filesystem-spec.readthedocs.io/en/latest/).
|
|
40
|
+
- Support [google-api-core](https://googleapis.dev/python/google-api-core/latest/).
|
|
41
|
+
- Support [google-auth](https://googleapis.dev/python/google-auth/latest/).
|
|
42
|
+
- Support [grpcio](https://grpc.github.io/grpc/python/index.html).
|
|
43
|
+
- Support [h11](https://h11.readthedocs.io/en/latest/).
|
|
44
|
+
- Support [h5py](https://docs.h5py.org/en/stable/).
|
|
45
|
+
- Support [httplib2](https://httplib2.readthedocs.io/en/latest/).
|
|
46
|
+
- Support [ipython](https://ipython.readthedocs.io/en/stable/).
|
|
47
|
+
- Support [jinja2](https://jinja.palletsprojects.com/en/latest/).
|
|
48
|
+
- Support [jsonschema](https://python-jsonschema.readthedocs.io/en/stable/).
|
|
49
|
+
- Support [jupyter-core](https://jupyter-core.readthedocs.io/en/latest/).
|
|
50
|
+
- Support [markupsafe](https://markupsafe.palletsprojects.com/en/stable/).
|
|
51
|
+
- Support [matplotlib](https://matplotlib.org/stable/api/index.html).
|
|
52
|
+
- Support [more-itertools](https://more-itertools.readthedocs.io/en/stable/).
|
|
53
|
+
- Support [multidict](https://multidict.aio-libs.org/en/stable/).
|
|
54
|
+
- Support [nbformat](https://nbformat.readthedocs.io/en/latest/).
|
|
55
|
+
- Support [networkx](https://networkx.org/documentation/stable/reference/index.html).
|
|
56
|
+
- Support [numba](https://numba.readthedocs.io/en/stable/reference/index.html).
|
|
57
|
+
- Support [oauthlib](https://oauthlib.readthedocs.io/en/latest/).
|
|
58
|
+
- Support [packaging](https://packaging.pypa.io/en/stable/).
|
|
59
|
+
- Support [pathspec](https://python-path-specification.readthedocs.io/en/latest/index.html).
|
|
60
|
+
- Support [pillow](https://pillow.readthedocs.io/en/stable/).
|
|
61
|
+
- Support [platformdirs](https://platformdirs.readthedocs.io/en/latest/).
|
|
62
|
+
- Support [pluggy](https://pluggy.readthedocs.io/en/latest/).
|
|
63
|
+
- Support [propcache](https://propcache.aio-libs.org/en/latest/).
|
|
64
|
+
- Support [protobuf](https://googleapis.dev/python/protobuf/latest/).
|
|
65
|
+
- Support [psutil](https://psutil.readthedocs.io/en/latest/).
|
|
66
|
+
- Support [pyarrow](https://arrow.apache.org/docs/python/api.html).
|
|
67
|
+
- Support [pyasn1](https://pyasn1.readthedocs.io/en/latest/contents.html).
|
|
68
|
+
- Support [pydantic-core](https://docs.pydantic.dev/latest/).
|
|
69
|
+
- Support [pydantic](https://docs.pydantic.dev/latest/).
|
|
70
|
+
- Support [pygments](https://pygments.org/docs/api/).
|
|
71
|
+
- Support [pyjwt](https://pyjwt.readthedocs.io/en/stable/).
|
|
72
|
+
- Support [pyOpenSSL](https://www.pyopenssl.org/en/latest/).
|
|
73
|
+
- Support [pyparsing](https://pyparsing-docs.readthedocs.io/en/latest/).
|
|
74
|
+
- Support [pytest](https://docs.pytest.org/en/stable/reference/index.html).
|
|
75
|
+
- Support [requests-oauthlib](https://requests-oauthlib.readthedocs.io/en/latest/).
|
|
76
|
+
- Support [requests-toolbelt](https://toolbelt.readthedocs.io/en/latest/index.html).
|
|
77
|
+
- Support [rich](https://rich.readthedocs.io/en/latest/).
|
|
78
|
+
- Support [rpds-py](https://rpds.readthedocs.io/en/latest/).
|
|
79
|
+
- Support [s3fs](https://s3fs.readthedocs.io/en/latest/).
|
|
80
|
+
- Support [scikit-learn](https://scikit-learn.org/stable/api/index.html).
|
|
81
|
+
- Support [scipy](https://docs.scipy.org/doc/scipy/reference/index.html).
|
|
82
|
+
- Support [semver](https://python-semver.readthedocs.io/en/latest/).
|
|
83
|
+
- Support [setuptools](https://setuptools.pypa.io/en/latest/).
|
|
84
|
+
- Support [six](https://six.readthedocs.io/).
|
|
85
|
+
- Support [sniffio](https://sniffio.readthedocs.io/en/latest/).
|
|
86
|
+
- Support [sqlalchemy](https://docs.sqlalchemy.org/en/20/).
|
|
87
|
+
- Support [tomlkit](https://tomlkit.readthedocs.io/en/latest/).
|
|
88
|
+
- Support [torch](https://docs.pytorch.org/docs/stable/index.html).
|
|
89
|
+
- Support [tox](https://tox.wiki/en/stable/).
|
|
90
|
+
- Support [trio](https://trio.readthedocs.io/en/stable/).
|
|
91
|
+
- Support [typing-extensions](https://typing-extensions.readthedocs.io/en/latest/).
|
|
92
|
+
- Support [werkzeug](https://werkzeug.palletsprojects.com/en/stable/).
|
|
93
|
+
- Support [wrapt](https://wrapt.readthedocs.io/en/master/).
|
|
94
|
+
- Support [yarl](https://yarl.aio-libs.org/en/latest/).
|
|
95
|
+
|
|
96
|
+
## v2025.4
|
|
97
|
+
|
|
98
|
+
- Fix a bug in the crawler where relative paths aren't joined correctly.
|
|
99
|
+
- Support [pandas](https://pandas.pydata.org/docs/reference/index.html).
|
|
100
|
+
- Support [python-dateutil](https://dateutil.readthedocs.io/en/stable/).
|
|
101
|
+
- Support [requests](https://requests.readthedocs.io/en/latest/).
|
|
102
|
+
- Support [urllib3](https://urllib3.readthedocs.io/en/stable/reference/index.html).
|
|
103
|
+
|
|
104
|
+
## v2025.3
|
|
105
|
+
|
|
106
|
+
- Support [numpy](https://numpy.org/doc/stable/reference/index.html).
|
|
107
|
+
|
|
108
|
+
## v2025.2
|
|
109
|
+
|
|
110
|
+
- Added a new `pyrefdev-indexer` CLI to `crawl-docs` and `parse-docs`. The `mapping.py` is now reproducible and easily updatable when Python 3.14 is released.
|
|
111
|
+
- Update the mappings.
|
|
112
|
+
|
|
113
|
+
## v2025.1
|
|
114
|
+
|
|
115
|
+
Initial release.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
The project has several components:
|
|
8
|
+
|
|
9
|
+
1. **Web Server** (`src/pyrefdev/server.py`): FastAPI application that serves redirects based on symbol lookup. `index.html` is the landing page of the server
|
|
10
|
+
2. **CLI Tool** (`src/pyrefdev/__main__.py`): Command-line interface that opens documentation in browser
|
|
11
|
+
3. **Indexer** (`src/pyrefdev/indexer/`): Tools for crawling, parsing, and managing documentation mappings
|
|
12
|
+
4. **Mapping System** (`src/pyrefdev/mapping/`): Individual Python files per package containing symbol-to-URL mappings
|
|
13
|
+
|
|
14
|
+
## Common Commands
|
|
15
|
+
|
|
16
|
+
### Development Setup
|
|
17
|
+
```bash
|
|
18
|
+
uv sync --all-extras --locked
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Testing
|
|
22
|
+
```bash
|
|
23
|
+
uv run pytest
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Run Web Server
|
|
27
|
+
```bash
|
|
28
|
+
uv run uvicorn pyrefdev.server:app --reload
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Run CLI Tool
|
|
32
|
+
```bash
|
|
33
|
+
pyrefdev <symbol>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Indexer Operations
|
|
37
|
+
```bash
|
|
38
|
+
pyrefdev-indexer add-docs --docs-directory api-docs --package <package> --url <API reference doc root URL>
|
|
39
|
+
pyrefdev-indexer crawl-docs --docs-directory api-docs --package <package>
|
|
40
|
+
pyrefdev-indexer parse-docs --docs-directory api-docs --package <package>
|
|
41
|
+
pyrefdev-indexer update-docs --docs-directory api-docs --package <package>
|
|
42
|
+
pyrefdev-indexer update-landing-page
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Development Workflow
|
|
46
|
+
|
|
47
|
+
- **Testing**: Run pytest to ensure mappings work correctly
|
|
48
|
+
|
|
49
|
+
## Important Notes
|
|
50
|
+
|
|
51
|
+
- Server deployment uses systemd and is configured in `pyrefdev.service`
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyrefdev
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.6
|
|
4
4
|
Summary: The entry point to Python reference docs
|
|
5
|
-
Project-URL:
|
|
5
|
+
Project-URL: Homepage, https://pyref.dev
|
|
6
6
|
Project-URL: Source, https://github.com/mangoumbrella/pyref.dev
|
|
7
|
+
Project-URL: Changelog, https://github.com/mangoumbrella/pyref.dev/blob/main/CHANGELOG.md
|
|
7
8
|
Author-email: Mango Umbrella LLC <hi@mangoumbrella.com>
|
|
8
9
|
License-Expression: Apache-2.0
|
|
9
10
|
License-File: LICENSE
|
|
@@ -22,10 +23,12 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
22
23
|
Classifier: Programming Language :: Python :: Free Threading
|
|
23
24
|
Classifier: Topic :: Documentation
|
|
24
25
|
Requires-Python: >=3.10
|
|
25
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: cyclopts>=3.19.0
|
|
27
|
+
Requires-Dist: jinja2>=3.1.6
|
|
28
|
+
Requires-Dist: packaging>=25.0
|
|
29
|
+
Requires-Dist: yib>=0.3.0
|
|
26
30
|
Provides-Extra: indexer
|
|
27
31
|
Requires-Dist: beautifulsoup4>=4.13.4; extra == 'indexer'
|
|
28
|
-
Requires-Dist: cyclopts>=3.19.0; extra == 'indexer'
|
|
29
32
|
Requires-Dist: rich>=14.0.0; extra == 'indexer'
|
|
30
33
|
Provides-Extra: server
|
|
31
34
|
Requires-Dist: fastapi<1,>=0.115.12; extra == 'server'
|
|
@@ -52,10 +55,10 @@ Alternatively, you could also `pip install pyrefdev` and run the `pyrefdev` CLI
|
|
|
52
55
|
|
|
53
56
|
## Examples
|
|
54
57
|
|
|
55
|
-
* https://pyref.dev/json
|
|
56
|
-
* https://pyref.dev/pathlib.Path
|
|
57
|
-
* https://pyref.dev/datetime.datetime.strftime
|
|
58
|
-
* https://pyref.dev/numpy.array
|
|
58
|
+
* [pyref.dev/json](https://pyref.dev/json)
|
|
59
|
+
* [pyref.dev/pathlib.Path](https://pyref.dev/pathlib.Path)
|
|
60
|
+
* [pyref.dev/datetime.datetime.strftime](https://pyref.dev/datetime.datetime.strftime)
|
|
61
|
+
* [pyref.dev/numpy.array](https://pyref.dev/numpy.array)
|
|
59
62
|
|
|
60
63
|
## Supported packages
|
|
61
64
|
|
|
@@ -81,7 +84,7 @@ To update to a new version:
|
|
|
81
84
|
```bash
|
|
82
85
|
> cd pyref.dev
|
|
83
86
|
> git pull
|
|
84
|
-
> uv sync --all-extras
|
|
87
|
+
> uv sync --all-extras --locked
|
|
85
88
|
> systemctl restart pyrefdev.service
|
|
86
89
|
```
|
|
87
90
|
|
|
@@ -18,10 +18,10 @@ Alternatively, you could also `pip install pyrefdev` and run the `pyrefdev` CLI
|
|
|
18
18
|
|
|
19
19
|
## Examples
|
|
20
20
|
|
|
21
|
-
* https://pyref.dev/json
|
|
22
|
-
* https://pyref.dev/pathlib.Path
|
|
23
|
-
* https://pyref.dev/datetime.datetime.strftime
|
|
24
|
-
* https://pyref.dev/numpy.array
|
|
21
|
+
* [pyref.dev/json](https://pyref.dev/json)
|
|
22
|
+
* [pyref.dev/pathlib.Path](https://pyref.dev/pathlib.Path)
|
|
23
|
+
* [pyref.dev/datetime.datetime.strftime](https://pyref.dev/datetime.datetime.strftime)
|
|
24
|
+
* [pyref.dev/numpy.array](https://pyref.dev/numpy.array)
|
|
25
25
|
|
|
26
26
|
## Supported packages
|
|
27
27
|
|
|
@@ -47,7 +47,7 @@ To update to a new version:
|
|
|
47
47
|
```bash
|
|
48
48
|
> cd pyref.dev
|
|
49
49
|
> git pull
|
|
50
|
-
> uv sync --all-extras
|
|
50
|
+
> uv sync --all-extras --locked
|
|
51
51
|
> systemctl restart pyrefdev.service
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -30,13 +30,17 @@ keywords = [
|
|
|
30
30
|
]
|
|
31
31
|
requires-python = ">=3.10"
|
|
32
32
|
dependencies = [
|
|
33
|
-
"
|
|
33
|
+
"cyclopts>=3.19.0",
|
|
34
|
+
"jinja2>=3.1.6",
|
|
35
|
+
"packaging>=25.0",
|
|
36
|
+
"yib>=0.3.0",
|
|
34
37
|
]
|
|
35
38
|
dynamic = ["version"]
|
|
36
39
|
|
|
37
40
|
[project.urls]
|
|
38
|
-
|
|
41
|
+
Homepage = "https://pyref.dev"
|
|
39
42
|
Source = "https://github.com/mangoumbrella/pyref.dev"
|
|
43
|
+
Changelog = "https://github.com/mangoumbrella/pyref.dev/blob/main/CHANGELOG.md"
|
|
40
44
|
|
|
41
45
|
[project.optional-dependencies]
|
|
42
46
|
server = [
|
|
@@ -44,13 +48,12 @@ server = [
|
|
|
44
48
|
"fastapi>=0.115.12,<1",
|
|
45
49
|
]
|
|
46
50
|
indexer = [
|
|
47
|
-
"cyclopts>=3.19.0",
|
|
48
51
|
"rich>=14.0.0",
|
|
49
52
|
"Beautifulsoup4>=4.13.4",
|
|
50
53
|
]
|
|
51
54
|
|
|
52
55
|
[project.scripts]
|
|
53
|
-
pyrefdev = "pyrefdev.__main__:
|
|
56
|
+
pyrefdev = "pyrefdev.__main__:app"
|
|
54
57
|
pyrefdev-indexer = "pyrefdev.indexer.__main__:app"
|
|
55
58
|
|
|
56
59
|
[tool.hatch.version]
|
|
@@ -65,4 +68,5 @@ version = "{version}"
|
|
|
65
68
|
[dependency-groups]
|
|
66
69
|
dev = [
|
|
67
70
|
"pytest>=8.4.1",
|
|
71
|
+
"pre-commit>=4.2.0",
|
|
68
72
|
]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import webbrowser
|
|
2
|
+
import sys
|
|
3
|
+
from typing import Annotated
|
|
4
|
+
|
|
5
|
+
import cyclopts
|
|
6
|
+
from cyclopts import Parameter
|
|
7
|
+
|
|
8
|
+
import pyrefdev
|
|
9
|
+
from pyrefdev.mapping import MAPPING
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
app = cyclopts.App("pyrefdev", help=pyrefdev.__doc__)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@app.default
|
|
16
|
+
def main(
|
|
17
|
+
symbol: str,
|
|
18
|
+
/,
|
|
19
|
+
*,
|
|
20
|
+
should_print: Annotated[
|
|
21
|
+
bool,
|
|
22
|
+
Parameter(
|
|
23
|
+
name=["--print", "-p"],
|
|
24
|
+
negative="--no-print",
|
|
25
|
+
help="When true, print the API reference URL instead of opening it in the browser.",
|
|
26
|
+
),
|
|
27
|
+
] = False,
|
|
28
|
+
):
|
|
29
|
+
if not (url := MAPPING.get(symbol)):
|
|
30
|
+
url = MAPPING.get(symbol.lower())
|
|
31
|
+
if url:
|
|
32
|
+
if should_print:
|
|
33
|
+
print(url)
|
|
34
|
+
else:
|
|
35
|
+
webbrowser.open_new_tab(url)
|
|
36
|
+
else:
|
|
37
|
+
print(f"{symbol} not found", file=sys.stderr)
|
|
38
|
+
sys.exit(1)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
app()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "2025.6"
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
|
|
3
|
+
from yib import yconsole
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
console = yconsole.Console(stderr=True)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclasses.dataclass
|
|
10
|
+
class Package:
|
|
11
|
+
pypi: str
|
|
12
|
+
# The crawler will crawl URLs with the same prefix until the last slash.
|
|
13
|
+
index_url: str
|
|
14
|
+
namespaces: list[str] = dataclasses.field(default_factory=list)
|
|
15
|
+
exclude_root_urls: list[str] = dataclasses.field(default_factory=list)
|
|
16
|
+
|
|
17
|
+
def __post_init__(self):
|
|
18
|
+
if not self.namespaces:
|
|
19
|
+
self.namespaces = [self.pypi.replace("-", "_")]
|
|
20
|
+
|
|
21
|
+
def is_cpython(self):
|
|
22
|
+
return self.pypi == "__python__"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# fmt: off
|
|
26
|
+
_packages = [
|
|
27
|
+
Package(
|
|
28
|
+
pypi="__python__",
|
|
29
|
+
index_url="https://docs.python.org/3/library",
|
|
30
|
+
exclude_root_urls=[
|
|
31
|
+
"https://docs.python.org/3/copyright.html", # Conflict with built-in copyright.
|
|
32
|
+
],
|
|
33
|
+
),
|
|
34
|
+
Package(pypi="attrs", index_url="https://www.attrs.org/en/stable/", namespaces=["attrs", "attr"]),
|
|
35
|
+
Package(pypi="boto3", index_url="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html", exclude_root_urls=["https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/"]), # TODO: Support boto services
|
|
36
|
+
Package(pypi="botocore", index_url="https://botocore.amazonaws.com/v1/documentation/api/latest/index.html", exclude_root_urls=["https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/"]), # TODO: Support boto services
|
|
37
|
+
Package(pypi="charset-normalizer", index_url="https://charset-normalizer.readthedocs.io/en/latest/"),
|
|
38
|
+
Package(pypi="cryptography", index_url="https://cryptography.io/en/latest/"),
|
|
39
|
+
Package(pypi="fsspec", index_url="https://filesystem-spec.readthedocs.io/en/latest/"),
|
|
40
|
+
Package(pypi="google-api-core", namespaces=["google.api_core"], index_url="https://googleapis.dev/python/google-api-core/latest/"),
|
|
41
|
+
Package(pypi="numpy", index_url="https://numpy.org/doc/stable/reference/index.html"),
|
|
42
|
+
Package(pypi="packaging", index_url="https://packaging.pypa.io/en/stable/"),
|
|
43
|
+
Package(pypi="pandas", index_url="https://pandas.pydata.org/docs/reference/index.html"),
|
|
44
|
+
Package(pypi="protobuf", index_url="https://googleapis.dev/python/protobuf/latest/",namespaces=["google.protobuf"]),
|
|
45
|
+
Package(pypi="pydantic-core", index_url="https://docs.pydantic.dev/latest/"),
|
|
46
|
+
Package(pypi="pydantic", index_url="https://docs.pydantic.dev/latest/"),
|
|
47
|
+
Package(pypi="python-dateutil", namespaces=["dateutil"], index_url="https://dateutil.readthedocs.io/en/stable/"),
|
|
48
|
+
Package(pypi="requests", index_url="https://requests.readthedocs.io/en/latest/"),
|
|
49
|
+
Package(pypi="s3fs", index_url="https://s3fs.readthedocs.io/en/latest/"),
|
|
50
|
+
Package(pypi="setuptools", index_url="https://setuptools.pypa.io/en/latest/"),
|
|
51
|
+
Package(pypi="six", index_url="https://six.readthedocs.io/"),
|
|
52
|
+
Package(pypi="typing-extensions", index_url="https://typing-extensions.readthedocs.io/en/latest/"),
|
|
53
|
+
Package(pypi="urllib3", index_url="https://urllib3.readthedocs.io/en/stable/reference/index.html"),
|
|
54
|
+
Package(pypi="platformdirs", index_url="https://platformdirs.readthedocs.io/en/latest/"),
|
|
55
|
+
Package(pypi="click", index_url="https://click.palletsprojects.com/en/stable/"),
|
|
56
|
+
Package(pypi="grpcio", index_url="https://grpc.github.io/grpc/python/index.html", namespaces=["grpc"]),
|
|
57
|
+
Package(pypi="jinja2", index_url="https://jinja.palletsprojects.com/en/latest/"),
|
|
58
|
+
Package(pypi="pyasn1", index_url="https://pyasn1.readthedocs.io/en/latest/contents.html"),
|
|
59
|
+
Package(pypi="h11", index_url="https://h11.readthedocs.io/en/latest/"),
|
|
60
|
+
Package(pypi="filelock", index_url="https://py-filelock.readthedocs.io/en/latest/"),
|
|
61
|
+
Package(pypi="aiohttp", index_url="https://docs.aiohttp.org/en/stable/"),
|
|
62
|
+
Package(pypi="cachetools", index_url="https://cachetools.readthedocs.io/en/latest/"),
|
|
63
|
+
Package(pypi="pluggy", index_url="https://pluggy.readthedocs.io/en/latest/"),
|
|
64
|
+
Package(pypi="markupsafe", index_url="https://markupsafe.palletsprojects.com/en/stable/"),
|
|
65
|
+
Package(pypi="scipy", index_url="https://docs.scipy.org/doc/scipy/reference/index.html"),
|
|
66
|
+
Package(pypi="propcache", index_url="https://propcache.aio-libs.org/en/latest/"),
|
|
67
|
+
Package(pypi="pathspec", index_url="https://python-path-specification.readthedocs.io/en/latest/index.html"),
|
|
68
|
+
Package(pypi="aiosignal", index_url="https://aiosignal.aio-libs.org/en/stable/"),
|
|
69
|
+
Package(pypi="pyOpenSSL", namespaces=["OpenSSL"], index_url="https://www.pyopenssl.org/en/latest/"),
|
|
70
|
+
Package(pypi="oauthlib", index_url="https://oauthlib.readthedocs.io/en/latest/"),
|
|
71
|
+
Package(pypi="requests-toolbelt", index_url="https://toolbelt.readthedocs.io/en/latest/index.html"),
|
|
72
|
+
Package(pypi="azure-identity", namespaces=["azure.identity"], index_url="https://azuresdkdocs.z19.web.core.windows.net/python/azure-identity/latest/index.html"),
|
|
73
|
+
Package(pypi="distlib", index_url="https://distlib.readthedocs.io/en/latest/"),
|
|
74
|
+
Package(pypi="pillow", namespaces=["PIL"], index_url="https://pillow.readthedocs.io/en/stable/"),
|
|
75
|
+
Package(pypi="frozenlist", index_url="https://frozenlist.aio-libs.org/en/latest/"),
|
|
76
|
+
Package(pypi="pyparsing", index_url="https://pyparsing-docs.readthedocs.io/en/latest/"),
|
|
77
|
+
Package(pypi="tomlkit", index_url="https://tomlkit.readthedocs.io/en/latest/"),
|
|
78
|
+
Package(pypi="rich", index_url="https://rich.readthedocs.io/en/latest/"),
|
|
79
|
+
Package(pypi="sqlalchemy", index_url="https://docs.sqlalchemy.org/en/20/"),
|
|
80
|
+
Package(pypi="requests-oauthlib", index_url="https://requests-oauthlib.readthedocs.io/en/latest/"),
|
|
81
|
+
Package(pypi="yarl", index_url="https://yarl.aio-libs.org/en/latest/"),
|
|
82
|
+
Package(pypi="multidict", index_url="https://multidict.aio-libs.org/en/stable/"),
|
|
83
|
+
Package(pypi="pyarrow", index_url="https://arrow.apache.org/docs/python/api.html"),
|
|
84
|
+
Package(pypi="sniffio", index_url="https://sniffio.readthedocs.io/en/latest/"),
|
|
85
|
+
Package(pypi="jsonschema", index_url="https://python-jsonschema.readthedocs.io/en/stable/"),
|
|
86
|
+
Package(pypi="google-auth", namespaces=["google.auth"], index_url="https://googleapis.dev/python/google-auth/latest/"),
|
|
87
|
+
Package(pypi="pyjwt", namespaces=["jwt"], index_url="https://pyjwt.readthedocs.io/en/stable/"),
|
|
88
|
+
Package(pypi="anyio", index_url="https://anyio.readthedocs.io/en/stable/"),
|
|
89
|
+
Package(pypi="psutil", index_url="https://psutil.readthedocs.io/en/latest/"),
|
|
90
|
+
Package(pypi="wrapt", index_url="https://wrapt.readthedocs.io/en/master/"),
|
|
91
|
+
Package(pypi="pygments", index_url="https://pygments.org/docs/api/"),
|
|
92
|
+
Package(pypi="rpds-py", namespaces=["rpds"], index_url="https://rpds.readthedocs.io/en/latest/"),
|
|
93
|
+
Package(pypi="pytest", index_url="https://docs.pytest.org/en/stable/reference/index.html"),
|
|
94
|
+
Package(pypi="libcst", index_url="https://libcst.readthedocs.io/en/latest/"),
|
|
95
|
+
Package(pypi="numba", index_url="https://numba.readthedocs.io/en/stable/reference/index.html"),
|
|
96
|
+
Package(pypi="trio", index_url="https://trio.readthedocs.io/en/stable/"),
|
|
97
|
+
Package(pypi="tox", index_url="https://tox.wiki/en/stable/"),
|
|
98
|
+
Package(pypi="h5py", index_url="https://docs.h5py.org/en/stable/"),
|
|
99
|
+
Package(pypi="cattrs", index_url="https://catt.rs/en/stable/"),
|
|
100
|
+
Package(pypi="nbformat", index_url="https://nbformat.readthedocs.io/en/latest/"),
|
|
101
|
+
Package(pypi="semver", index_url="https://python-semver.readthedocs.io/en/latest/"),
|
|
102
|
+
Package(pypi="aioitertools", index_url="https://aioitertools.omnilib.dev/en/stable/"),
|
|
103
|
+
Package(pypi="torch", index_url="https://docs.pytorch.org/docs/stable/index.html"),
|
|
104
|
+
Package(pypi="arrow", index_url="https://arrow.readthedocs.io/en/latest/"),
|
|
105
|
+
Package(pypi="apache-beam", index_url="https://beam.apache.org/releases/pydoc/current/"),
|
|
106
|
+
Package(pypi="fastapi", index_url="https://fastapi.tiangolo.com/reference/"),
|
|
107
|
+
Package(pypi="flask", index_url="https://flask.palletsprojects.com/en/stable/"),
|
|
108
|
+
Package(pypi="fastjsonschema", index_url="https://horejsek.github.io/python-fastjsonschema/"),
|
|
109
|
+
Package(pypi="jupyter-core", index_url="https://jupyter-core.readthedocs.io/en/latest/"),
|
|
110
|
+
Package(pypi="more-itertools", index_url="https://more-itertools.readthedocs.io/en/stable/"),
|
|
111
|
+
Package(pypi="werkzeug", index_url="https://werkzeug.palletsprojects.com/en/stable/"),
|
|
112
|
+
Package(pypi="scikit-learn", namespaces=["sklearn"], index_url="https://scikit-learn.org/stable/api/index.html"),
|
|
113
|
+
Package(pypi="coverage", index_url="https://coverage.readthedocs.io/en/latest/"),
|
|
114
|
+
Package(pypi="matplotlib", index_url="https://matplotlib.org/stable/api/index.html"),
|
|
115
|
+
Package(pypi="networkx", index_url="https://networkx.org/documentation/stable/reference/index.html"),
|
|
116
|
+
Package(pypi="ipython", index_url="https://ipython.readthedocs.io/en/stable/"),
|
|
117
|
+
Package(pypi="httplib2", index_url="https://httplib2.readthedocs.io/en/latest/"),
|
|
118
|
+
Package(pypi="cyclopts", index_url="https://cyclopts.readthedocs.io/en/latest/"),
|
|
119
|
+
Package(pypi="yib", index_url="https://yib.readthedocs.io/en/latest/"),
|
|
120
|
+
# ENTRY-LINE-MARKER
|
|
121
|
+
]
|
|
122
|
+
# fmt: on
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
SUPPORTED_PACKAGES: dict[str, Package] = {pkg.pypi: pkg for pkg in _packages}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def get_packages(package: str | None) -> list[Package]:
|
|
129
|
+
if package is None:
|
|
130
|
+
return list(SUPPORTED_PACKAGES.values())
|
|
131
|
+
else:
|
|
132
|
+
if package not in SUPPORTED_PACKAGES:
|
|
133
|
+
console.fatal(f"No package named {package}")
|
|
134
|
+
return [SUPPORTED_PACKAGES[package]]
|
|
@@ -5,6 +5,7 @@ from pyrefdev.indexer.add_docs import add_docs
|
|
|
5
5
|
from pyrefdev.indexer.crawl_docs import crawl_docs
|
|
6
6
|
from pyrefdev.indexer.parse_docs import parse_docs
|
|
7
7
|
from pyrefdev.indexer.update_docs import update_docs
|
|
8
|
+
from pyrefdev.indexer.update_landing_page import update_landing_page
|
|
8
9
|
from pyrefdev.config import console
|
|
9
10
|
|
|
10
11
|
|
|
@@ -18,6 +19,7 @@ app.command(add_docs)
|
|
|
18
19
|
app.command(crawl_docs)
|
|
19
20
|
app.command(parse_docs)
|
|
20
21
|
app.command(update_docs)
|
|
22
|
+
app.command(update_landing_page)
|
|
21
23
|
|
|
22
24
|
|
|
23
25
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
from pyrefdev import config
|
|
6
|
+
from pyrefdev.config import console
|
|
7
|
+
from pyrefdev.indexer.update_docs import update_docs
|
|
8
|
+
from pyrefdev.indexer.update_landing_page import update_landing_page_with_packages
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
_MARKER = re.compile("(\n.*ENTRY-LINE-MARKER.*\n)")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def add_docs(
|
|
15
|
+
*,
|
|
16
|
+
package: str,
|
|
17
|
+
docs_directory: Path | None = None,
|
|
18
|
+
url: str,
|
|
19
|
+
namespaces: list[str] | None = None,
|
|
20
|
+
crawl: bool = True,
|
|
21
|
+
num_threads_per_package: int | None = None,
|
|
22
|
+
) -> None:
|
|
23
|
+
if package in config.SUPPORTED_PACKAGES:
|
|
24
|
+
console.fatal(f"Package exists: {package}")
|
|
25
|
+
|
|
26
|
+
if namespaces:
|
|
27
|
+
ns_content = ", ".join(f'"{ns}"' for ns in namespaces)
|
|
28
|
+
ns_str = f", namespaces=[{ns_content}]"
|
|
29
|
+
else:
|
|
30
|
+
ns_str = ""
|
|
31
|
+
config_entry = f'\n Package(pypi="{package}"{ns_str}, index_url="{url}"),'
|
|
32
|
+
config_file = Path(config.__file__)
|
|
33
|
+
config_content = config_file.read_text()
|
|
34
|
+
config_content = _MARKER.sub(config_entry + r"\g<1>", config_content)
|
|
35
|
+
config_file.write_text(config_content)
|
|
36
|
+
|
|
37
|
+
if crawl:
|
|
38
|
+
importlib.reload(config)
|
|
39
|
+
update_docs(
|
|
40
|
+
docs_directory=docs_directory,
|
|
41
|
+
package=package,
|
|
42
|
+
num_threads_per_package=num_threads_per_package,
|
|
43
|
+
)
|
|
44
|
+
update_landing_page_with_packages(config.SUPPORTED_PACKAGES)
|