Skip to content

Commit 4351f51

Browse files
shixishclaude
andcommitted
Vendor diffbot-python db CLI + Cowork bundling tooling
Bundle the db CLI and its pure-Python dependency tree under vendor/ so the skills can run with no pip install at runtime (Cowork's sandbox blocks PyPI). The set is pinned to a Python 3.9-compatible resolution (macOS system floor); diffbot-python's >=3.10 metadata is conservative and its code runs on 3.9. - scripts/vendor-db.sh regenerates vendor/ (3.9-targeted, deterministic) - scripts/db-launcher.py portable launcher (resolves vendor/, guards version) - scripts/build-bundle.sh packages a Cowork-installable zip (incl. vendor/) Cowork-only: main keeps the normal PyPI bootstrap. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 201cc1f commit 4351f51

762 files changed

Lines changed: 249462 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.gitignore‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ __pycache__/
22
*.pyc
33
*.pyo
44
.cursor/
5+
dist/
6+
.DS_Store

‎scripts/build-bundle.sh‎

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Build a Cowork-installable zip of the diffbot plugin.
4+
#
5+
# Produces dist/<name>.zip containing a single top-level <name>/ folder with
6+
# only the files the plugin needs: the per-tool manifests, the skills/ tree,
7+
# and README/LICENSE. Internal dev files (docs/, PLAN.md, CLAUDE.md, .git) are
8+
# left out so the bundle stays lean.
9+
#
10+
# Re-run after editing a skill, then re-upload the same dist/<name>.zip in
11+
# Cowork via Customize > Plugins.
12+
#
13+
# Usage:
14+
# scripts/build-bundle.sh # -> dist/diffbot.zip
15+
# scripts/build-bundle.sh --version # -> dist/diffbot-<version>.zip as well
16+
17+
set -euo pipefail
18+
19+
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
20+
cd "$repo_root"
21+
22+
manifest=".claude-plugin/plugin.json"
23+
[ -f "$manifest" ] || { echo "error: $manifest not found" >&2; exit 1; }
24+
25+
name="$(jq -r '.name' "$manifest")"
26+
version="$(jq -r '.version' "$manifest")"
27+
[ -n "$name" ] && [ "$name" != "null" ] || { echo "error: could not read .name from $manifest" >&2; exit 1; }
28+
29+
# Files/dirs to include in the bundle (everything the host tools read).
30+
include=(
31+
".claude-plugin"
32+
".cortex-plugin"
33+
".factory-plugin"
34+
".github"
35+
"skills"
36+
"vendor"
37+
"README.md"
38+
"LICENSE"
39+
)
40+
41+
dist="$repo_root/dist"
42+
mkdir -p "$dist"
43+
44+
# Stage into a temp dir under the plugin name so the zip wraps everything in a
45+
# single <name>/ folder (the layout Cowork's zip upload expects).
46+
stage="$(mktemp -d)"
47+
trap 'rm -rf "$stage"' EXIT
48+
pkg="$stage/$name"
49+
mkdir -p "$pkg"
50+
51+
for item in "${include[@]}"; do
52+
if [ -e "$item" ]; then
53+
# --no-D and excludes keep cruft out of the copy.
54+
rsync -a --exclude='.DS_Store' --exclude='__pycache__' --exclude='*.pyc' \
55+
"$item" "$pkg/"
56+
else
57+
echo "warning: skipping missing path '$item'" >&2
58+
fi
59+
done
60+
61+
out="$dist/$name.zip"
62+
rm -f "$out"
63+
# Zip from the stage root so paths are <name>/...
64+
( cd "$stage" && zip -rq "$out" "$name" -x '*.DS_Store' )
65+
66+
echo "Built $out (plugin '$name' v$version)"
67+
68+
if [ "${1:-}" = "--version" ]; then
69+
versioned="$dist/$name-$version.zip"
70+
cp "$out" "$versioned"
71+
echo "Built $versioned"
72+
fi

‎scripts/db-launcher.py‎

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Portable launcher for the vendored Diffbot `db` CLI.
4+
5+
Source of truth for vendor/bin/db — scripts/vendor-db.sh copies this file into
6+
the bundle. It adds the vendored dependency tree (vendor/) to sys.path and
7+
dispatches to diffbot.cli:main, so the CLI runs straight from the package with
8+
no virtualenv and no pip install.
9+
10+
The vendored bundle is pinned to a Python 3.9-compatible dependency set (3.9 is
11+
the macOS system interpreter). diffbot-python's own metadata says >=3.10, but its
12+
code and all deps compile and run on 3.9 (verified), so 3.9 is the real floor. If
13+
we are launched under something older still, we re-exec under a newer interpreter
14+
when one is available, and otherwise exit with a clear message rather than a deep
15+
ImportError/SyntaxError.
16+
"""
17+
import os
18+
import sys
19+
20+
_MIN = (3, 9)
21+
22+
23+
def _ensure_modern_python():
24+
if sys.version_info >= _MIN:
25+
return
26+
import shutil
27+
28+
for candidate in ("python3.13", "python3.12", "python3.11", "python3.10", "python3.9"):
29+
path = shutil.which(candidate)
30+
if path:
31+
os.execv(path, [path, os.path.abspath(__file__), *sys.argv[1:]])
32+
sys.exit(
33+
"diffbot db requires Python >= {}.{}, but {}.{} was found and no newer "
34+
"interpreter is on PATH. Install Python {}.{}+ and retry.".format(
35+
*_MIN, sys.version_info[0], sys.version_info[1], *_MIN
36+
)
37+
)
38+
39+
40+
_ensure_modern_python()
41+
42+
_VENDOR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
43+
if _VENDOR not in sys.path:
44+
sys.path.insert(0, _VENDOR)
45+
46+
from diffbot.cli import main
47+
48+
if __name__ == "__main__":
49+
sys.exit(main())

‎scripts/vendor-db.sh‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Regenerate vendor/ — the self-contained Diffbot `db` CLI plus its pure-Python
4+
# dependency tree — so the skills run with no pip install at runtime.
5+
#
6+
# Network is needed only here, at build time. The produced vendor/ needs none.
7+
#
8+
# The bundle targets Python 3.9 (the macOS system interpreter). diffbot-python's
9+
# metadata declares >=3.10, but its code and every dependency run fine on 3.9, so
10+
# we bypass only diffbot-python's own gate and resolve the deps against 3.9 wheels
11+
# (--python-version 3.9). Any builder Python works; the output is 3.9-compatible.
12+
#
13+
# Usage:
14+
# scripts/vendor-db.sh # vendor latest diffbot-python
15+
# scripts/vendor-db.sh diffbot-python==0.2.1 # pin a specific version
16+
17+
set -euo pipefail
18+
19+
spec="${1:-diffbot-python}"
20+
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
21+
vendor="$root/vendor"
22+
target_py="3.9"
23+
24+
py=""
25+
for cand in python3.13 python3.12 python3.11 python3.10 python3.9 python3; do
26+
if command -v "$cand" >/dev/null 2>&1; then py="$(command -v "$cand")"; break; fi
27+
done
28+
[ -n "$py" ] || { echo "error: need a python3 on PATH to build the vendor bundle" >&2; exit 1; }
29+
30+
echo "Building vendor/ for '$spec' (targeting Python $target_py) with $("$py" --version)…"
31+
rm -rf "$vendor"
32+
# Step 1: diffbot-python itself, no deps, bypassing only its conservative >=3.10 gate.
33+
"$py" -m pip install --target "$vendor" --quiet --no-deps --ignore-requires-python "$spec"
34+
# Step 2: its declared deps, resolved against 3.9 wheels (honors each dep's own floor).
35+
"$py" -m pip install --target "$vendor" --quiet \
36+
--python-version "$target_py" --only-binary=:all: \
37+
'click>=8.1.0' 'httpx>=0.27.0' 'rich>=13.0.0'
38+
39+
# pip writes machine-specific console scripts into bin/; replace them with our
40+
# portable launcher (resolves vendor/ relative to itself, guards Python version).
41+
rm -rf "$vendor/bin"
42+
mkdir -p "$vendor/bin"
43+
cp "$root/scripts/db-launcher.py" "$vendor/bin/db"
44+
chmod +x "$vendor/bin/db"
45+
46+
# Drop build cruft so the committed bundle stays lean and deterministic.
47+
find "$vendor" -name '__pycache__' -type d -prune -exec rm -rf {} +
48+
find "$vendor" -type f -name '*.pyc' -delete
49+
50+
size="$(du -sh "$vendor" | awk '{print $1}')"
51+
echo "Vendored '$spec' into vendor/ ($size)."
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pip
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
Metadata-Version: 2.4
2+
Name: anyio
3+
Version: 4.12.1
4+
Summary: High-level concurrency and networking framework on top of asyncio or Trio
5+
Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
6+
License-Expression: MIT
7+
Project-URL: Documentation, https://anyio.readthedocs.io/en/latest/
8+
Project-URL: Changelog, https://anyio.readthedocs.io/en/stable/versionhistory.html
9+
Project-URL: Source code, https://github.com/agronholm/anyio
10+
Project-URL: Issue tracker, https://github.com/agronholm/anyio/issues
11+
Classifier: Development Status :: 5 - Production/Stable
12+
Classifier: Intended Audience :: Developers
13+
Classifier: Framework :: AnyIO
14+
Classifier: Typing :: Typed
15+
Classifier: Programming Language :: Python
16+
Classifier: Programming Language :: Python :: 3
17+
Classifier: Programming Language :: Python :: 3.9
18+
Classifier: Programming Language :: Python :: 3.10
19+
Classifier: Programming Language :: Python :: 3.11
20+
Classifier: Programming Language :: Python :: 3.12
21+
Classifier: Programming Language :: Python :: 3.13
22+
Classifier: Programming Language :: Python :: 3.14
23+
Requires-Python: >=3.9
24+
Description-Content-Type: text/x-rst
25+
License-File: LICENSE
26+
Requires-Dist: exceptiongroup>=1.0.2; python_version < "3.11"
27+
Requires-Dist: idna>=2.8
28+
Requires-Dist: typing_extensions>=4.5; python_version < "3.13"
29+
Provides-Extra: trio
30+
Requires-Dist: trio>=0.32.0; python_version >= "3.10" and extra == "trio"
31+
Requires-Dist: trio>=0.31.0; python_version < "3.10" and extra == "trio"
32+
Dynamic: license-file
33+
34+
.. image:: https://github.com/agronholm/anyio/actions/workflows/test.yml/badge.svg
35+
:target: https://github.com/agronholm/anyio/actions/workflows/test.yml
36+
:alt: Build Status
37+
.. image:: https://coveralls.io/repos/github/agronholm/anyio/badge.svg?branch=master
38+
:target: https://coveralls.io/github/agronholm/anyio?branch=master
39+
:alt: Code Coverage
40+
.. image:: https://readthedocs.org/projects/anyio/badge/?version=latest
41+
:target: https://anyio.readthedocs.io/en/latest/?badge=latest
42+
:alt: Documentation
43+
.. image:: https://badges.gitter.im/gitterHQ/gitter.svg
44+
:target: https://gitter.im/python-trio/AnyIO
45+
:alt: Gitter chat
46+
47+
AnyIO is an asynchronous networking and concurrency library that works on top of either asyncio_ or
48+
Trio_. It implements Trio-like `structured concurrency`_ (SC) on top of asyncio and works in harmony
49+
with the native SC of Trio itself.
50+
51+
Applications and libraries written against AnyIO's API will run unmodified on either asyncio_ or
52+
Trio_. AnyIO can also be adopted into a library or application incrementally – bit by bit, no full
53+
refactoring necessary. It will blend in with the native libraries of your chosen backend.
54+
55+
To find out why you might want to use AnyIO's APIs instead of asyncio's, you can read about it
56+
`here <https://anyio.readthedocs.io/en/stable/why.html>`_.
57+
58+
Documentation
59+
-------------
60+
61+
View full documentation at: https://anyio.readthedocs.io/
62+
63+
Features
64+
--------
65+
66+
AnyIO offers the following functionality:
67+
68+
* Task groups (nurseries_ in trio terminology)
69+
* High-level networking (TCP, UDP and UNIX sockets)
70+
71+
* `Happy eyeballs`_ algorithm for TCP connections (more robust than that of asyncio on Python
72+
3.8)
73+
* async/await style UDP sockets (unlike asyncio where you still have to use Transports and
74+
Protocols)
75+
76+
* A versatile API for byte streams and object streams
77+
* Inter-task synchronization and communication (locks, conditions, events, semaphores, object
78+
streams)
79+
* Worker threads
80+
* Subprocesses
81+
* Subinterpreter support for code parallelization (on Python 3.13 and later)
82+
* Asynchronous file I/O (using worker threads)
83+
* Signal handling
84+
* Asynchronous version of the functools_ module
85+
86+
AnyIO also comes with its own pytest_ plugin which also supports asynchronous fixtures.
87+
It even works with the popular Hypothesis_ library.
88+
89+
.. _asyncio: https://docs.python.org/3/library/asyncio.html
90+
.. _Trio: https://github.com/python-trio/trio
91+
.. _structured concurrency: https://en.wikipedia.org/wiki/Structured_concurrency
92+
.. _nurseries: https://trio.readthedocs.io/en/stable/reference-core.html#nurseries-and-spawning
93+
.. _Happy eyeballs: https://en.wikipedia.org/wiki/Happy_Eyeballs
94+
.. _pytest: https://docs.pytest.org/en/latest/
95+
.. _functools: https://docs.python.org/3/library/functools.html
96+
.. _Hypothesis: https://hypothesis.works/
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
anyio-4.12.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
2+
anyio-4.12.1.dist-info/METADATA,sha256=DfiDab9Tmmcfy802lOLTMEHJQShkOSbopCwqCYbLuJk,4277
3+
anyio-4.12.1.dist-info/RECORD,,
4+
anyio-4.12.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
5+
anyio-4.12.1.dist-info/entry_points.txt,sha256=_d6Yu6uiaZmNe0CydowirE9Cmg7zUL2g08tQpoS3Qvc,39
6+
anyio-4.12.1.dist-info/licenses/LICENSE,sha256=U2GsncWPLvX9LpsJxoKXwX8ElQkJu8gCO9uC6s8iwrA,1081
7+
anyio-4.12.1.dist-info/top_level.txt,sha256=QglSMiWX8_5dpoVAEIHdEYzvqFMdSYWmCj6tYw2ITkQ,6
8+
anyio/__init__.py,sha256=7iDVqMUprUuKNY91FuoKqayAhR-OY136YDPI6P78HHk,6170
9+
anyio/__pycache__/__init__.cpython-311.pyc,,
10+
anyio/__pycache__/from_thread.cpython-311.pyc,,
11+
anyio/__pycache__/functools.cpython-311.pyc,,
12+
anyio/__pycache__/lowlevel.cpython-311.pyc,,
13+
anyio/__pycache__/pytest_plugin.cpython-311.pyc,,
14+
anyio/__pycache__/to_interpreter.cpython-311.pyc,,
15+
anyio/__pycache__/to_process.cpython-311.pyc,,
16+
anyio/__pycache__/to_thread.cpython-311.pyc,,
17+
anyio/_backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18+
anyio/_backends/__pycache__/__init__.cpython-311.pyc,,
19+
anyio/_backends/__pycache__/_asyncio.cpython-311.pyc,,
20+
anyio/_backends/__pycache__/_trio.cpython-311.pyc,,
21+
anyio/_backends/_asyncio.py,sha256=xG6qv60mgGnL0mK82dxjH2b8hlkMlJ-x2BqIq3qv70Y,98863
22+
anyio/_backends/_trio.py,sha256=30Rctb7lm8g63ZHljVPVnj5aH-uK6oQvphjwUBoAzuI,41456
23+
anyio/_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24+
anyio/_core/__pycache__/__init__.cpython-311.pyc,,
25+
anyio/_core/__pycache__/_asyncio_selector_thread.cpython-311.pyc,,
26+
anyio/_core/__pycache__/_contextmanagers.cpython-311.pyc,,
27+
anyio/_core/__pycache__/_eventloop.cpython-311.pyc,,
28+
anyio/_core/__pycache__/_exceptions.cpython-311.pyc,,
29+
anyio/_core/__pycache__/_fileio.cpython-311.pyc,,
30+
anyio/_core/__pycache__/_resources.cpython-311.pyc,,
31+
anyio/_core/__pycache__/_signals.cpython-311.pyc,,
32+
anyio/_core/__pycache__/_sockets.cpython-311.pyc,,
33+
anyio/_core/__pycache__/_streams.cpython-311.pyc,,
34+
anyio/_core/__pycache__/_subprocesses.cpython-311.pyc,,
35+
anyio/_core/__pycache__/_synchronization.cpython-311.pyc,,
36+
anyio/_core/__pycache__/_tasks.cpython-311.pyc,,
37+
anyio/_core/__pycache__/_tempfile.cpython-311.pyc,,
38+
anyio/_core/__pycache__/_testing.cpython-311.pyc,,
39+
anyio/_core/__pycache__/_typedattr.cpython-311.pyc,,
40+
anyio/_core/_asyncio_selector_thread.py,sha256=2PdxFM3cs02Kp6BSppbvmRT7q7asreTW5FgBxEsflBo,5626
41+
anyio/_core/_contextmanagers.py,sha256=YInBCabiEeS-UaP_Jdxa1CaFC71ETPW8HZTHIM8Rsc8,7215
42+
anyio/_core/_eventloop.py,sha256=c2EdcBX-xnKwxPcC4Pjn3_qG9I-x4IWFO2R9RqCGjM4,6448
43+
anyio/_core/_exceptions.py,sha256=Y3aq-Wxd7Q2HqwSg7nZPvRsHEuGazv_qeet6gqEBdPk,4407
44+
anyio/_core/_fileio.py,sha256=uc7t10Vb-If7GbdWM_zFf-ajUe6uek63fSt7IBLlZW0,25731
45+
anyio/_core/_resources.py,sha256=NbmU5O5UX3xEyACnkmYX28Fmwdl-f-ny0tHym26e0w0,435
46+
anyio/_core/_signals.py,sha256=mjTBB2hTKNPRlU0IhnijeQedpWOGERDiMjSlJQsFrug,1016
47+
anyio/_core/_sockets.py,sha256=RBXHcUqZt5gg_-OOfgHVv8uq2FSKk1uVUzTdpjBoI1o,34977
48+
anyio/_core/_streams.py,sha256=FczFwIgDpnkK0bODWJXMpsUJYdvAD04kaUaGzJU8DK0,1806
49+
anyio/_core/_subprocesses.py,sha256=EXm5igL7dj55iYkPlbYVAqtbqxJxjU-6OndSTIx9SRg,8047
50+
anyio/_core/_synchronization.py,sha256=MgVVqFzvt580tHC31LiOcq1G6aryut--xRG4Ff8KwxQ,20869
51+
anyio/_core/_tasks.py,sha256=pVB7K6AAulzUM8YgXAeqNZG44nSyZ1bYJjH8GznC00I,5435
52+
anyio/_core/_tempfile.py,sha256=lHb7CW4FyIlpkf5ADAf4VmLHCKwEHF9nxqNyBCFFUiA,19697
53+
anyio/_core/_testing.py,sha256=u7MPqGXwpTxqI7hclSdNA30z2GH1Nw258uwKvy_RfBg,2340
54+
anyio/_core/_typedattr.py,sha256=P4ozZikn3-DbpoYcvyghS_FOYAgbmUxeoU8-L_07pZM,2508
55+
anyio/abc/__init__.py,sha256=6mWhcl_pGXhrgZVHP_TCfMvIXIOp9mroEFM90fYCU_U,2869
56+
anyio/abc/__pycache__/__init__.cpython-311.pyc,,
57+
anyio/abc/__pycache__/_eventloop.cpython-311.pyc,,
58+
anyio/abc/__pycache__/_resources.cpython-311.pyc,,
59+
anyio/abc/__pycache__/_sockets.cpython-311.pyc,,
60+
anyio/abc/__pycache__/_streams.cpython-311.pyc,,
61+
anyio/abc/__pycache__/_subprocesses.cpython-311.pyc,,
62+
anyio/abc/__pycache__/_tasks.cpython-311.pyc,,
63+
anyio/abc/__pycache__/_testing.cpython-311.pyc,,
64+
anyio/abc/_eventloop.py,sha256=GlzgB3UJGgG6Kr7olpjOZ-o00PghecXuofVDQ_5611Q,10749
65+
anyio/abc/_resources.py,sha256=DrYvkNN1hH6Uvv5_5uKySvDsnknGVDe8FCKfko0VtN8,783
66+
anyio/abc/_sockets.py,sha256=ECTY0jLEF18gryANHR3vFzXzGdZ-xPwELq1QdgOb0Jo,13258
67+
anyio/abc/_streams.py,sha256=005GKSCXGprxnhucILboSqc2JFovECZk9m3p-qqxXVc,7640
68+
anyio/abc/_subprocesses.py,sha256=cumAPJTktOQtw63IqG0lDpyZqu_l1EElvQHMiwJgL08,2067
69+
anyio/abc/_tasks.py,sha256=KC7wrciE48AINOI-AhPutnFhe1ewfP7QnamFlDzqesQ,3721
70+
anyio/abc/_testing.py,sha256=tBJUzkSfOXJw23fe8qSJ03kJlShOYjjaEyFB6k6MYT8,1821
71+
anyio/from_thread.py,sha256=L-0w1HxJ6BSb-KuVi57k5Tkc3yzQrx3QK5tAxMPcY-0,19141
72+
anyio/functools.py,sha256=HWj7GBEmc0Z-mZg3uok7Z7ZJn0rEC_0Pzbt0nYUDaTQ,10973
73+
anyio/lowlevel.py,sha256=AyKLVK3LaWSoK39LkCKxE4_GDMLKZBNqTrLUgk63y80,5158
74+
anyio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75+
anyio/pytest_plugin.py,sha256=3jAFQn0jv_pyoWE2GBBlHaj9sqXj4e8vob0_hgrsXE8,10244
76+
anyio/streams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77+
anyio/streams/__pycache__/__init__.cpython-311.pyc,,
78+
anyio/streams/__pycache__/buffered.cpython-311.pyc,,
79+
anyio/streams/__pycache__/file.cpython-311.pyc,,
80+
anyio/streams/__pycache__/memory.cpython-311.pyc,,
81+
anyio/streams/__pycache__/stapled.cpython-311.pyc,,
82+
anyio/streams/__pycache__/text.cpython-311.pyc,,
83+
anyio/streams/__pycache__/tls.cpython-311.pyc,,
84+
anyio/streams/buffered.py,sha256=2R3PeJhe4EXrdYqz44Y6-Eg9R6DrmlsYrP36Ir43-po,6263
85+
anyio/streams/file.py,sha256=4WZ7XGz5WNu39FQHvqbe__TQ0HDP9OOhgO1mk9iVpVU,4470
86+
anyio/streams/memory.py,sha256=F0zwzvFJKAhX_LRZGoKzzqDC2oMM-f-yyTBrEYEGOaU,10740
87+
anyio/streams/stapled.py,sha256=T8Xqwf8K6EgURPxbt1N4i7A8BAk-gScv-GRhjLXIf_o,4390
88+
anyio/streams/text.py,sha256=BcVAGJw1VRvtIqnv-o0Rb0pwH7p8vwlvl21xHq522ag,5765
89+
anyio/streams/tls.py,sha256=Jpxy0Mfbcp1BxHCwE-YjSSFaLnIBbnnwur-excYThs4,15368
90+
anyio/to_interpreter.py,sha256=_mLngrMy97TMR6VbW4Y6YzDUk9ZuPcQMPlkuyRh3C9k,7100
91+
anyio/to_process.py,sha256=J7gAA_YOuoHqnpDAf5fm1Qu6kOmTzdFbiDNvnV755vk,9798
92+
anyio/to_thread.py,sha256=menEgXYmUV7Fjg_9WqCV95P9MAtQS8BzPGGcWB_QnfQ,2687
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Wheel-Version: 1.0
2+
Generator: setuptools (80.9.0)
3+
Root-Is-Purelib: true
4+
Tag: py3-none-any
5+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[pytest11]
2+
anyio = anyio.pytest_plugin

0 commit comments

Comments
 (0)