pathapi-uri 0.1.0__py3-none-any.whl
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.
- pathapi_uri-0.1.0.dist-info/METADATA +259 -0
- pathapi_uri-0.1.0.dist-info/RECORD +48 -0
- pathapi_uri-0.1.0.dist-info/WHEEL +4 -0
- pathapi_uri-0.1.0.dist-info/entry_points.txt +17 -0
- pathapi_uri-0.1.0.dist-info/licenses/LICENSE +21 -0
- uripath/AGENTS.md +1094 -0
- uripath/README.md +213 -0
- uripath/__init__.py +27 -0
- uripath/__main__.py +7 -0
- uripath/_pathtext.py +32 -0
- uripath/_rfc3986.py +67 -0
- uripath/_transfer.py +108 -0
- uripath/_uri.py +1007 -0
- uripath/_version.py +11 -0
- uripath/cli/__init__.py +54 -0
- uripath/cli/_common.py +48 -0
- uripath/cli/_root.py +70 -0
- uripath/cli/cp.py +61 -0
- uripath/cli/read.py +22 -0
- uripath/cli/rm.py +38 -0
- uripath/cli/sync.py +78 -0
- uripath/cli/write.py +49 -0
- uripath/exceptions.py +38 -0
- uripath/py.typed +1 -0
- uripath/query.py +240 -0
- uripath/schemes/__init__.py +120 -0
- uripath/schemes/_archive.py +338 -0
- uripath/schemes/_data.py +99 -0
- uripath/schemes/_dav.py +459 -0
- uripath/schemes/_delegate.py +127 -0
- uripath/schemes/_elsewhere.py +102 -0
- uripath/schemes/_file.py +186 -0
- uripath/schemes/_ftp.py +200 -0
- uripath/schemes/_http/__init__.py +4 -0
- uripath/schemes/_http/_backend.py +132 -0
- uripath/schemes/_http/_headers.py +8 -0
- uripath/schemes/_http/_listing.py +403 -0
- uripath/schemes/_http/_path.py +371 -0
- uripath/schemes/_http/_settings.py +6 -0
- uripath/schemes/_http/_streams.py +230 -0
- uripath/schemes/_httpdate.py +48 -0
- uripath/schemes/_path.py +629 -0
- uripath/schemes/_registry.py +134 -0
- uripath/source/__init__.py +20 -0
- uripath/source/_compose.py +212 -0
- uripath/source/_locality.py +44 -0
- uripath/source/_parse.py +183 -0
- uripath/source/_source.py +239 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: pathapi-uri
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: pathlib-style paths for URIs: file:, data:, ftp:, zip:, tar:, http:, dav:
|
|
5
|
+
Project-URL: Homepage, https://github.com/jose-pr/uripath/
|
|
6
|
+
Project-URL: Documentation, https://jose-pr.github.io/uripath/
|
|
7
|
+
Project-URL: Issues, https://github.com/jose-pr/uripath/issues
|
|
8
|
+
Author: Jose A
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: >=3.9
|
|
22
|
+
Requires-Dist: netimps<0.5,>=0.4.0
|
|
23
|
+
Requires-Dist: pathapi<0.2,>=0.1.0
|
|
24
|
+
Provides-Extra: cli
|
|
25
|
+
Requires-Dist: duho<0.8,>=0.7.3; extra == 'cli'
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: black; extra == 'dev'
|
|
28
|
+
Requires-Dist: build; extra == 'dev'
|
|
29
|
+
Requires-Dist: cheroot; extra == 'dev'
|
|
30
|
+
Requires-Dist: cryptography; extra == 'dev'
|
|
31
|
+
Requires-Dist: duho<0.8,>=0.7.3; extra == 'dev'
|
|
32
|
+
Requires-Dist: hatchling; extra == 'dev'
|
|
33
|
+
Requires-Dist: hypothesis; extra == 'dev'
|
|
34
|
+
Requires-Dist: pyftpdlib; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
37
|
+
Requires-Dist: requests; extra == 'dev'
|
|
38
|
+
Requires-Dist: twine; extra == 'dev'
|
|
39
|
+
Requires-Dist: uritools<7,>=5.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: wsgidav; extra == 'dev'
|
|
41
|
+
Provides-Extra: docs
|
|
42
|
+
Requires-Dist: mkdocs; extra == 'docs'
|
|
43
|
+
Requires-Dist: mkdocs-material; extra == 'docs'
|
|
44
|
+
Requires-Dist: mkdocstrings[python]; extra == 'docs'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
# uripath
|
|
48
|
+
|
|
49
|
+
[](https://pypi.org/project/pathapi-uri/)
|
|
50
|
+
[](https://pypi.org/project/pathapi-uri/)
|
|
51
|
+
[](https://github.com/jose-pr/uripath/blob/main/LICENSE)
|
|
52
|
+
[](https://jose-pr.github.io/uripath/)
|
|
53
|
+
[](https://github.com/jose-pr/uripath/actions/workflows/test.yml)
|
|
54
|
+
|
|
55
|
+
Installed as `pathapi-uri` from PyPI; imported, and run as a command, as `uripath`.
|
|
56
|
+
|
|
57
|
+
**One `pathlib`-style API for URIs.** `URIPath("https://...")`, `URIPath("zip:...")`
|
|
58
|
+
and `URIPath("ftp://...")` return the class registered for the scheme, and each
|
|
59
|
+
has the method names, signatures and exception types of `pathlib.Path`: write
|
|
60
|
+
code once and run it against a local file, an archive member, an FTP or WebDAV
|
|
61
|
+
server, a web directory or, through the `repopath` distribution, a GitHub or GitLab
|
|
62
|
+
repository. It builds on
|
|
63
|
+
[`pathapi`](https://github.com/jose-pr/pathapi) and is documented at
|
|
64
|
+
<https://jose-pr.github.io/uripath/>.
|
|
65
|
+
|
|
66
|
+
## Features
|
|
67
|
+
|
|
68
|
+
| Scheme (class) | Needs | Read | Write | List | Stat | mkdir | Delete | rename |
|
|
69
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
70
|
+
| `file:` (`FileURIPath`) | nothing | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
|
|
71
|
+
| `data:` (`DataURIPath`, RFC 2397) | nothing | Yes | No | No | Yes | No | No | No |
|
|
72
|
+
| `zip:` (`ZipURIPath`) | nothing | Yes | Local `file:` archive only | Yes | Yes | Local archive only | Local archive only | Local archive only |
|
|
73
|
+
| `tar:` (`TarURIPath`, incl. gz/bz2/xz) | nothing | Yes | No | Yes | Yes | No | No | No |
|
|
74
|
+
| `archive:`, `archive+zip:`, `archive+tar:` | nothing | As `zip:`/`tar:` for the detected or pinned format | | | | | | |
|
|
75
|
+
| `ftp:` / `ftps:` (`FTPURIPath`) | nothing | Yes | Yes | Yes (MLSD, NLST fallback) | Yes | Yes | Yes | Yes |
|
|
76
|
+
| `http:` / `https:` (`HTTPURIPath`) | nothing | Yes | Yes (PUT, configurable) | Yes (HTML index) | Yes | No | Yes (DELETE) | No |
|
|
77
|
+
| `dav:` / `davs:` (`DAVURIPath`, WebDAV) | nothing | Yes | Yes (no append) | Yes (PROPFIND) | Yes | Yes | Yes | Yes |
|
|
78
|
+
| `sftp:` | `sftppath[paramiko]` or `[asyncssh]` | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
|
|
79
|
+
| `s3:` | `objpath[s3]` | Yes | Yes (no append) | Yes (prefixes) | Yes | Yes (marker object) | Yes | Yes (same bucket) |
|
|
80
|
+
| `gs:` | `objpath[gs]` | Yes | Yes (no append) | Yes (prefixes) | Yes | Yes (marker object) | Yes | Yes (same bucket) |
|
|
81
|
+
| `az:` | `objpath[az]` | Yes | Yes (no append) | Yes (prefixes) | Yes | Yes (marker blob) | Yes | Yes (same container) |
|
|
82
|
+
| `repo:` | `repopath` | Yes | No | Yes | Yes | No | No | No |
|
|
83
|
+
| `github:` | `repopath` | Yes | No | Yes | Yes | No | No | No |
|
|
84
|
+
| `gitlab:` | `repopath` | Yes | No | Yes | Yes | No | No | No |
|
|
85
|
+
|
|
86
|
+
The last seven rows are other distributions: a path of one of those schemes
|
|
87
|
+
builds, joins and prints without it, and its first use of the server raises an
|
|
88
|
+
`ImportError` that names what to install. The `requests` HTTP transport
|
|
89
|
+
(`with_session()`, `~/.netrc`, SOCKS proxies) is the distribution
|
|
90
|
+
`pathapi-requests`: once it is installed, `with_session()` and
|
|
91
|
+
`PATHAPI_HTTP_TRANSPORT=requests` use it, with nothing to configure.
|
|
92
|
+
|
|
93
|
+
Every scheme gets `glob()`, `walk()`, `copy()`/`move()`, `rm()` and `PathSyncer`
|
|
94
|
+
from the `pathapi` base classes. The per-scheme notes (timeouts,
|
|
95
|
+
certificate verification, authentication, limits) are in
|
|
96
|
+
[Schemes](https://jose-pr.github.io/uripath/guides/schemes/).
|
|
97
|
+
|
|
98
|
+
- **Pure URI algebra**: `URI` parses, joins and compares URIs with no I/O and
|
|
99
|
+
no scheme class needed; `Source` and `Query` are its authority and query.
|
|
100
|
+
- **HTTP on the standard library**: `http:` and `dav:` send through a
|
|
101
|
+
replaceable transport built on `http.client`.
|
|
102
|
+
- **Extensible**: subclass `URIPath` and declare `__SCHEMES` for a new scheme,
|
|
103
|
+
or register it through a `uripath.schemes` entry point.
|
|
104
|
+
- **`uripath` command**: `read`, `write`, `cp`, `rm` and `sync` across local
|
|
105
|
+
paths and URIs, with `-` for stdin/stdout (`pip install "pathapi-uri[cli]"`).
|
|
106
|
+
|
|
107
|
+
## Installation
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pip install pathapi-uri
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Requires `pathapi` and `netimps`, which pip installs with it.
|
|
114
|
+
|
|
115
|
+
| Install | Adds |
|
|
116
|
+
| --- | --- |
|
|
117
|
+
| `pip install pathapi-uri` | every scheme whose Needs is nothing in the table above |
|
|
118
|
+
| `pip install "pathapi-uri[cli]"` | the `uripath` command (its only extra) |
|
|
119
|
+
| `pip install "sftppath[paramiko]"` or `[asyncssh]` | `sftp:` |
|
|
120
|
+
| `pip install "objpath[s3]"`, `[gs]` or `[az]` | `s3:`, `gs:`, `az:` |
|
|
121
|
+
| `pip install pathapi-requests` | the `requests` HTTP transport |
|
|
122
|
+
|
|
123
|
+
## Quick start
|
|
124
|
+
|
|
125
|
+
**Any URI**: `URIPath` returns the class registered for the scheme:
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
from uripath import URIPath
|
|
129
|
+
|
|
130
|
+
report = URIPath("file:data/report.txt") # FileURIPath
|
|
131
|
+
report.parent.mkdir(parents=True, exist_ok=True)
|
|
132
|
+
report.write_text("hello")
|
|
133
|
+
print(report.read_text())
|
|
134
|
+
print(URIPath("data:text/plain;base64,aGVsbG8=").read_text()) # DataURIPath
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Archive members**: `<scheme>:<archive-uri>!/<member>`, where the archive
|
|
138
|
+
itself is any URI (`file:`, `http:`, `ftp:`, ...):
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
import zipfile
|
|
142
|
+
from uripath import URIPath
|
|
143
|
+
|
|
144
|
+
with zipfile.ZipFile("backup.zip", "w") as archive:
|
|
145
|
+
archive.writestr("etc/config.ini", "[main]\n")
|
|
146
|
+
|
|
147
|
+
member = URIPath("zip:file:backup.zip!/etc/config.ini")
|
|
148
|
+
print(member.read_text())
|
|
149
|
+
print([child.name for child in member.parent.iterdir()])
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Remote paths** use the same API:
|
|
153
|
+
|
|
154
|
+
<!-- example: skip: reads from remote hosts -->
|
|
155
|
+
```python
|
|
156
|
+
from uripath import URIPath
|
|
157
|
+
|
|
158
|
+
for child in URIPath("https://example.com/data/").iterdir():
|
|
159
|
+
print(child.name, child.stat().st_size)
|
|
160
|
+
|
|
161
|
+
print(URIPath("ftp://user@host/pub/README").read_text())
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Copy and sync across schemes**, with the `pathapi` syncer:
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from pathapi.sync import PathSyncer
|
|
168
|
+
from uripath import URIPath
|
|
169
|
+
|
|
170
|
+
source = URIPath("file:site")
|
|
171
|
+
(source / "css").mkdir(parents=True)
|
|
172
|
+
(source / "index.html").write_text("<h1>hi</h1>")
|
|
173
|
+
|
|
174
|
+
PathSyncer(remove_missing=True).sync(source, URIPath("file:site-copy"))
|
|
175
|
+
print(sorted(p.name for p in URIPath("file:site-copy").iterdir()))
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Command line
|
|
179
|
+
|
|
180
|
+
`uripath` reads, writes, copies, removes and syncs local paths and URIs, with
|
|
181
|
+
`-` for stdin or stdout. It is built on `duho` and needs the `cli` extra,
|
|
182
|
+
`pip install "pathapi-uri[cli]"`; without it the command says so and exits with
|
|
183
|
+
status 1. These commands run as written in an empty directory:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
mkdir site
|
|
187
|
+
uripath write site/index.html "<h1>hi</h1>"
|
|
188
|
+
uripath read site/index.html
|
|
189
|
+
uripath cp site/index.html site/copy.html
|
|
190
|
+
uripath sync --dry-run --remove-missing site site-copy
|
|
191
|
+
uripath sync site site-copy
|
|
192
|
+
uripath rm --recursive site-copy
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Either side can be a URI instead:
|
|
196
|
+
|
|
197
|
+
<!-- example: skip: needs an FTP host and a web server -->
|
|
198
|
+
```bash
|
|
199
|
+
uripath cp report.txt ftp://host/tmp/report.txt
|
|
200
|
+
uripath sync --dry-run --remove-missing site/ ftp://host/site/
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
The exit status is 0 on success, 1 when the operation failed, 2 for a wrong
|
|
204
|
+
invocation, 130 on Ctrl-C and 141 when the reader of stdout went away. Every
|
|
205
|
+
flag is described in the
|
|
206
|
+
[CLI guide](https://jose-pr.github.io/uripath/guides/cli/), and `uripath` can
|
|
207
|
+
be served to an agent as a set of tools.
|
|
208
|
+
|
|
209
|
+
## API overview
|
|
210
|
+
|
|
211
|
+
| Module | Purpose |
|
|
212
|
+
| --- | --- |
|
|
213
|
+
| `uripath` | `URI`, `URIPath`, `URILike`, `Source`, `Query`, `QueryLike`, the functions `as_path` and `copy_stream`, the errors `URIPathError`, `URISyntaxError` and `UnsupportedSchemeError`, and `__version__` |
|
|
214
|
+
| `uripath.source` | `Source` (scheme, userinfo, host, port), `same_authority` and the helpers that read and compose a URI's text |
|
|
215
|
+
| `uripath.query` | `Query`, an immutable query value, and `QueryLike` |
|
|
216
|
+
| `uripath.exceptions` | The errors above |
|
|
217
|
+
| `uripath.schemes` | The contract and registry of schemes, `DerivedBackend`, `DelegatingURIPath`, and every built-in scheme's classes: `FileURIPath`, `DataURIPath`, `ZipURIPath`, `TarURIPath`, `ArchiveURIPath`, `FTPURIPath`, `HTTPURIPath`, `DAVURIPath` and their backends |
|
|
218
|
+
|
|
219
|
+
The full reference is on the [documentation site](https://jose-pr.github.io/uripath/);
|
|
220
|
+
an agent-oriented API summary ships inside the package as `uripath/AGENTS.md`.
|
|
221
|
+
|
|
222
|
+
## Extending
|
|
223
|
+
|
|
224
|
+
Subclass `URIPath` and declare `__SCHEMES` for a new URI scheme; it is
|
|
225
|
+
dispatched as soon as its module is imported, or through a `uripath.schemes`
|
|
226
|
+
entry point. A scheme name belongs to one class: a second claim raises unless
|
|
227
|
+
the class statement says `replace=True`, and `URIPath.schemes()` /
|
|
228
|
+
`URIPath.scheme_class(name)` read the registry. Worked examples:
|
|
229
|
+
[Extending](https://jose-pr.github.io/uripath/guides/extending/). The pytest
|
|
230
|
+
contracts that verify a scheme are in `pathapi.testing`.
|
|
231
|
+
|
|
232
|
+
## Development
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
pip install -e ".[dev]"
|
|
236
|
+
python -m pytest -q -rs
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Tests for a server that is not installed are skipped, so check the skip list
|
|
240
|
+
(`-rs`). Contributor notes (virtual environments, formatting, CI, releases) are
|
|
241
|
+
in the repository's
|
|
242
|
+
[`AGENTS.md`](https://github.com/jose-pr/uripath/blob/main/AGENTS.md). To
|
|
243
|
+
preview the documentation: `pip install -e ".[docs]"` then `mkdocs serve`.
|
|
244
|
+
|
|
245
|
+
Changes are recorded in the
|
|
246
|
+
[changelog](https://github.com/jose-pr/uripath/blob/main/CHANGELOG.md).
|
|
247
|
+
|
|
248
|
+
### Releasing
|
|
249
|
+
|
|
250
|
+
This project follows [Semantic Versioning](https://semver.org/) and keeps a
|
|
251
|
+
[`CHANGELOG.md`](https://github.com/jose-pr/uripath/blob/main/CHANGELOG.md). Pushing a tag matching `v*` triggers the release
|
|
252
|
+
workflow: test gate → build (checking the tag names the version built) → a strict
|
|
253
|
+
docs build as a gate → GitHub release → publish. The release workflow never deploys
|
|
254
|
+
the docs site itself: for a final release its last job dispatches the docs workflow
|
|
255
|
+
at the tag, which owns every Pages deploy.
|
|
256
|
+
|
|
257
|
+
## License
|
|
258
|
+
|
|
259
|
+
MIT — see [LICENSE](https://github.com/jose-pr/uripath/blob/main/LICENSE).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
uripath/AGENTS.md,sha256=Siu2tupwH9zjC786iGrNqd7Ua_3CCWQV7ewarWpWgXw,60774
|
|
2
|
+
uripath/__init__.py,sha256=MyRZR1EkKrzeIIFrog6kWdygGwz60b9td7FRdgjOJKQ,598
|
|
3
|
+
uripath/__main__.py,sha256=WlXs7327vTmE4SW9MiExqWfdbyBrqgK3hG8w0yDsrRw,162
|
|
4
|
+
uripath/_pathtext.py,sha256=mEauPI4JikCIeA7LnriYv-t5k737T79msPhGaiYSvx8,1150
|
|
5
|
+
uripath/_rfc3986.py,sha256=r7pEImk9mk58K-8j0IXbmZ4iGBn0C5_tFaXtDbw5vnw,2445
|
|
6
|
+
uripath/_transfer.py,sha256=6bZtY7Mkn3G4eWPVInmg9J_5TBhIWXb8r3toba2Sl9Y,3347
|
|
7
|
+
uripath/_uri.py,sha256=tIRSnWzq0rY3U0S4rWWaZBrOLuiRkJgOcOj9InKajvk,42454
|
|
8
|
+
uripath/_version.py,sha256=jOvOnkZ6UGEKfqW8caogg-zZOdIoCWwrsp1-jjctUQI,311
|
|
9
|
+
uripath/exceptions.py,sha256=A0g181e49M-GiuxmibBKPVRiFcVs9wWebb-pttNxHIQ,1223
|
|
10
|
+
uripath/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
|
11
|
+
uripath/query.py,sha256=wCXcSKs7MEMF5pQxE6toUPM0nYL1HSVnOh3NyHcKL5Q,8594
|
|
12
|
+
uripath/cli/__init__.py,sha256=xOoqJLXNHc8smiXkY4Czw8ySqSlzd6k6WN3tRZbjGvo,1716
|
|
13
|
+
uripath/cli/_common.py,sha256=_7vhMIUPDRMjMozcG8_1ifJs3dfTPyE7gdkKVIY05Ao,1514
|
|
14
|
+
uripath/cli/_root.py,sha256=_BdjkJ8hXK4dQbnCNYSao_ys4P_yajJ5LOskqr_sP-8,2283
|
|
15
|
+
uripath/cli/cp.py,sha256=1rvgaFgDvp1wLqoA_-Wbuc_ABDWGnudkXqh-pdd90-E,1906
|
|
16
|
+
uripath/cli/read.py,sha256=Ar74NiUhQ3AlnjgSl7AmUUq4-pjqA5GA3hVL2AbYN4k,512
|
|
17
|
+
uripath/cli/rm.py,sha256=l_TMgkD4czzLMke4abVcp99a-HcoM8DPrtoeDO9-L6Y,978
|
|
18
|
+
uripath/cli/sync.py,sha256=XbWWJ31UOEhaF2tdU6UTf9PD25HsBW6urgwpTis6kwA,2491
|
|
19
|
+
uripath/cli/write.py,sha256=FCTr5_A7eU2PfF5salIRgnXG4A28Pcn7zcTbj90QkDQ,1379
|
|
20
|
+
uripath/schemes/__init__.py,sha256=MnXUo9bxMbpM51tB3CGgAl-Sh9G3kiFt8W2Yk_YSaMk,3892
|
|
21
|
+
uripath/schemes/_archive.py,sha256=aY-FXbwIz2ZwxcxfJxy39hPlBG9KC75Z1PQ7kv-gm1M,15196
|
|
22
|
+
uripath/schemes/_data.py,sha256=Izob7ZXE9Tteb6uvwgpvkOnKTHdm_B2JNjoOnWsGL5c,3827
|
|
23
|
+
uripath/schemes/_dav.py,sha256=mPlUEZRALzDnCdEUTBM5bO5lmYt01YiOrHRfZpUpM6Q,18388
|
|
24
|
+
uripath/schemes/_delegate.py,sha256=Ajb-fOYYZHgU7LGPcqJnX2wLz1YKj6hITRS6DQKUHsU,4034
|
|
25
|
+
uripath/schemes/_elsewhere.py,sha256=SdSDelq1CQSg7GLAxlwZTs0Zeu6tWrilYTaSrlXRQTY,3098
|
|
26
|
+
uripath/schemes/_file.py,sha256=0R3BO0vJfuHqjO0mf5faoLVh_mJot2NksrxYvkq1MUA,7265
|
|
27
|
+
uripath/schemes/_ftp.py,sha256=7CFw4gY2E6hAqTp5sMLrENokFCiY3MWUUZHHveaIsnQ,7426
|
|
28
|
+
uripath/schemes/_httpdate.py,sha256=71fB8KWcj5VtnBHgps6hnAYG84vbqsh5AXd68cjOQVY,2063
|
|
29
|
+
uripath/schemes/_path.py,sha256=C-dI3-twVjizu1lC7rKfPf--RLLK-kxO9VCb1pITsq4,25876
|
|
30
|
+
uripath/schemes/_registry.py,sha256=mZkCwuzY4CTDKjLV2eSnBr_1RuYQmvxvSlUbnLS7UKg,5029
|
|
31
|
+
uripath/schemes/_http/__init__.py,sha256=ZrjSeXjblag0YAROTLfqo7yi_TFYw7ge8ZlAdaDAhYk,168
|
|
32
|
+
uripath/schemes/_http/_backend.py,sha256=l4BLGz4AB4wlsZGLHsRLGbZehvtFKA86eO_GGNC_0eo,4978
|
|
33
|
+
uripath/schemes/_http/_headers.py,sha256=pxyZUXH4uZWVBkL5Pwpwzm_IB7F3L_H7-Ej3rB8aDlM,358
|
|
34
|
+
uripath/schemes/_http/_listing.py,sha256=ZtClzN2VjcXf2EGl53OR12UHG4aqDvth3z8ewivPm-4,15133
|
|
35
|
+
uripath/schemes/_http/_path.py,sha256=oKgniub6kXplC9KxDHbVmma0mZ2zhIUwrEgUi8aCDUQ,15256
|
|
36
|
+
uripath/schemes/_http/_settings.py,sha256=1n25z94FdEeE2jZAzYdBwp9NECBLUOfEIaM2nRFek8Q,228
|
|
37
|
+
uripath/schemes/_http/_streams.py,sha256=de4Fl_wYQLhkFjc3Sa--pFt6QFkdcBFWbp0lT1AotFU,8083
|
|
38
|
+
uripath/source/__init__.py,sha256=UlQeQ5g2TEcdHCdnT69mcHQIuLAsW1rjU6lkDFZaAoc,497
|
|
39
|
+
uripath/source/_compose.py,sha256=PVe5OSzGY8GRXBW71QXyU7j7aNbJrdnDlxrARDppCAc,7955
|
|
40
|
+
uripath/source/_locality.py,sha256=rDHKH1-EtfMshVCpUed9NzZqtffNO-gsTUYbbailS9I,1548
|
|
41
|
+
uripath/source/_parse.py,sha256=lGi-LZhGZnIr79CEIU-Z6t-Uu375eXBioQ9PKXaUROc,7287
|
|
42
|
+
uripath/source/_source.py,sha256=mmVsH-edCrawTH8_20HI6e5tCg1tH8yFSbuqE5xoOEs,9914
|
|
43
|
+
uripath/README.md,sha256=C3klhOStQ3YOL5_s03jAVgegynFqFQtcUo5d8QZ9cH4,9848
|
|
44
|
+
pathapi_uri-0.1.0.dist-info/METADATA,sha256=EzetO7NjuCYhtvlJJtytHsFr9dpNV_ey-D29aMQ-LuI,11659
|
|
45
|
+
pathapi_uri-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
46
|
+
pathapi_uri-0.1.0.dist-info/entry_points.txt,sha256=xQUo69cFOuRvN13oVKcdfQ_SxDIkipjAZQ83g6ihG4o,542
|
|
47
|
+
pathapi_uri-0.1.0.dist-info/licenses/LICENSE,sha256=bBY0SeXglEP0yGEOZbyqRTbNfXD0DVpkr-3mBq7-BPQ,1063
|
|
48
|
+
pathapi_uri-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
uripath = uripath.cli:main
|
|
3
|
+
|
|
4
|
+
[uripath.schemes]
|
|
5
|
+
archive = uripath.schemes:ArchiveURIPath
|
|
6
|
+
archive+tar = uripath.schemes:ArchiveTarURIPath
|
|
7
|
+
archive+zip = uripath.schemes:ArchiveZipURIPath
|
|
8
|
+
data = uripath.schemes:DataURIPath
|
|
9
|
+
dav = uripath.schemes:DAVURIPath
|
|
10
|
+
davs = uripath.schemes:DAVURIPath
|
|
11
|
+
file = uripath.schemes:FileURIPath
|
|
12
|
+
ftp = uripath.schemes:FTPURIPath
|
|
13
|
+
ftps = uripath.schemes:FTPURIPath
|
|
14
|
+
http = uripath.schemes:HTTPURIPath
|
|
15
|
+
https = uripath.schemes:HTTPURIPath
|
|
16
|
+
tar = uripath.schemes:TarURIPath
|
|
17
|
+
zip = uripath.schemes:ZipURIPath
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Jose A
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|