File: PKG-INFO

package info (click to toggle)
arcp 0.2.1-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 256 kB
  • sloc: python: 707; makefile: 13
file content (199 lines) | stat: -rw-r--r-- 9,017 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
Metadata-Version: 1.1
Name: arcp
Version: 0.2.1
Summary: arcp (Archive and Package) URI parser and generator
Home-page: https://arcp.readthedocs.io/
Author: Stian Soiland-Reyes
Author-email: stain@apache.org
License: Apache License, Version 2.0
Download-URL: https://github.com/stain/arcp-py/archive/0.1.0.tar.gz
Description: arcp-py
        =======
        
        Create/parse arcp_ (Archive and Package) URIs.
        
        .. image:: https://readthedocs.org/projects/arcp/badge/?version=latest
          :target: https://arcp.readthedocs.io/en/latest/?badge=latest
          :alt: Documentation Status
        .. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1162749.svg
          :target: https://doi.org/10.5281/zenodo.1162749
        .. image:: https://travis-ci.org/stain/arcp-py.svg?branch=master
          :target: https://travis-ci.org/stain/arcp-py
        .. image:: https://img.shields.io/pypi/v/arcp.svg?maxAge=86400
          :target: https://pypi.org/project/arcp/
        .. image:: https://coveralls.io/repos/github/stain/arcp-py/badge.svg?branch=master
          :target: https://coveralls.io/github/stain/arcp-py?branch=master
        .. image:: https://codecov.io/gh/stain/arcp-py/branch/master/graph/badge.svg
          :target: https://codecov.io/gh/stain/arcp-py
        
        
        
        
        Introduction
        ------------
        
        ``arcp`` provides functions for creating arcp_ URIs, 
        which can be used for identifying or parsing hypermedia 
        files packaged in an archive or package, like a ZIP file.
        
        arcp URIs can be used to consume or reference hypermedia resources 
        bundled inside a file archive or an application package, as well as 
        to resolve URIs for archive resources within a programmatic framework.
        
        This URI scheme provides mechanisms to generate a unique base URI 
        to represent the root of the archive, so that relative URI references 
        in a bundled resource can be resolved within the archive without having to extract the archive content on the local file system.
        
        An arcp URI can be used for purposes of isolation (e.g. when consuming 
        multiple archives), security constraints (avoiding “climb out” from the
        archive), or for externally identiyfing sub-resources referenced by
        hypermedia formats.
        
        Examples:
         - ``arcp://uuid,32a423d6-52ab-47e3-a9cd-54f418a48571/doc.html``
         - ``arcp://uuid,b7749d0b-0e47-5fc4-999d-f154abe68065/pics/``
         - ``arcp://ni,sha-256;F-34D4TUeOfG0selz7REKRDo4XePkewPeQYtjL3vQs0/``
         - ``arcp://name,gallery.example.org/``
        
        The different forms of URI authority_ in arcp URIs can be used depending
        on which uniqueness constraints to apply when addressing an archive.
        See the arcp_ specification (*draft-soilandreyes-arcp*) for details.
        
        Note that this library only provides mechanisms to 
        *generate* and *parse* arcp URIs, and do *not* integrate with any 
        particular archive or URL handling modules like 
        ``zipfile`` or ``urllib.request``.
        
        
        License
        -------
        
        © 2018-2020 Stian Soiland-Reyes <https://orcid.org/0000-0001-9842-9718>, The University of Manchester, UK
        
        Licensed under the 
        Apache License, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>, 
        see the file LICENSE.txt for details.
        
        Contribute
        ----------
        
        Source code: <https://github.com/stain/arcp-py>
        
        Feel free to raise a pull request at <https://github.com/stain/arcp-py/pulls>
        or an issue at <https://github.com/stain/arcp-py/issues>.
        
        Submitted contributions are assumed to be covered by section 5 of the Apache License 2.0.
        
        Installing
        ----------
        
        You will need Python 2.7, Python 3.4 or later (Recommended: 3.6).
        
        If you have pip_, then the easiest is normally to install from <https://pypi.org/project/arcp/> using::
        
            pip install arcp
        
        If you want to install manually from this code base, then try::
        
            python setup.py install
        
        Usage
        ------
        
        For full documentation, see <https://arcp.readthedocs.io/> or use ``help(arcp)``
        
        This module provides functions for creating arcp_ URIs, 
        which can be used for identifying or parsing hypermedia 
        files packaged in an archive or package, like a ZIP file:: python
        
            >>> from arcp import *
        
            >>> arcp_random()
            'arcp://uuid,dcd6b1e8-b3a2-43c9-930b-0119cf0dc538/'
        
            >>> arcp_random("/foaf.ttl", fragment="me")
            'arcp://uuid,dcd6b1e8-b3a2-43c9-930b-0119cf0dc538/foaf.ttl#me'
        
            >>> arcp_hash(b"Hello World!", "/folder/")
            'arcp://ni,sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk/folder/'
        
            >>> arcp_location("http://example.com/data.zip", "/file.txt")
            'arcp://uuid,b7749d0b-0e47-5fc4-999d-f154abe68065/file.txt'
        
        arcp URLs can be used with ``urllib.parse``, 
        for instance using ``urljoin`` to resolve relative references::
        
            >>> css = arcp.arcp_name("app.example.com", "css/style.css")
            >>> urllib.parse.urljoin(css, "../fonts/foo.woff")
            'arcp://name,app.example.com/fonts/foo.woff'
        
        
        In addition this module provides functions that can be used
        to parse arcp URIs into its constituent fields:: python
        
            >>> is_arcp_uri("arcp://uuid,b7749d0b-0e47-5fc4-999d-f154abe68065/file.txt")
            True
        
            >>> is_arcp_uri("http://example.com/t")
            False
        
            >>> u = parse_arcp("arcp://uuid,b7749d0b-0e47-5fc4-999d-f154abe68065/file.txt")
            ARCPSplitResult(scheme='arcp',prefix='uuid',name='b7749d0b-0e47-5fc4-999d-f154abe68065',
              uuid='b7749d0b-0e47-5fc4-999d-f154abe68065',path='/file.txt',query='',fragment='')
        
            >>> u.path
            '/file.txt'
            >>> u.prefix
            'uuid'
            >>> u.uuid
            UUID('b7749d0b-0e47-5fc4-999d-f154abe68065')
            >>> u.uuid.version
            5
        
            >>> parse_arcp("arcp://ni,sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk/folder/").hash
            ('sha-256', '7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069')
        
        The object returned from ``parse_arcp`` is similar to 
        ``ParseResult`` from ``urlparse``, but contains additional properties 
        ``prefix``, ``uuid``, ``ni``, ``hash`` and ``name``, 
        some of which will be ``None`` depending on the arcp prefix.
        
        The function ``arcp.parse.urlparse`` can be imported as an alternative 
        to ``urllib.parse.urlparse``. If the scheme is ``arcp`` then the extra 
        arcp fields like `prefix`, `uuid`, `hash` and `name` are available
        as from `parse_arcp`, otherwise the output is the same as from 
        regular `urlparse`:: python
        
            >>> from arcp.parse import urlparse
            >>> urlparse("arcp://ni,sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk/folder/soup;sads")
            ARCPParseResult(scheme='arcp',prefix='ni',
               name='sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk',
               ni='sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk',
               hash=('sha-256', '7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069',
               path='/folder/soup;sads',query='',fragment='')
            >>> urlparse("http://example.com/help?q=a")
            ParseResult(scheme='http', netloc='example.com', path='/help', params='', 
              query='q=a', fragment='')
        
        
        
        .. _arcp: https://tools.ietf.org/html/draft-soilandreyes-arcp-03
        .. _pip: https://docs.python.org/3/installing/
        .. _authority: https://tools.ietf.org/id/draft-soilandreyes-arcp-03.html#rfc.section.4.1
        
Keywords: arcp uri url iri archive package
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: System :: Archiving
Classifier: Topic :: System :: Archiving :: Packaging