xmlsec 1.3.15__cp313-cp313-win32.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.
xmlsec/__init__.pyi ADDED
@@ -0,0 +1,80 @@
1
+ from collections.abc import Callable, Iterable
2
+ from typing import IO, Any, AnyStr, TypeVar, overload
3
+
4
+ from _typeshed import GenericPath, Self, StrOrBytesPath
5
+ from lxml.etree import _Element
6
+
7
+ from xmlsec import constants as constants
8
+ from xmlsec import template as template
9
+ from xmlsec import tree as tree
10
+ from xmlsec.constants import __KeyData as KeyData
11
+ from xmlsec.constants import __Transform as Transform
12
+
13
+ _E = TypeVar('_E', bound=_Element)
14
+
15
+ def enable_debug_trace(enabled: bool = ...) -> None: ...
16
+ def get_libxml_version() -> tuple[int, int, int]: ...
17
+ def get_libxml_compiled_version() -> tuple[int, int, int]: ...
18
+ def init() -> None: ...
19
+ def shutdown() -> None: ...
20
+ def cleanup_callbacks() -> None: ...
21
+ def register_default_callbacks() -> None: ...
22
+ def register_callbacks(
23
+ input_match_callback: Callable[[bytes], bool],
24
+ input_open_callback: Callable[[bytes], Any],
25
+ input_read_callback: Callable[[Any, memoryview], int],
26
+ input_close_callback: Callable[[Any], None],
27
+ ) -> None: ...
28
+ @overload
29
+ def base64_default_line_size() -> int: ...
30
+ @overload
31
+ def base64_default_line_size(size: int) -> None: ...
32
+
33
+ class EncryptionContext:
34
+ key: Key | None
35
+ def __init__(self, manager: KeysManager | None = ...) -> None: ...
36
+ def decrypt(self, node: _Element) -> _Element: ...
37
+ def encrypt_binary(self, template: _E, data: bytes) -> _E: ...
38
+ def encrypt_uri(self, template: _E, uri: str) -> _E: ...
39
+ def encrypt_xml(self, template: _E, node: _Element) -> _E: ...
40
+ def reset(self) -> None: ...
41
+
42
+ class Error(Exception): ...
43
+ class InternalError(Error): ...
44
+
45
+ class Key:
46
+ name: str
47
+ @classmethod
48
+ def from_binary_data(cls: type[Self], klass: KeyData, data: AnyStr) -> Self: ...
49
+ @classmethod
50
+ def from_binary_file(cls: type[Self], klass: KeyData, filename: StrOrBytesPath) -> Self: ...
51
+ @classmethod
52
+ def from_file(cls: type[Self], file: GenericPath[AnyStr] | IO[AnyStr], format: int, password: str | None = ...) -> Self: ...
53
+ @classmethod
54
+ def from_engine(cls: type[Self], engine_and_key_id: AnyStr) -> Self: ...
55
+ @classmethod
56
+ def from_memory(cls: type[Self], data: AnyStr, format: int, password: str | None = ...) -> Self: ...
57
+ @classmethod
58
+ def generate(cls: type[Self], klass: KeyData, size: int, type: int) -> Self: ...
59
+ def load_cert_from_file(self, file: GenericPath[AnyStr] | IO[AnyStr], format: int) -> None: ...
60
+ def load_cert_from_memory(self, data: AnyStr, format: int) -> None: ...
61
+ def __copy__(self: Self) -> Self: ...
62
+ def __deepcopy__(self: Self) -> Self: ...
63
+
64
+ class KeysManager:
65
+ def add_key(self, key: Key) -> None: ...
66
+ def load_cert(self, filename: StrOrBytesPath, format: int, type: int) -> None: ...
67
+ def load_cert_from_memory(self, data: AnyStr, format: int, type: int) -> None: ...
68
+
69
+ class SignatureContext:
70
+ key: Key | None
71
+ def enable_reference_transform(self, transform: Transform) -> None: ...
72
+ def enable_signature_transform(self, transform: Transform) -> None: ...
73
+ def register_id(self, node: _Element, id_attr: str = ..., id_ns: str | None = ...) -> None: ...
74
+ def set_enabled_key_data(self, keydata_list: Iterable[KeyData]) -> None: ...
75
+ def sign(self, node: _Element) -> None: ...
76
+ def sign_binary(self, bytes: bytes, transform: Transform) -> bytes: ...
77
+ def verify(self, node: _Element) -> None: ...
78
+ def verify_binary(self, bytes: bytes, transform: Transform, signature: bytes) -> None: ...
79
+
80
+ class VerificationError(Error): ...
xmlsec/constants.pyi ADDED
@@ -0,0 +1,153 @@
1
+ import sys
2
+ from typing import NamedTuple
3
+
4
+ if sys.version_info >= (3, 8):
5
+ from typing import Final
6
+ else:
7
+ from typing_extensions import Final
8
+
9
+ class __KeyData(NamedTuple): # __KeyData type
10
+ href: str
11
+ name: str
12
+
13
+ class __KeyDataNoHref(NamedTuple): # __KeyData type
14
+ href: None
15
+ name: str
16
+
17
+ class __Transform(NamedTuple): # __Transform type
18
+ href: str
19
+ name: str
20
+ usage: int
21
+
22
+ class __TransformNoHref(NamedTuple): # __Transform type
23
+ href: None
24
+ name: str
25
+ usage: int
26
+
27
+ DSigNs: Final[str]
28
+ EncNs: Final[str]
29
+ KeyDataAes: Final[__KeyData]
30
+ KeyDataDes: Final[__KeyData]
31
+ KeyDataDsa: Final[__KeyData]
32
+ KeyDataEc: Final[__KeyData]
33
+ KeyDataEcdsa: Final[__KeyData]
34
+ KeyDataEncryptedKey: Final[__KeyData]
35
+ KeyDataFormatBinary: Final[int]
36
+ KeyDataFormatCertDer: Final[int]
37
+ KeyDataFormatCertPem: Final[int]
38
+ KeyDataFormatDer: Final[int]
39
+ KeyDataFormatPem: Final[int]
40
+ KeyDataFormatPkcs12: Final[int]
41
+ KeyDataFormatPkcs8Der: Final[int]
42
+ KeyDataFormatPkcs8Pem: Final[int]
43
+ KeyDataFormatUnknown: Final[int]
44
+ KeyDataHmac: Final[__KeyData]
45
+ KeyDataName: Final[__KeyDataNoHref]
46
+ KeyDataRawX509Cert: Final[__KeyData]
47
+ KeyDataRetrievalMethod: Final[__KeyDataNoHref]
48
+ KeyDataRsa: Final[__KeyData]
49
+ KeyDataTypeAny: Final[int]
50
+ KeyDataTypeNone: Final[int]
51
+ KeyDataTypePermanent: Final[int]
52
+ KeyDataTypePrivate: Final[int]
53
+ KeyDataTypePublic: Final[int]
54
+ KeyDataTypeSession: Final[int]
55
+ KeyDataTypeSymmetric: Final[int]
56
+ KeyDataTypeTrusted: Final[int]
57
+ KeyDataTypeUnknown: Final[int]
58
+ KeyDataValue: Final[__KeyDataNoHref]
59
+ KeyDataX509: Final[__KeyData]
60
+ NodeCanonicalizationMethod: Final[str]
61
+ NodeCipherData: Final[str]
62
+ NodeCipherReference: Final[str]
63
+ NodeCipherValue: Final[str]
64
+ NodeDataReference: Final[str]
65
+ NodeDigestMethod: Final[str]
66
+ NodeDigestValue: Final[str]
67
+ NodeEncryptedData: Final[str]
68
+ NodeEncryptedKey: Final[str]
69
+ NodeEncryptionMethod: Final[str]
70
+ NodeEncryptionProperties: Final[str]
71
+ NodeEncryptionProperty: Final[str]
72
+ NodeKeyInfo: Final[str]
73
+ NodeKeyName: Final[str]
74
+ NodeKeyReference: Final[str]
75
+ NodeKeyValue: Final[str]
76
+ NodeManifest: Final[str]
77
+ NodeObject: Final[str]
78
+ NodeReference: Final[str]
79
+ NodeReferenceList: Final[str]
80
+ NodeSignature: Final[str]
81
+ NodeSignatureMethod: Final[str]
82
+ NodeSignatureProperties: Final[str]
83
+ NodeSignatureValue: Final[str]
84
+ NodeSignedInfo: Final[str]
85
+ NodeX509Data: Final[str]
86
+ Ns: Final[str]
87
+ NsExcC14N: Final[str]
88
+ NsExcC14NWithComments: Final[str]
89
+ TransformAes128Cbc: Final[__Transform]
90
+ TransformAes128Gcm: Final[__Transform]
91
+ TransformAes192Cbc: Final[__Transform]
92
+ TransformAes192Gcm: Final[__Transform]
93
+ TransformAes256Cbc: Final[__Transform]
94
+ TransformAes256Gcm: Final[__Transform]
95
+ TransformDes3Cbc: Final[__Transform]
96
+ TransformDsaSha1: Final[__Transform]
97
+ TransformEcdsaSha1: Final[__Transform]
98
+ TransformEcdsaSha224: Final[__Transform]
99
+ TransformEcdsaSha256: Final[__Transform]
100
+ TransformEcdsaSha384: Final[__Transform]
101
+ TransformEcdsaSha512: Final[__Transform]
102
+ TransformEnveloped: Final[__Transform]
103
+ TransformExclC14N: Final[__Transform]
104
+ TransformExclC14NWithComments: Final[__Transform]
105
+ TransformHmacMd5: Final[__Transform]
106
+ TransformHmacRipemd160: Final[__Transform]
107
+ TransformHmacSha1: Final[__Transform]
108
+ TransformHmacSha224: Final[__Transform]
109
+ TransformHmacSha256: Final[__Transform]
110
+ TransformHmacSha384: Final[__Transform]
111
+ TransformHmacSha512: Final[__Transform]
112
+ TransformInclC14N: Final[__Transform]
113
+ TransformInclC14N11: Final[__Transform]
114
+ TransformInclC14N11WithComments: Final[__Transform]
115
+ TransformInclC14NWithComments: Final[__Transform]
116
+ TransformKWAes128: Final[__Transform]
117
+ TransformKWAes192: Final[__Transform]
118
+ TransformKWAes256: Final[__Transform]
119
+ TransformKWDes3: Final[__Transform]
120
+ TransformMd5: Final[__Transform]
121
+ TransformRemoveXmlTagsC14N: Final[__TransformNoHref]
122
+ TransformRipemd160: Final[__Transform]
123
+ TransformRsaMd5: Final[__Transform]
124
+ TransformRsaOaep: Final[__Transform]
125
+ TransformRsaPkcs1: Final[__Transform]
126
+ TransformRsaRipemd160: Final[__Transform]
127
+ TransformRsaSha1: Final[__Transform]
128
+ TransformRsaSha224: Final[__Transform]
129
+ TransformRsaSha256: Final[__Transform]
130
+ TransformRsaSha384: Final[__Transform]
131
+ TransformRsaSha512: Final[__Transform]
132
+ TransformSha1: Final[__Transform]
133
+ TransformSha224: Final[__Transform]
134
+ TransformSha256: Final[__Transform]
135
+ TransformSha384: Final[__Transform]
136
+ TransformSha512: Final[__Transform]
137
+ TransformUsageAny: Final[int]
138
+ TransformUsageC14NMethod: Final[int]
139
+ TransformUsageDSigTransform: Final[int]
140
+ TransformUsageDigestMethod: Final[int]
141
+ TransformUsageEncryptionMethod: Final[int]
142
+ TransformUsageSignatureMethod: Final[int]
143
+ TransformUsageUnknown: Final[int]
144
+ TransformVisa3DHack: Final[__TransformNoHref]
145
+ TransformXPath: Final[__Transform]
146
+ TransformXPath2: Final[__Transform]
147
+ TransformXPointer: Final[__Transform]
148
+ TransformXslt: Final[__Transform]
149
+ TypeEncContent: Final[str]
150
+ TypeEncElement: Final[str]
151
+ XPath2Ns: Final[str]
152
+ XPathNs: Final[str]
153
+ XPointerNs: Final[str]
xmlsec/py.typed ADDED
@@ -0,0 +1 @@
1
+ # Marker file for PEP 561. The xmlsec package uses stub files.
xmlsec/template.pyi ADDED
@@ -0,0 +1,38 @@
1
+ from collections.abc import Sequence
2
+ from typing import Any
3
+
4
+ from lxml.etree import _Element
5
+
6
+ from xmlsec.constants import __Transform as Transform
7
+
8
+ def add_encrypted_key(
9
+ node: _Element, method: Transform, id: str | None = ..., type: str | None = ..., recipient: str | None = ...
10
+ ) -> _Element: ...
11
+ def add_key_name(node: _Element, name: str | None = ...) -> _Element: ...
12
+ def add_key_value(node: _Element) -> _Element: ...
13
+ def add_reference(
14
+ node: _Element, digest_method: Transform, id: str | None = ..., uri: str | None = ..., type: str | None = ...
15
+ ) -> _Element: ...
16
+ def add_transform(node: _Element, transform: Transform) -> Any: ...
17
+ def add_x509_data(node: _Element) -> _Element: ...
18
+ def create(node: _Element, c14n_method: Transform, sign_method: Transform) -> _Element: ...
19
+ def encrypted_data_create(
20
+ node: _Element,
21
+ method: Transform,
22
+ id: str | None = ...,
23
+ type: str | None = ...,
24
+ mime_type: str | None = ...,
25
+ encoding: str | None = ...,
26
+ ns: str | None = ...,
27
+ ) -> _Element: ...
28
+ def encrypted_data_ensure_cipher_value(node: _Element) -> _Element: ...
29
+ def encrypted_data_ensure_key_info(node: _Element, id: str | None = ..., ns: str | None = ...) -> _Element: ...
30
+ def ensure_key_info(node: _Element, id: str | None = ...) -> _Element: ...
31
+ def transform_add_c14n_inclusive_namespaces(node: _Element, prefixes: str | Sequence[str]) -> None: ...
32
+ def x509_data_add_certificate(node: _Element) -> _Element: ...
33
+ def x509_data_add_crl(node: _Element) -> _Element: ...
34
+ def x509_data_add_issuer_serial(node: _Element) -> _Element: ...
35
+ def x509_data_add_ski(node: _Element) -> _Element: ...
36
+ def x509_data_add_subject_name(node: _Element) -> _Element: ...
37
+ def x509_issuer_serial_add_issuer_name(node: _Element, name: str | None = ...) -> _Element: ...
38
+ def x509_issuer_serial_add_serial_number(node: _Element, serial: str | None = ...) -> _Element: ...
xmlsec/tree.pyi ADDED
@@ -0,0 +1,18 @@
1
+ from collections.abc import Sequence
2
+ from typing import overload
3
+
4
+ from lxml.etree import _Element
5
+
6
+ def add_ids(node: _Element, ids: Sequence[str]) -> None: ...
7
+ @overload
8
+ def find_child(parent: _Element, name: str) -> _Element | None: ...
9
+ @overload
10
+ def find_child(parent: _Element, name: str, namespace: str = ...) -> _Element | None: ...
11
+ @overload
12
+ def find_node(node: _Element, name: str) -> _Element | None: ...
13
+ @overload
14
+ def find_node(node: _Element, name: str, namespace: str = ...) -> _Element | None: ...
15
+ @overload
16
+ def find_parent(node: _Element, name: str) -> _Element | None: ...
17
+ @overload
18
+ def find_parent(node: _Element, name: str, namespace: str = ...) -> _Element | None: ...
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Ryan Leckey
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 furnished
10
+ 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.
@@ -0,0 +1,277 @@
1
+ Metadata-Version: 2.2
2
+ Name: xmlsec
3
+ Version: 1.3.15
4
+ Summary: Python bindings for the XML Security Library
5
+ Home-page: https://github.com/mehcode/python-xmlsec
6
+ Author: Bulat Gaifullin
7
+ Author-email: support@mehcode.com
8
+ Maintainer: Oleg Hoefling
9
+ Maintainer-email: oleg.hoefling@gmail.com
10
+ License: MIT
11
+ Project-URL: Documentation, https://xmlsec.readthedocs.io
12
+ Project-URL: Source, https://github.com/mehcode/python-xmlsec
13
+ Project-URL: Changelog, https://github.com/mehcode/python-xmlsec/releases
14
+ Keywords: xmlsec
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: System Administrators
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: C
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.5
23
+ Classifier: Programming Language :: Python :: 3.6
24
+ Classifier: Programming Language :: Python :: 3.7
25
+ Classifier: Programming Language :: Python :: 3.8
26
+ Classifier: Programming Language :: Python :: 3.9
27
+ Classifier: Programming Language :: Python :: 3.11
28
+ Classifier: Topic :: Text Processing :: Markup :: XML
29
+ Classifier: Typing :: Typed
30
+ Requires-Python: >=3.5
31
+ Description-Content-Type: text/markdown
32
+ License-File: LICENSE
33
+ Requires-Dist: lxml>=3.8
34
+ Dynamic: author
35
+ Dynamic: author-email
36
+ Dynamic: classifier
37
+ Dynamic: description
38
+ Dynamic: description-content-type
39
+ Dynamic: home-page
40
+ Dynamic: keywords
41
+ Dynamic: license
42
+ Dynamic: maintainer
43
+ Dynamic: maintainer-email
44
+ Dynamic: project-url
45
+ Dynamic: requires-dist
46
+ Dynamic: requires-python
47
+ Dynamic: summary
48
+
49
+ python-xmlsec
50
+ =============
51
+
52
+ .. image:: https://img.shields.io/pypi/v/xmlsec.svg?logo=python&logoColor=white
53
+ :target: https://pypi.python.org/pypi/xmlsec
54
+ .. image:: https://results.pre-commit.ci/badge/github/xmlsec/python-xmlsec/master.svg
55
+ :target: https://results.pre-commit.ci/latest/github/xmlsec/python-xmlsec/master
56
+ :alt: pre-commit.ci status
57
+ .. image:: https://img.shields.io/appveyor/ci/hoefling/xmlsec/master.svg?logo=appveyor&logoColor=white&label=AppVeyor
58
+ :target: https://ci.appveyor.com/project/hoefling/xmlsec
59
+ .. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/manylinux.yml/badge.svg
60
+ :target: https://github.com/mehcode/python-xmlsec/actions/workflows/manylinux.yml
61
+ .. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/macosx.yml/badge.svg
62
+ :target: https://github.com/mehcode/python-xmlsec/actions/workflows/macosx.yml
63
+ .. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/linuxbrew.yml/badge.svg
64
+ :target: https://github.com/mehcode/python-xmlsec/actions/workflows/linuxbrew.yml
65
+ .. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/opensuse-tumbleweed.yml/badge.svg
66
+ :target: https://github.com/mehcode/python-xmlsec/actions/workflows/opensuse-tumbleweed.yml
67
+ .. image:: https://codecov.io/gh/xmlsec/python-xmlsec/branch/master/graph/badge.svg
68
+ :target: https://codecov.io/gh/xmlsec/python-xmlsec
69
+ .. image:: https://img.shields.io/readthedocs/xmlsec/latest?logo=read-the-docs
70
+ :target: https://xmlsec.readthedocs.io/en/latest/?badge=latest
71
+ :alt: Documentation Status
72
+
73
+ Python bindings for the `XML Security Library <https://www.aleksey.com/xmlsec/>`_.
74
+
75
+ Documentation
76
+ *************
77
+
78
+ A documentation for ``xmlsec`` can be found at `xmlsec.readthedocs.io <https://xmlsec.readthedocs.io/>`_.
79
+
80
+ Usage
81
+ *****
82
+
83
+ Check the `examples <https://xmlsec.readthedocs.io/en/latest/examples.html>`_ section in the documentation to see various examples of signing and verifying using the library.
84
+
85
+ Requirements
86
+ ************
87
+ - ``libxml2 >= 2.9.1``
88
+ - ``libxmlsec1 >= 1.2.33``
89
+
90
+ Install
91
+ *******
92
+
93
+ ``xmlsec`` is available on PyPI:
94
+
95
+ .. code-block:: bash
96
+
97
+ pip install xmlsec
98
+
99
+ Depending on your OS, you may need to install the required native
100
+ libraries first:
101
+
102
+ Linux (Debian)
103
+ ^^^^^^^^^^^^^^
104
+
105
+ .. code-block:: bash
106
+
107
+ apt-get install pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl
108
+
109
+
110
+ Note: There is no required version of LibXML2 for Ubuntu Precise,
111
+ so you need to download and install it manually.
112
+
113
+ .. code-block:: bash
114
+
115
+ wget http://xmlsoft.org/sources/libxml2-2.9.1.tar.gz
116
+ tar -xvf libxml2-2.9.1.tar.gz
117
+ cd libxml2-2.9.1
118
+ ./configure && make && make install
119
+
120
+
121
+ Linux (CentOS)
122
+ ^^^^^^^^^^^^^^
123
+
124
+ .. code-block:: bash
125
+
126
+ yum install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel
127
+
128
+
129
+ Linux (Fedora)
130
+ ^^^^^^^^^^^^^^
131
+
132
+ .. code-block:: bash
133
+
134
+ dnf install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel
135
+
136
+
137
+ Mac
138
+ ^^^
139
+
140
+ .. code-block:: bash
141
+
142
+ brew install libxml2 libxmlsec1 pkg-config
143
+
144
+ or
145
+
146
+ .. code-block:: bash
147
+
148
+ port install libxml2 xmlsec pkgconfig
149
+
150
+
151
+ Alpine
152
+ ^^^^^^
153
+
154
+ .. code-block:: bash
155
+
156
+ apk add build-base libressl libffi-dev libressl-dev libxslt-dev libxml2-dev xmlsec-dev xmlsec
157
+
158
+
159
+ Troubleshooting
160
+ ***************
161
+
162
+ Mac
163
+ ^^^
164
+
165
+ If you get any fatal errors about missing ``.h`` files, update your
166
+ ``C_INCLUDE_PATH`` environment variable to include the appropriate
167
+ files from the ``libxml2`` and ``libxmlsec1`` libraries.
168
+
169
+
170
+ Windows
171
+ ^^^^^^^
172
+
173
+ Starting with 1.3.7, prebuilt wheels are available for Windows,
174
+ so running ``pip install xmlsec`` should suffice. If you want
175
+ to build from source:
176
+
177
+ #. Configure build environment, see `wiki.python.org <https://wiki.python.org/moin/WindowsCompilers>`_ for more details.
178
+
179
+ #. Install from source dist:
180
+
181
+ .. code-block:: bash
182
+
183
+ pip install xmlsec --no-binary=xmlsec
184
+
185
+
186
+ Building from source
187
+ ********************
188
+
189
+ #. Clone the ``xmlsec`` source code repository to your local computer.
190
+
191
+ .. code-block:: bash
192
+
193
+ git clone https://github.com/xmlsec/python-xmlsec.git
194
+
195
+ #. Change into the ``python-xmlsec`` root directory.
196
+
197
+ .. code-block:: bash
198
+
199
+ cd /path/to/xmlsec
200
+
201
+
202
+ #. Install the project and all its dependencies using ``pip``.
203
+
204
+ .. code-block:: bash
205
+
206
+ pip install .
207
+
208
+
209
+ Contributing
210
+ ************
211
+
212
+ Setting up your environment
213
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
214
+
215
+ #. Follow steps 1 and 2 of the `manual installation instructions <#building-from-source>`_.
216
+
217
+
218
+ #. Initialize a virtual environment to develop in.
219
+ This is done so as to ensure every contributor is working with
220
+ close-to-identicial versions of packages.
221
+
222
+ .. code-block:: bash
223
+
224
+ mkvirtualenv xmlsec
225
+
226
+ The ``mkvirtualenv`` command is available from ``virtualenvwrapper`` package which can be installed by following `link <http://virtualenvwrapper.readthedocs.org/en/latest/install.html#basic-installation>`_.
227
+
228
+ #. Activate the created virtual environment:
229
+
230
+ .. code-block:: bash
231
+
232
+ workon xmlsec
233
+
234
+ #. Install ``xmlsec`` in development mode with testing enabled.
235
+ This will download all dependencies required for running the unit tests.
236
+
237
+ .. code-block:: bash
238
+
239
+ pip install -r requirements-test.txt
240
+ pip install -e "."
241
+
242
+
243
+ Running the test suite
244
+ ^^^^^^^^^^^^^^^^^^^^^^
245
+
246
+ #. `Set up your environment <#setting-up-your-environment>`_.
247
+
248
+ #. Run the unit tests.
249
+
250
+ .. code-block:: bash
251
+
252
+ pytest tests
253
+
254
+ #. Tests configuration
255
+
256
+ Env variable ``PYXMLSEC_TEST_ITERATIONS`` specifies number of
257
+ test iterations to detect memory leaks.
258
+
259
+ Reporting an issue
260
+ ^^^^^^^^^^^^^^^^^^
261
+
262
+ Please attach the output of following information:
263
+
264
+ * version of ``xmlsec``
265
+ * version of ``libxmlsec1``
266
+ * version of ``libxml2``
267
+ * output from the command
268
+
269
+ .. code-block:: bash
270
+
271
+ pkg-config --cflags xmlsec1
272
+
273
+ License
274
+ *******
275
+
276
+ Unless otherwise noted, all files contained within this project are licensed under the MIT opensource license.
277
+ See the included ``LICENSE`` file or visit `opensource.org <http://opensource.org/licenses/MIT>`_ for more information.
@@ -0,0 +1,11 @@
1
+ xmlsec.cp313-win32.pyd,sha256=_0aIqBo4TEmcdkHAH_O5YD4fi1FaNptnuV3nwBwygKU,4082176
2
+ xmlsec/__init__.pyi,sha256=MNODYDmsXNYBbWHlig9PlBQ7GkZn5CRAkYEu9vM4J_8,3552
3
+ xmlsec/constants.pyi,sha256=yEHNdlUGbAMfHlVQVkNfwQIm8RxJf76Nj2N9TcJHqA4,4987
4
+ xmlsec/py.typed,sha256=Bxa3A5IphUe3lrTfAq7zA9VqzyOpddaq32o-mnAQ0sA,64
5
+ xmlsec/template.pyi,sha256=a6xVclFYFV0zbpmOBU_60tpYfAr5bCsuuUAW0POJdOM,1925
6
+ xmlsec/tree.pyi,sha256=KTwWoFnf-XQjqlyBAmut5WEyjZd2P3Cs6Tvsw8A7DuA,704
7
+ xmlsec-1.3.15.dist-info/LICENSE,sha256=ff8PS7Wwne5bFvri6AEOsb42IEKWpnmQWCTPZVaLnwY,1099
8
+ xmlsec-1.3.15.dist-info/METADATA,sha256=fZik3KVksHvik51vDUeAeK-RoK7y-qJbaCKcXLKRg5k,7930
9
+ xmlsec-1.3.15.dist-info/WHEEL,sha256=c6uQySv8-CQGjdNllXUwVxs126ZB8V2dkh2N6WXO6oI,97
10
+ xmlsec-1.3.15.dist-info/top_level.txt,sha256=wMJ_ZeZ8UpcV61weMTdYG9hzzYWfyJ2Nf3fmZ4VNqwQ,7
11
+ xmlsec-1.3.15.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.8.2)
3
+ Root-Is-Purelib: false
4
+ Tag: cp313-cp313-win32
5
+
@@ -0,0 +1 @@
1
+ xmlsec
xmlsec.cp313-win32.pyd ADDED
Binary file