Compare commits
3 Commits
2dba979456
...
1108c7719d
Author | SHA1 | Date |
---|---|---|
|
1108c7719d | |
|
5893d133c2 | |
|
00d7d0803f |
|
@ -1,32 +0,0 @@
|
||||||
Copyright © 2018 Alexander Pushkov and [contributors].
|
|
||||||
|
|
||||||
Based on original work copyright © 2016 Jeff Forcier,
|
|
||||||
© 2011 Kenneth Reitz and © 2010 Armin Ronacher.
|
|
||||||
|
|
||||||
Some rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms of the theme, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
|
|
||||||
* The names of the contributors may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
*This theme is provided by the copyright holders and contributors “as is” and
|
|
||||||
*any express or implied warranties, including, but not limited to, the implied
|
|
||||||
*warranties of merchantability and fitness for a particular purpose are
|
|
||||||
*disclaimed. In no event shall the copyright owner or contributors be liable for
|
|
||||||
*any direct, indirect, incidental, special, exemplary, or consequential damages
|
|
||||||
*(including, but not limited to, procurement of substitute goods or services;
|
|
||||||
*loss of use, data, or profits; or business interruption) however caused and on
|
|
||||||
*any theory of liability, whether in contract, strict liability, or tort
|
|
||||||
*(including negligence or otherwise) arising in any way out of the use of this
|
|
||||||
*theme, even if advised of the possibility of such damage.*
|
|
||||||
|
|
||||||
[contributors]: https://github.com/notpushkin/mkdocs-alabaster/graphs/contributors
|
|
|
@ -1 +0,0 @@
|
||||||
pip
|
|
|
@ -1,30 +0,0 @@
|
||||||
BSD 3-Clause License
|
|
||||||
|
|
||||||
Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
|
|
||||||
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
|
|
||||||
Copyright 2004 Manfred Stienstra (the original version)
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1,146 +0,0 @@
|
||||||
Metadata-Version: 2.1
|
|
||||||
Name: Markdown
|
|
||||||
Version: 3.7
|
|
||||||
Summary: Python implementation of John Gruber's Markdown.
|
|
||||||
Author: Manfred Stienstra, Yuri Takhteyev
|
|
||||||
Author-email: Waylan limberg <python.markdown@gmail.com>
|
|
||||||
Maintainer: Isaac Muse
|
|
||||||
Maintainer-email: Waylan Limberg <python.markdown@gmail.com>
|
|
||||||
License: BSD 3-Clause License
|
|
||||||
|
|
||||||
Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
|
|
||||||
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
|
|
||||||
Copyright 2004 Manfred Stienstra (the original version)
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Project-URL: Homepage, https://Python-Markdown.github.io/
|
|
||||||
Project-URL: Documentation, https://Python-Markdown.github.io/
|
|
||||||
Project-URL: Repository, https://github.com/Python-Markdown/markdown
|
|
||||||
Project-URL: Issue Tracker, https://github.com/Python-Markdown/markdown/issues
|
|
||||||
Project-URL: Changelog, https://python-markdown.github.io/changelog/
|
|
||||||
Keywords: markdown,markdown-parser,python-markdown,markdown-to-html
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: License :: OSI Approved :: BSD License
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3.8
|
|
||||||
Classifier: Programming Language :: Python :: 3.9
|
|
||||||
Classifier: Programming Language :: Python :: 3.10
|
|
||||||
Classifier: Programming Language :: Python :: 3.11
|
|
||||||
Classifier: Programming Language :: Python :: 3.12
|
|
||||||
Classifier: Programming Language :: Python :: 3 :: Only
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
||||||
Classifier: Topic :: Communications :: Email :: Filters
|
|
||||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
|
|
||||||
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
|
|
||||||
Classifier: Topic :: Software Development :: Documentation
|
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
||||||
Classifier: Topic :: Text Processing :: Filters
|
|
||||||
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
||||||
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
|
||||||
Requires-Python: >=3.8
|
|
||||||
Description-Content-Type: text/markdown
|
|
||||||
License-File: LICENSE.md
|
|
||||||
Requires-Dist: importlib-metadata >=4.4 ; python_version < "3.10"
|
|
||||||
Provides-Extra: docs
|
|
||||||
Requires-Dist: mkdocs >=1.5 ; extra == 'docs'
|
|
||||||
Requires-Dist: mkdocs-nature >=0.6 ; extra == 'docs'
|
|
||||||
Requires-Dist: mdx-gh-links >=0.2 ; extra == 'docs'
|
|
||||||
Requires-Dist: mkdocstrings[python] ; extra == 'docs'
|
|
||||||
Requires-Dist: mkdocs-gen-files ; extra == 'docs'
|
|
||||||
Requires-Dist: mkdocs-section-index ; extra == 'docs'
|
|
||||||
Requires-Dist: mkdocs-literate-nav ; extra == 'docs'
|
|
||||||
Provides-Extra: testing
|
|
||||||
Requires-Dist: coverage ; extra == 'testing'
|
|
||||||
Requires-Dist: pyyaml ; extra == 'testing'
|
|
||||||
|
|
||||||
[Python-Markdown][]
|
|
||||||
===================
|
|
||||||
|
|
||||||
[![Build Status][build-button]][build]
|
|
||||||
[![Coverage Status][codecov-button]][codecov]
|
|
||||||
[![Latest Version][mdversion-button]][md-pypi]
|
|
||||||
[![Python Versions][pyversion-button]][md-pypi]
|
|
||||||
[![BSD License][bsdlicense-button]][bsdlicense]
|
|
||||||
[![Code of Conduct][codeofconduct-button]][Code of Conduct]
|
|
||||||
|
|
||||||
[build-button]: https://github.com/Python-Markdown/markdown/workflows/CI/badge.svg?event=push
|
|
||||||
[build]: https://github.com/Python-Markdown/markdown/actions?query=workflow%3ACI+event%3Apush
|
|
||||||
[codecov-button]: https://codecov.io/gh/Python-Markdown/markdown/branch/master/graph/badge.svg
|
|
||||||
[codecov]: https://codecov.io/gh/Python-Markdown/markdown
|
|
||||||
[mdversion-button]: https://img.shields.io/pypi/v/Markdown.svg
|
|
||||||
[md-pypi]: https://pypi.org/project/Markdown/
|
|
||||||
[pyversion-button]: https://img.shields.io/pypi/pyversions/Markdown.svg
|
|
||||||
[bsdlicense-button]: https://img.shields.io/badge/license-BSD-yellow.svg
|
|
||||||
[bsdlicense]: https://opensource.org/licenses/BSD-3-Clause
|
|
||||||
[codeofconduct-button]: https://img.shields.io/badge/code%20of%20conduct-contributor%20covenant-green.svg?style=flat-square
|
|
||||||
[Code of Conduct]: https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md
|
|
||||||
|
|
||||||
This is a Python implementation of John Gruber's [Markdown][].
|
|
||||||
It is almost completely compliant with the reference implementation,
|
|
||||||
though there are a few known issues. See [Features][] for information
|
|
||||||
on what exactly is supported and what is not. Additional features are
|
|
||||||
supported by the [Available Extensions][].
|
|
||||||
|
|
||||||
[Python-Markdown]: https://Python-Markdown.github.io/
|
|
||||||
[Markdown]: https://daringfireball.net/projects/markdown/
|
|
||||||
[Features]: https://Python-Markdown.github.io#Features
|
|
||||||
[Available Extensions]: https://Python-Markdown.github.io/extensions
|
|
||||||
|
|
||||||
Documentation
|
|
||||||
-------------
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install markdown
|
|
||||||
```
|
|
||||||
```python
|
|
||||||
import markdown
|
|
||||||
html = markdown.markdown(your_text_string)
|
|
||||||
```
|
|
||||||
|
|
||||||
For more advanced [installation] and [usage] documentation, see the `docs/` directory
|
|
||||||
of the distribution or the project website at <https://Python-Markdown.github.io/>.
|
|
||||||
|
|
||||||
[installation]: https://python-markdown.github.io/install/
|
|
||||||
[usage]: https://python-markdown.github.io/reference/
|
|
||||||
|
|
||||||
See the change log at <https://python-markdown.github.io/changelog/>.
|
|
||||||
|
|
||||||
Support
|
|
||||||
-------
|
|
||||||
|
|
||||||
You may report bugs, ask for help, and discuss various other issues on the [bug tracker][].
|
|
||||||
|
|
||||||
[bug tracker]: https://github.com/Python-Markdown/markdown/issues
|
|
||||||
|
|
||||||
Code of Conduct
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Everyone interacting in the Python-Markdown project's code bases, issue trackers,
|
|
||||||
and mailing lists is expected to follow the [Code of Conduct].
|
|
|
@ -1,74 +0,0 @@
|
||||||
../../Scripts/markdown_py.exe,sha256=ZnZMw_QSJtOf4tH9y-cgtuvZW2l94PV03773KaHPmI8,108391
|
|
||||||
Markdown-3.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
||||||
Markdown-3.7.dist-info/LICENSE.md,sha256=e6TrbRCzKy0R3OE4ITQDUc27swuozMZ4Qdsv_Ybnmso,1650
|
|
||||||
Markdown-3.7.dist-info/METADATA,sha256=nY8sewcY6R1akyROqkyO-Jk_eUDY8am_C4MkRP79sWA,7040
|
|
||||||
Markdown-3.7.dist-info/RECORD,,
|
|
||||||
Markdown-3.7.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
|
||||||
Markdown-3.7.dist-info/entry_points.txt,sha256=lMEyiiA_ZZyfPCBlDviBl-SiU0cfoeuEKpwxw361sKQ,1102
|
|
||||||
Markdown-3.7.dist-info/top_level.txt,sha256=IAxs8x618RXoH1uCqeLLxXsDefJvE_mIibr_M4sOlyk,9
|
|
||||||
markdown/__init__.py,sha256=dfzwwdpG9L8QLEPBpLFPIHx_BN056aZXp9xZifTxYIU,1777
|
|
||||||
markdown/__main__.py,sha256=innFBxRqwPBNxG1zhKktJji4bnRKtVyYYd30ID13Tcw,5859
|
|
||||||
markdown/__meta__.py,sha256=RhwfJ30zyGvJaJXLHwQdNH5jw69-5fVKu2p-CVaJz0U,1712
|
|
||||||
markdown/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/__main__.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/__meta__.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/blockparser.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/blockprocessors.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/core.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/htmlparser.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/inlinepatterns.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/postprocessors.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/preprocessors.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/serializers.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/test_tools.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/treeprocessors.cpython-312.pyc,,
|
|
||||||
markdown/__pycache__/util.cpython-312.pyc,,
|
|
||||||
markdown/blockparser.py,sha256=j4CQImVpiq7g9pz8wCxvzT61X_T2iSAjXupHJk8P3eA,5728
|
|
||||||
markdown/blockprocessors.py,sha256=koY5rq8DixzBCHcquvZJp6x2JYyBGjrwxMWNZhd6D2U,27013
|
|
||||||
markdown/core.py,sha256=DyyzDsmd-KcuEp8ZWUKJAeUCt7B7G3J3NeqZqp3LphI,21335
|
|
||||||
markdown/extensions/__init__.py,sha256=9z1khsdKCVrmrJ_2GfxtPAdjD3FyMe5vhC7wmM4O9m0,4822
|
|
||||||
markdown/extensions/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/abbr.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/admonition.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/attr_list.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/codehilite.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/def_list.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/extra.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/fenced_code.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/footnotes.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/legacy_attrs.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/legacy_em.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/md_in_html.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/meta.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/nl2br.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/sane_lists.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/smarty.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/tables.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/toc.cpython-312.pyc,,
|
|
||||||
markdown/extensions/__pycache__/wikilinks.cpython-312.pyc,,
|
|
||||||
markdown/extensions/abbr.py,sha256=Gqt9TUtLWez2cbsy3SQk5152RZekops2fUJj01bfkfw,6903
|
|
||||||
markdown/extensions/admonition.py,sha256=Hqcn3I8JG0i-OPWdoqI189TmlQRgH6bs5PmpCANyLlg,6547
|
|
||||||
markdown/extensions/attr_list.py,sha256=t3PrgAr5Ebldnq3nJNbteBt79bN0ccXS5RemmQfUZ9g,7820
|
|
||||||
markdown/extensions/codehilite.py,sha256=ChlmpM6S--j-UK7t82859UpYjm8EftdiLqmgDnknyes,13503
|
|
||||||
markdown/extensions/def_list.py,sha256=J3NVa6CllfZPsboJCEycPyRhtjBHnOn8ET6omEvVlDo,4029
|
|
||||||
markdown/extensions/extra.py,sha256=1vleT284kued4HQBtF83IjSumJVo0q3ng6MjTkVNfNQ,2163
|
|
||||||
markdown/extensions/fenced_code.py,sha256=-fYSmRZ9DTYQ8HO9b_78i47kVyVu6mcVJlqVTMdzvo4,8300
|
|
||||||
markdown/extensions/footnotes.py,sha256=bRFlmIBOKDI5efG1jZfDkMoV2osfqWip1rN1j2P-mMg,16710
|
|
||||||
markdown/extensions/legacy_attrs.py,sha256=oWcyNrfP0F6zsBoBOaD5NiwrJyy4kCpgQLl12HA7JGU,2788
|
|
||||||
markdown/extensions/legacy_em.py,sha256=-Z_w4PEGSS-Xg-2-BtGAnXwwy5g5GDgv2tngASnPgxg,1693
|
|
||||||
markdown/extensions/md_in_html.py,sha256=y4HEWEnkvfih22fojcaJeAmjx1AtF8N-a_jb6IDFfts,16546
|
|
||||||
markdown/extensions/meta.py,sha256=v_4Uq7nbcQ76V1YAvqVPiNLbRLIQHJsnfsk-tN70RmY,2600
|
|
||||||
markdown/extensions/nl2br.py,sha256=9KKcrPs62c3ENNnmOJZs0rrXXqUtTCfd43j1_OPpmgU,1090
|
|
||||||
markdown/extensions/sane_lists.py,sha256=ogAKcm7gEpcXV7fSTf8JZH5YdKAssPCEOUzdGM3C9Tw,2150
|
|
||||||
markdown/extensions/smarty.py,sha256=yqT0OiE2AqYrqqZtcUFFmp2eJsQHomiKzgyG2JFb9rI,11048
|
|
||||||
markdown/extensions/tables.py,sha256=oTDvGD1qp9xjVWPGYNgDBWe9NqsX5gS6UU5wUsQ1bC8,8741
|
|
||||||
markdown/extensions/toc.py,sha256=PGg-EqbBubm3n0b633r8Xa9kc6JIdbo20HGAOZ6GEl8,18322
|
|
||||||
markdown/extensions/wikilinks.py,sha256=j7D2sozica6sqXOUa_GuAXqIzxp-7Hi60bfXymiuma8,3285
|
|
||||||
markdown/htmlparser.py,sha256=dEr6IE7i9b6Tc1gdCLZGeWw6g6-E-jK1Z4KPj8yGk8Q,14332
|
|
||||||
markdown/inlinepatterns.py,sha256=7_HF5nTOyQag_CyBgU4wwmuI6aMjtadvGadyS9IP21w,38256
|
|
||||||
markdown/postprocessors.py,sha256=eYi6eW0mGudmWpmsW45hduLwX66Zr8Bf44WyU9vKp-I,4807
|
|
||||||
markdown/preprocessors.py,sha256=pq5NnHKkOSVQeIo-ajC-Yt44kvyMV97D04FBOQXctJM,3224
|
|
||||||
markdown/serializers.py,sha256=YtAFYQoOdp_TAmYGow6nBo0eB6I-Sl4PTLdLDfQJHwQ,7174
|
|
||||||
markdown/test_tools.py,sha256=MtN4cf3ZPDtb83wXLTol-3q3aIGRIkJ2zWr6fd-RgVE,8662
|
|
||||||
markdown/treeprocessors.py,sha256=o4dnoZZsIeVV8qR45Njr8XgwKleWYDS5pv8dKQhJvv8,17651
|
|
||||||
markdown/util.py,sha256=vJ1E0xjMzDAlTqLUSJWgdEvxdQfLXDEYUssOQMw9kPQ,13929
|
|
|
@ -1,5 +0,0 @@
|
||||||
Wheel-Version: 1.0
|
|
||||||
Generator: setuptools (72.2.0)
|
|
||||||
Root-Is-Purelib: true
|
|
||||||
Tag: py3-none-any
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
[console_scripts]
|
|
||||||
markdown_py = markdown.__main__:run
|
|
||||||
|
|
||||||
[markdown.extensions]
|
|
||||||
abbr = markdown.extensions.abbr:AbbrExtension
|
|
||||||
admonition = markdown.extensions.admonition:AdmonitionExtension
|
|
||||||
attr_list = markdown.extensions.attr_list:AttrListExtension
|
|
||||||
codehilite = markdown.extensions.codehilite:CodeHiliteExtension
|
|
||||||
def_list = markdown.extensions.def_list:DefListExtension
|
|
||||||
extra = markdown.extensions.extra:ExtraExtension
|
|
||||||
fenced_code = markdown.extensions.fenced_code:FencedCodeExtension
|
|
||||||
footnotes = markdown.extensions.footnotes:FootnoteExtension
|
|
||||||
legacy_attrs = markdown.extensions.legacy_attrs:LegacyAttrExtension
|
|
||||||
legacy_em = markdown.extensions.legacy_em:LegacyEmExtension
|
|
||||||
md_in_html = markdown.extensions.md_in_html:MarkdownInHtmlExtension
|
|
||||||
meta = markdown.extensions.meta:MetaExtension
|
|
||||||
nl2br = markdown.extensions.nl2br:Nl2BrExtension
|
|
||||||
sane_lists = markdown.extensions.sane_lists:SaneListExtension
|
|
||||||
smarty = markdown.extensions.smarty:SmartyExtension
|
|
||||||
tables = markdown.extensions.tables:TableExtension
|
|
||||||
toc = markdown.extensions.toc:TocExtension
|
|
||||||
wikilinks = markdown.extensions.wikilinks:WikiLinkExtension
|
|
|
@ -1 +0,0 @@
|
||||||
markdown
|
|
|
@ -1 +0,0 @@
|
||||||
pip
|
|
|
@ -1,28 +0,0 @@
|
||||||
Copyright 2010 Pallets
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1,93 +0,0 @@
|
||||||
Metadata-Version: 2.1
|
|
||||||
Name: MarkupSafe
|
|
||||||
Version: 2.1.5
|
|
||||||
Summary: Safely add untrusted strings to HTML/XML markup.
|
|
||||||
Home-page: https://palletsprojects.com/p/markupsafe/
|
|
||||||
Maintainer: Pallets
|
|
||||||
Maintainer-email: contact@palletsprojects.com
|
|
||||||
License: BSD-3-Clause
|
|
||||||
Project-URL: Donate, https://palletsprojects.com/donate
|
|
||||||
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
|
||||||
Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
|
|
||||||
Project-URL: Source Code, https://github.com/pallets/markupsafe/
|
|
||||||
Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
|
|
||||||
Project-URL: Chat, https://discord.gg/pallets
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Environment :: Web Environment
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: License :: OSI Approved :: BSD License
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
||||||
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
||||||
Requires-Python: >=3.7
|
|
||||||
Description-Content-Type: text/x-rst
|
|
||||||
License-File: LICENSE.rst
|
|
||||||
|
|
||||||
MarkupSafe
|
|
||||||
==========
|
|
||||||
|
|
||||||
MarkupSafe implements a text object that escapes characters so it is
|
|
||||||
safe to use in HTML and XML. Characters that have special meanings are
|
|
||||||
replaced so that they display as the actual characters. This mitigates
|
|
||||||
injection attacks, meaning untrusted user input can safely be displayed
|
|
||||||
on a page.
|
|
||||||
|
|
||||||
|
|
||||||
Installing
|
|
||||||
----------
|
|
||||||
|
|
||||||
Install and update using `pip`_:
|
|
||||||
|
|
||||||
.. code-block:: text
|
|
||||||
|
|
||||||
pip install -U MarkupSafe
|
|
||||||
|
|
||||||
.. _pip: https://pip.pypa.io/en/stable/getting-started/
|
|
||||||
|
|
||||||
|
|
||||||
Examples
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. code-block:: pycon
|
|
||||||
|
|
||||||
>>> from markupsafe import Markup, escape
|
|
||||||
|
|
||||||
>>> # escape replaces special characters and wraps in Markup
|
|
||||||
>>> escape("<script>alert(document.cookie);</script>")
|
|
||||||
Markup('<script>alert(document.cookie);</script>')
|
|
||||||
|
|
||||||
>>> # wrap in Markup to mark text "safe" and prevent escaping
|
|
||||||
>>> Markup("<strong>Hello</strong>")
|
|
||||||
Markup('<strong>hello</strong>')
|
|
||||||
|
|
||||||
>>> escape(Markup("<strong>Hello</strong>"))
|
|
||||||
Markup('<strong>hello</strong>')
|
|
||||||
|
|
||||||
>>> # Markup is a str subclass
|
|
||||||
>>> # methods and operators escape their arguments
|
|
||||||
>>> template = Markup("Hello <em>{name}</em>")
|
|
||||||
>>> template.format(name='"World"')
|
|
||||||
Markup('Hello <em>"World"</em>')
|
|
||||||
|
|
||||||
|
|
||||||
Donate
|
|
||||||
------
|
|
||||||
|
|
||||||
The Pallets organization develops and supports MarkupSafe and other
|
|
||||||
popular packages. In order to grow the community of contributors and
|
|
||||||
users, and allow the maintainers to devote more time to the projects,
|
|
||||||
`please donate today`_.
|
|
||||||
|
|
||||||
.. _please donate today: https://palletsprojects.com/donate
|
|
||||||
|
|
||||||
|
|
||||||
Links
|
|
||||||
-----
|
|
||||||
|
|
||||||
- Documentation: https://markupsafe.palletsprojects.com/
|
|
||||||
- Changes: https://markupsafe.palletsprojects.com/changes/
|
|
||||||
- PyPI Releases: https://pypi.org/project/MarkupSafe/
|
|
||||||
- Source Code: https://github.com/pallets/markupsafe/
|
|
||||||
- Issue Tracker: https://github.com/pallets/markupsafe/issues/
|
|
||||||
- Chat: https://discord.gg/pallets
|
|
|
@ -1,14 +0,0 @@
|
||||||
MarkupSafe-2.1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
||||||
MarkupSafe-2.1.5.dist-info/LICENSE.rst,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503
|
|
||||||
MarkupSafe-2.1.5.dist-info/METADATA,sha256=icNlaniV7YIQZ1BScCVqNaRtm7MAgfw8d3OBmoSVyAY,3096
|
|
||||||
MarkupSafe-2.1.5.dist-info/RECORD,,
|
|
||||||
MarkupSafe-2.1.5.dist-info/WHEEL,sha256=j9Aissza3750LQHFAQyYerNjmkEON1-8w_RaZNFtKSs,102
|
|
||||||
MarkupSafe-2.1.5.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
|
||||||
markupsafe/__init__.py,sha256=m1ysNeqf55zbEoJtaovca40ivrkEFolPlw5bGoC5Gi4,11290
|
|
||||||
markupsafe/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
markupsafe/__pycache__/_native.cpython-312.pyc,,
|
|
||||||
markupsafe/_native.py,sha256=_Q7UsXCOvgdonCgqG3l5asANI6eo50EKnDM-mlwEC5M,1776
|
|
||||||
markupsafe/_speedups.c,sha256=n3jzzaJwXcoN8nTFyA53f3vSqsWK2vujI-v6QYifjhQ,7403
|
|
||||||
markupsafe/_speedups.cp312-win_amd64.pyd,sha256=CLz8k0mpvM-dgLP0eSHpGYHm8shlGxXoCinA12zgHsY,15872
|
|
||||||
markupsafe/_speedups.pyi,sha256=f5QtwIOP0eLrxh2v5p6SmaYmlcHIGIfmz0DovaqL0OU,238
|
|
||||||
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
@ -1,5 +0,0 @@
|
||||||
Wheel-Version: 1.0
|
|
||||||
Generator: bdist_wheel (0.42.0)
|
|
||||||
Root-Is-Purelib: false
|
|
||||||
Tag: cp312-cp312-win_amd64
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
markupsafe
|
|
|
@ -1 +0,0 @@
|
||||||
pip
|
|
|
@ -1,174 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
|
@ -1,246 +0,0 @@
|
||||||
Metadata-Version: 2.1
|
|
||||||
Name: PyNaCl
|
|
||||||
Version: 1.5.0
|
|
||||||
Summary: Python binding to the Networking and Cryptography (NaCl) library
|
|
||||||
Home-page: https://github.com/pyca/pynacl/
|
|
||||||
Author: The PyNaCl developers
|
|
||||||
Author-email: cryptography-dev@python.org
|
|
||||||
License: Apache License 2.0
|
|
||||||
Platform: UNKNOWN
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3.6
|
|
||||||
Classifier: Programming Language :: Python :: 3.7
|
|
||||||
Classifier: Programming Language :: Python :: 3.8
|
|
||||||
Classifier: Programming Language :: Python :: 3.9
|
|
||||||
Classifier: Programming Language :: Python :: 3.10
|
|
||||||
Requires-Python: >=3.6
|
|
||||||
License-File: LICENSE
|
|
||||||
Requires-Dist: cffi (>=1.4.1)
|
|
||||||
Provides-Extra: docs
|
|
||||||
Requires-Dist: sphinx (>=1.6.5) ; extra == 'docs'
|
|
||||||
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
|
|
||||||
Provides-Extra: tests
|
|
||||||
Requires-Dist: pytest (!=3.3.0,>=3.2.1) ; extra == 'tests'
|
|
||||||
Requires-Dist: hypothesis (>=3.27.0) ; extra == 'tests'
|
|
||||||
|
|
||||||
===============================================
|
|
||||||
PyNaCl: Python binding to the libsodium library
|
|
||||||
===============================================
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/v/pynacl.svg
|
|
||||||
:target: https://pypi.org/project/PyNaCl/
|
|
||||||
:alt: Latest Version
|
|
||||||
|
|
||||||
.. image:: https://codecov.io/github/pyca/pynacl/coverage.svg?branch=main
|
|
||||||
:target: https://codecov.io/github/pyca/pynacl?branch=main
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/pyversions/pynacl.svg
|
|
||||||
:target: https://pypi.org/project/PyNaCl/
|
|
||||||
:alt: Compatible Python Versions
|
|
||||||
|
|
||||||
PyNaCl is a Python binding to `libsodium`_, which is a fork of the
|
|
||||||
`Networking and Cryptography library`_. These libraries have a stated goal of
|
|
||||||
improving usability, security and speed. It supports Python 3.6+ as well as
|
|
||||||
PyPy 3.
|
|
||||||
|
|
||||||
.. _libsodium: https://github.com/jedisct1/libsodium
|
|
||||||
.. _Networking and Cryptography library: https://nacl.cr.yp.to/
|
|
||||||
|
|
||||||
Features
|
|
||||||
--------
|
|
||||||
|
|
||||||
* Digital signatures
|
|
||||||
* Secret-key encryption
|
|
||||||
* Public-key encryption
|
|
||||||
* Hashing and message authentication
|
|
||||||
* Password based key derivation and password hashing
|
|
||||||
|
|
||||||
`Changelog`_
|
|
||||||
------------
|
|
||||||
|
|
||||||
.. _Changelog: https://pynacl.readthedocs.io/en/stable/changelog/
|
|
||||||
|
|
||||||
Installation
|
|
||||||
============
|
|
||||||
|
|
||||||
Binary wheel install
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
PyNaCl ships as a binary wheel on macOS, Windows and Linux ``manylinux1`` [#many]_ ,
|
|
||||||
so all dependencies are included. Make sure you have an up-to-date pip
|
|
||||||
and run:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ pip install pynacl
|
|
||||||
|
|
||||||
Faster wheel build
|
|
||||||
------------------
|
|
||||||
|
|
||||||
You can define the environment variable ``LIBSODIUM_MAKE_ARGS`` to pass arguments to ``make``
|
|
||||||
and enable `parallelization`_:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ LIBSODIUM_MAKE_ARGS=-j4 pip install pynacl
|
|
||||||
|
|
||||||
Linux source build
|
|
||||||
------------------
|
|
||||||
|
|
||||||
PyNaCl relies on `libsodium`_, a portable C library. A copy is bundled
|
|
||||||
with PyNaCl so to install you can run:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ pip install pynacl
|
|
||||||
|
|
||||||
If you'd prefer to use the version of ``libsodium`` provided by your
|
|
||||||
distribution, you can disable the bundled copy during install by running:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ SODIUM_INSTALL=system pip install pynacl
|
|
||||||
|
|
||||||
.. warning:: Usage of the legacy ``easy_install`` command provided by setuptools
|
|
||||||
is generally discouraged, and is completely unsupported in PyNaCl's case.
|
|
||||||
|
|
||||||
.. _parallelization: https://www.gnu.org/software/make/manual/html_node/Parallel.html
|
|
||||||
|
|
||||||
.. _libsodium: https://github.com/jedisct1/libsodium
|
|
||||||
|
|
||||||
.. [#many] `manylinux1 wheels <https://www.python.org/dev/peps/pep-0513/>`_
|
|
||||||
are built on a baseline linux environment based on Centos 5.11
|
|
||||||
and should work on most x86 and x86_64 glibc based linux environments.
|
|
||||||
|
|
||||||
Changelog
|
|
||||||
=========
|
|
||||||
|
|
||||||
1.5.0 (2022-01-07)
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* **BACKWARDS INCOMPATIBLE:** Removed support for Python 2.7 and Python 3.5.
|
|
||||||
* **BACKWARDS INCOMPATIBLE:** We no longer distribute ``manylinux1``
|
|
||||||
wheels.
|
|
||||||
* Added ``manylinux2014``, ``manylinux_2_24``, ``musllinux``, and macOS
|
|
||||||
``universal2`` wheels (the latter supports macOS ``arm64``).
|
|
||||||
* Update ``libsodium`` to 1.0.18-stable (July 25, 2021 release).
|
|
||||||
* Add inline type hints.
|
|
||||||
|
|
||||||
1.4.0 (2020-05-25)
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Update ``libsodium`` to 1.0.18.
|
|
||||||
* **BACKWARDS INCOMPATIBLE:** We no longer distribute 32-bit ``manylinux1``
|
|
||||||
wheels. Continuing to produce them was a maintenance burden.
|
|
||||||
* Added support for Python 3.8, and removed support for Python 3.4.
|
|
||||||
* Add low level bindings for extracting the seed and the public key
|
|
||||||
from crypto_sign_ed25519 secret key
|
|
||||||
* Add low level bindings for deterministic random generation.
|
|
||||||
* Add ``wheel`` and ``setuptools`` setup_requirements in ``setup.py`` (#485)
|
|
||||||
* Fix checks on very slow builders (#481, #495)
|
|
||||||
* Add low-level bindings to ed25519 arithmetic functions
|
|
||||||
* Update low-level blake2b state implementation
|
|
||||||
* Fix wrong short-input behavior of SealedBox.decrypt() (#517)
|
|
||||||
* Raise CryptPrefixError exception instead of InvalidkeyError when trying
|
|
||||||
to check a password against a verifier stored in a unknown format (#519)
|
|
||||||
* Add support for minimal builds of libsodium. Trying to call functions
|
|
||||||
not available in a minimal build will raise an UnavailableError
|
|
||||||
exception. To compile a minimal build of the bundled libsodium, set
|
|
||||||
the SODIUM_INSTALL_MINIMAL environment variable to any non-empty
|
|
||||||
string (e.g. ``SODIUM_INSTALL_MINIMAL=1``) for setup.
|
|
||||||
|
|
||||||
1.3.0 2018-09-26
|
|
||||||
----------------
|
|
||||||
|
|
||||||
* Added support for Python 3.7.
|
|
||||||
* Update ``libsodium`` to 1.0.16.
|
|
||||||
* Run and test all code examples in PyNaCl docs through sphinx's
|
|
||||||
doctest builder.
|
|
||||||
* Add low-level bindings for chacha20-poly1305 AEAD constructions.
|
|
||||||
* Add low-level bindings for the chacha20-poly1305 secretstream constructions.
|
|
||||||
* Add low-level bindings for ed25519ph pre-hashed signing construction.
|
|
||||||
* Add low-level bindings for constant-time increment and addition
|
|
||||||
on fixed-precision big integers represented as little-endian
|
|
||||||
byte sequences.
|
|
||||||
* Add low-level bindings for the ISO/IEC 7816-4 compatible padding API.
|
|
||||||
* Add low-level bindings for libsodium's crypto_kx... key exchange
|
|
||||||
construction.
|
|
||||||
* Set hypothesis deadline to None in tests/test_pwhash.py to avoid
|
|
||||||
incorrect test failures on slower processor architectures. GitHub
|
|
||||||
issue #370
|
|
||||||
|
|
||||||
1.2.1 - 2017-12-04
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Update hypothesis minimum allowed version.
|
|
||||||
* Infrastructure: add proper configuration for readthedocs builder
|
|
||||||
runtime environment.
|
|
||||||
|
|
||||||
1.2.0 - 2017-11-01
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Update ``libsodium`` to 1.0.15.
|
|
||||||
* Infrastructure: add jenkins support for automatic build of
|
|
||||||
``manylinux1`` binary wheels
|
|
||||||
* Added support for ``SealedBox`` construction.
|
|
||||||
* Added support for ``argon2i`` and ``argon2id`` password hashing constructs
|
|
||||||
and restructured high-level password hashing implementation to expose
|
|
||||||
the same interface for all hashers.
|
|
||||||
* Added support for 128 bit ``siphashx24`` variant of ``siphash24``.
|
|
||||||
* Added support for ``from_seed`` APIs for X25519 keypair generation.
|
|
||||||
* Dropped support for Python 3.3.
|
|
||||||
|
|
||||||
1.1.2 - 2017-03-31
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* reorder link time library search path when using bundled
|
|
||||||
libsodium
|
|
||||||
|
|
||||||
1.1.1 - 2017-03-15
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Fixed a circular import bug in ``nacl.utils``.
|
|
||||||
|
|
||||||
1.1.0 - 2017-03-14
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Dropped support for Python 2.6.
|
|
||||||
* Added ``shared_key()`` method on ``Box``.
|
|
||||||
* You can now pass ``None`` to ``nonce`` when encrypting with ``Box`` or
|
|
||||||
``SecretBox`` and it will automatically generate a random nonce.
|
|
||||||
* Added support for ``siphash24``.
|
|
||||||
* Added support for ``blake2b``.
|
|
||||||
* Added support for ``scrypt``.
|
|
||||||
* Update ``libsodium`` to 1.0.11.
|
|
||||||
* Default to the bundled ``libsodium`` when compiling.
|
|
||||||
* All raised exceptions are defined mixing-in
|
|
||||||
``nacl.exceptions.CryptoError``
|
|
||||||
|
|
||||||
1.0.1 - 2016-01-24
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* Fix an issue with absolute paths that prevented the creation of wheels.
|
|
||||||
|
|
||||||
1.0 - 2016-01-23
|
|
||||||
----------------
|
|
||||||
|
|
||||||
* PyNaCl has been ported to use the new APIs available in cffi 1.0+.
|
|
||||||
Due to this change we no longer support PyPy releases older than 2.6.
|
|
||||||
* Python 3.2 support has been dropped.
|
|
||||||
* Functions to convert between Ed25519 and Curve25519 keys have been added.
|
|
||||||
|
|
||||||
0.3.0 - 2015-03-04
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* The low-level API (`nacl.c.*`) has been changed to match the
|
|
||||||
upstream NaCl C/C++ conventions (as well as those of other NaCl bindings).
|
|
||||||
The order of arguments and return values has changed significantly. To
|
|
||||||
avoid silent failures, `nacl.c` has been removed, and replaced with
|
|
||||||
`nacl.bindings` (with the new argument ordering). If you have code which
|
|
||||||
calls these functions (e.g. `nacl.c.crypto_box_keypair()`), you must review
|
|
||||||
the new docstrings and update your code/imports to match the new
|
|
||||||
conventions.
|
|
||||||
|
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
PyNaCl-1.5.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
||||||
PyNaCl-1.5.0.dist-info/LICENSE,sha256=d69bve2VkRS216XupRiyvjZOBPT0qV-eh9mHDCdxPSQ,9868
|
|
||||||
PyNaCl-1.5.0.dist-info/METADATA,sha256=U9PLLkcKk_YC_Tl5OSoMiAmblalKU9qFsRtxiwa-TiM,8656
|
|
||||||
PyNaCl-1.5.0.dist-info/RECORD,,
|
|
||||||
PyNaCl-1.5.0.dist-info/WHEEL,sha256=nYCSW5p8tLyDU-wbqo3uRlCluAzwxLmyyRK2pVs4-Ag,100
|
|
||||||
PyNaCl-1.5.0.dist-info/top_level.txt,sha256=wfdEOI_G2RIzmzsMyhpqP17HUh6Jcqi99to9aHLEslo,13
|
|
||||||
nacl/__init__.py,sha256=W0JhVbFcnhlrEtK0tdRGDcX8aucbKCQmRBmf9hGFWQY,1155
|
|
||||||
nacl/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/encoding.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/exceptions.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/hash.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/hashlib.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/public.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/secret.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/signing.cpython-312.pyc,,
|
|
||||||
nacl/__pycache__/utils.cpython-312.pyc,,
|
|
||||||
nacl/_sodium.pyd,sha256=1zPCPGpLIWJaT_B_ZWK6iCvL2w9QgmJpQZ2N4FdPiM0,348672
|
|
||||||
nacl/bindings/__init__.py,sha256=erC7ta0z7XQSmfeYcnCVhFKqBtkkK6wJq8PKsEnjqSg,17448
|
|
||||||
nacl/bindings/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_aead.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_box.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_core.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_generichash.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_hash.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_kx.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_pwhash.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_scalarmult.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_secretbox.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_secretstream.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_shorthash.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/crypto_sign.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/randombytes.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/sodium_core.cpython-312.pyc,,
|
|
||||||
nacl/bindings/__pycache__/utils.cpython-312.pyc,,
|
|
||||||
nacl/bindings/crypto_aead.py,sha256=fxSgpeI48HkxwsZEk9cTxigdJ5k7PvMh1mxr7M0LK9A,16156
|
|
||||||
nacl/bindings/crypto_box.py,sha256=6M7qSZu806POBtEoK5e9Ui-JcSYaFDI6tTnllVJ0F7U,10463
|
|
||||||
nacl/bindings/crypto_core.py,sha256=KccKcEGpoEsQjkYRcwpsBse-g_iGXNgQHeb1gCdZR4E,14148
|
|
||||||
nacl/bindings/crypto_generichash.py,sha256=8nEG1ntZSqVOTAV6-_EZg-gNbV5UJc-SbDUa2GdkxRs,9133
|
|
||||||
nacl/bindings/crypto_hash.py,sha256=8GO8el_rZgD2ITJyEbiejHXZimfrxckXc9cUppv1vpk,2238
|
|
||||||
nacl/bindings/crypto_kx.py,sha256=8gmFRbU7NKHqCLZ1HsObilmeTboYFW6tEJCEUucje9Q,6923
|
|
||||||
nacl/bindings/crypto_pwhash.py,sha256=sIugQ9Rx8KTy3vnOsQwz_kV2PhqwqVOsfbkR_sKnudc,19448
|
|
||||||
nacl/bindings/crypto_scalarmult.py,sha256=gMNDgWl-P6ua8I3kAM2yt4dNzK9gY742C424z-yBMUU,8484
|
|
||||||
nacl/bindings/crypto_secretbox.py,sha256=WEX2_Ea79pQkUshr_sVlslA28Zx_66tYFawW1qipleY,3000
|
|
||||||
nacl/bindings/crypto_secretstream.py,sha256=3uZN9XET8AeFKn365K2gfcZKYjkOFfyLr8GCUw8Wx6g,11522
|
|
||||||
nacl/bindings/crypto_shorthash.py,sha256=NDmmvG77ZhGLmbK0USoLW2dOveUcGdUFqL1fi5ozcDc,2684
|
|
||||||
nacl/bindings/crypto_sign.py,sha256=IMKXZCAb8oF0tLQR6UcpJk0zTRFDeW4IWNvo9XdZfgw,10669
|
|
||||||
nacl/bindings/randombytes.py,sha256=JmR-o2Bpj1ssJp8GDj4KgutPknEZGgogUSdnW4kRI5Q,1614
|
|
||||||
nacl/bindings/sodium_core.py,sha256=8o4mDDahmmAIf4Xk3hJE5C-B6Ms5mbeu64_ylW9kY6I,1072
|
|
||||||
nacl/bindings/utils.py,sha256=2WefZr1MOFTWKn6h6ODuw4u8D9PEfDWMaayXiPUm6RA,4439
|
|
||||||
nacl/encoding.py,sha256=xKwjFb5F1jEfmazetwtaQpsUPvzYLh3RU6Wkiq56NzI,3020
|
|
||||||
nacl/exceptions.py,sha256=gM8gN01HFGCUw8L1VjmEhBPf00r-igNJo-nAEsrhEBU,2539
|
|
||||||
nacl/hash.py,sha256=_H8JOPecwna4GP8CaMorghfetykbuO9q4oteek9bfVo,6574
|
|
||||||
nacl/hashlib.py,sha256=x74Z29ExS3e5yFV0Mzij9gnU_eRKWwkD6YPYfI5eUFw,4543
|
|
||||||
nacl/public.py,sha256=kVoz1R9zkNnczDUsBDnYYXL_6C9jsga6ph3rk32uFNo,15215
|
|
||||||
nacl/pwhash/__init__.py,sha256=2vX9OivKZsrMVjh2vjfbdBVDsUml8AEnIRsa1d6ZzG0,2750
|
|
||||||
nacl/pwhash/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
nacl/pwhash/__pycache__/_argon2.cpython-312.pyc,,
|
|
||||||
nacl/pwhash/__pycache__/argon2i.cpython-312.pyc,,
|
|
||||||
nacl/pwhash/__pycache__/argon2id.cpython-312.pyc,,
|
|
||||||
nacl/pwhash/__pycache__/scrypt.cpython-312.pyc,,
|
|
||||||
nacl/pwhash/_argon2.py,sha256=uR1Y_DnX8RZIfmTHborlXWcJ-re_wDryOIhVYssjj8I,1828
|
|
||||||
nacl/pwhash/argon2i.py,sha256=dJmM_bVP0LALK9I4TfaZsWqEah7z7sprd3mw8TRPr-4,4537
|
|
||||||
nacl/pwhash/argon2id.py,sha256=dJ7kpU-b07YzMPlrsMW9K_tV-xnA0bE7pj-ZFo-z0wc,4568
|
|
||||||
nacl/pwhash/scrypt.py,sha256=_qbeDojJzzE42RvwwUsELA8pGgXDInb1ht6ec1w3_1Y,7197
|
|
||||||
nacl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
||||||
nacl/secret.py,sha256=YShCAvKF7sHAGOBRSnWKMJvJChQ7SuhlQXRCz32MdrM,12413
|
|
||||||
nacl/signing.py,sha256=CR9ZRXYSrdZFkNiIQTIplFS8UQ0Z_OzXqaaQ_HdhSQ4,8587
|
|
||||||
nacl/utils.py,sha256=iEQ0LtPtyV7Cqo4wpn9CvQunwsM5ShEZlO9IvT1r4dk,2429
|
|
|
@ -1,5 +0,0 @@
|
||||||
Wheel-Version: 1.0
|
|
||||||
Generator: bdist_wheel (0.37.1)
|
|
||||||
Root-Is-Purelib: false
|
|
||||||
Tag: cp36-abi3-win_amd64
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
_sodium
|
|
||||||
nacl
|
|
|
@ -1 +0,0 @@
|
||||||
pip
|
|
|
@ -1,20 +0,0 @@
|
||||||
Copyright (c) 2017-2021 Ingy döt Net
|
|
||||||
Copyright (c) 2006-2016 Kirill Simonov
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
|
||||||
the Software without restriction, including without limitation the rights to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
of the Software, and to permit persons to whom the Software is furnished to do
|
|
||||||
so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,46 +0,0 @@
|
||||||
Metadata-Version: 2.1
|
|
||||||
Name: PyYAML
|
|
||||||
Version: 6.0.2
|
|
||||||
Summary: YAML parser and emitter for Python
|
|
||||||
Home-page: https://pyyaml.org/
|
|
||||||
Download-URL: https://pypi.org/project/PyYAML/
|
|
||||||
Author: Kirill Simonov
|
|
||||||
Author-email: xi@resolvent.net
|
|
||||||
License: MIT
|
|
||||||
Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues
|
|
||||||
Project-URL: CI, https://github.com/yaml/pyyaml/actions
|
|
||||||
Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation
|
|
||||||
Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core
|
|
||||||
Project-URL: Source Code, https://github.com/yaml/pyyaml
|
|
||||||
Platform: Any
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: License :: OSI Approved :: MIT License
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Cython
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3.8
|
|
||||||
Classifier: Programming Language :: Python :: 3.9
|
|
||||||
Classifier: Programming Language :: Python :: 3.10
|
|
||||||
Classifier: Programming Language :: Python :: 3.11
|
|
||||||
Classifier: Programming Language :: Python :: 3.12
|
|
||||||
Classifier: Programming Language :: Python :: 3.13
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
||||||
Classifier: Topic :: Text Processing :: Markup
|
|
||||||
Requires-Python: >=3.8
|
|
||||||
License-File: LICENSE
|
|
||||||
|
|
||||||
YAML is a data serialization format designed for human readability
|
|
||||||
and interaction with scripting languages. PyYAML is a YAML parser
|
|
||||||
and emitter for Python.
|
|
||||||
|
|
||||||
PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
|
|
||||||
support, capable extension API, and sensible error messages. PyYAML
|
|
||||||
supports standard YAML tags and provides Python-specific tags that
|
|
||||||
allow to represent an arbitrary Python object.
|
|
||||||
|
|
||||||
PyYAML is applicable for a broad range of tasks from complex
|
|
||||||
configuration files to object serialization and persistence.
|
|
|
@ -1,43 +0,0 @@
|
||||||
PyYAML-6.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
||||||
PyYAML-6.0.2.dist-info/LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101
|
|
||||||
PyYAML-6.0.2.dist-info/METADATA,sha256=9lwXqTOrXPts-jI2Lo5UwuaAYo0hiRA0BZqjch0WjAk,2106
|
|
||||||
PyYAML-6.0.2.dist-info/RECORD,,
|
|
||||||
PyYAML-6.0.2.dist-info/WHEEL,sha256=c7SWG1_hRvc9HXHEkmWlTu1Jr4WpzRucfzqTP-_8q0s,102
|
|
||||||
PyYAML-6.0.2.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11
|
|
||||||
_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402
|
|
||||||
_yaml/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
yaml/__init__.py,sha256=N35S01HMesFTe0aRRMWkPj0Pa8IEbHpE9FK7cr5Bdtw,12311
|
|
||||||
yaml/__pycache__/__init__.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/composer.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/constructor.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/cyaml.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/dumper.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/emitter.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/error.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/events.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/loader.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/nodes.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/parser.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/reader.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/representer.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/resolver.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/scanner.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/serializer.cpython-312.pyc,,
|
|
||||||
yaml/__pycache__/tokens.cpython-312.pyc,,
|
|
||||||
yaml/_yaml.cp312-win_amd64.pyd,sha256=Bx7e_LEQx7cnd1_A9_nClp3X77g-_Lw1aoAAtYZbwWk,263680
|
|
||||||
yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
|
|
||||||
yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639
|
|
||||||
yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851
|
|
||||||
yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837
|
|
||||||
yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006
|
|
||||||
yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533
|
|
||||||
yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445
|
|
||||||
yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061
|
|
||||||
yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440
|
|
||||||
yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495
|
|
||||||
yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794
|
|
||||||
yaml/representer.py,sha256=IuWP-cAW9sHKEnS0gCqSa894k1Bg4cgTxaDwIcbRQ-Y,14190
|
|
||||||
yaml/resolver.py,sha256=9L-VYfm4mWHxUD1Vg4X7rjDRK_7VZd6b92wzq7Y2IKY,9004
|
|
||||||
yaml/scanner.py,sha256=YEM3iLZSaQwXcQRg2l2R4MdT0zGP2F9eHkKGKnHyWQY,51279
|
|
||||||
yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165
|
|
||||||
yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573
|
|
|
@ -1,5 +0,0 @@
|
||||||
Wheel-Version: 1.0
|
|
||||||
Generator: bdist_wheel (0.44.0)
|
|
||||||
Root-Is-Purelib: false
|
|
||||||
Tag: cp312-cp312-win_amd64
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
_yaml
|
|
||||||
yaml
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
import _virtualenv
|
|
|
@ -1,102 +0,0 @@
|
||||||
"""Patches that are applied at runtime to the virtual environment."""
|
|
||||||
|
|
||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
from contextlib import suppress
|
|
||||||
|
|
||||||
VIRTUALENV_PATCH_FILE = os.path.join(__file__)
|
|
||||||
|
|
||||||
|
|
||||||
def patch_dist(dist):
|
|
||||||
"""
|
|
||||||
Distutils allows user to configure some arguments via a configuration file:
|
|
||||||
https://docs.python.org/3/install/index.html#distutils-configuration-files.
|
|
||||||
|
|
||||||
Some of this arguments though don't make sense in context of the virtual environment files, let's fix them up.
|
|
||||||
""" # noqa: D205
|
|
||||||
# we cannot allow some install config as that would get packages installed outside of the virtual environment
|
|
||||||
old_parse_config_files = dist.Distribution.parse_config_files
|
|
||||||
|
|
||||||
def parse_config_files(self, *args, **kwargs):
|
|
||||||
result = old_parse_config_files(self, *args, **kwargs)
|
|
||||||
install = self.get_option_dict("install")
|
|
||||||
|
|
||||||
if "prefix" in install: # the prefix governs where to install the libraries
|
|
||||||
install["prefix"] = VIRTUALENV_PATCH_FILE, os.path.abspath(sys.prefix)
|
|
||||||
for base in ("purelib", "platlib", "headers", "scripts", "data"):
|
|
||||||
key = f"install_{base}"
|
|
||||||
if key in install: # do not allow global configs to hijack venv paths
|
|
||||||
install.pop(key, None)
|
|
||||||
return result
|
|
||||||
|
|
||||||
dist.Distribution.parse_config_files = parse_config_files
|
|
||||||
|
|
||||||
|
|
||||||
# Import hook that patches some modules to ignore configuration values that break package installation in case
|
|
||||||
# of virtual environments.
|
|
||||||
_DISTUTILS_PATCH = "distutils.dist", "setuptools.dist"
|
|
||||||
# https://docs.python.org/3/library/importlib.html#setting-up-an-importer
|
|
||||||
|
|
||||||
|
|
||||||
class _Finder:
|
|
||||||
"""A meta path finder that allows patching the imported distutils modules."""
|
|
||||||
|
|
||||||
fullname = None
|
|
||||||
|
|
||||||
# lock[0] is threading.Lock(), but initialized lazily to avoid importing threading very early at startup,
|
|
||||||
# because there are gevent-based applications that need to be first to import threading by themselves.
|
|
||||||
# See https://github.com/pypa/virtualenv/issues/1895 for details.
|
|
||||||
lock = [] # noqa: RUF012
|
|
||||||
|
|
||||||
def find_spec(self, fullname, path, target=None): # noqa: ARG002
|
|
||||||
if fullname in _DISTUTILS_PATCH and self.fullname is None:
|
|
||||||
# initialize lock[0] lazily
|
|
||||||
if len(self.lock) == 0:
|
|
||||||
import threading
|
|
||||||
|
|
||||||
lock = threading.Lock()
|
|
||||||
# there is possibility that two threads T1 and T2 are simultaneously running into find_spec,
|
|
||||||
# observing .lock as empty, and further going into hereby initialization. However due to the GIL,
|
|
||||||
# list.append() operation is atomic and this way only one of the threads will "win" to put the lock
|
|
||||||
# - that every thread will use - into .lock[0].
|
|
||||||
# https://docs.python.org/3/faq/library.html#what-kinds-of-global-value-mutation-are-thread-safe
|
|
||||||
self.lock.append(lock)
|
|
||||||
|
|
||||||
from functools import partial
|
|
||||||
from importlib.util import find_spec
|
|
||||||
|
|
||||||
with self.lock[0]:
|
|
||||||
self.fullname = fullname
|
|
||||||
try:
|
|
||||||
spec = find_spec(fullname, path)
|
|
||||||
if spec is not None:
|
|
||||||
# https://www.python.org/dev/peps/pep-0451/#how-loading-will-work
|
|
||||||
is_new_api = hasattr(spec.loader, "exec_module")
|
|
||||||
func_name = "exec_module" if is_new_api else "load_module"
|
|
||||||
old = getattr(spec.loader, func_name)
|
|
||||||
func = self.exec_module if is_new_api else self.load_module
|
|
||||||
if old is not func:
|
|
||||||
with suppress(AttributeError): # C-Extension loaders are r/o such as zipimporter with <3.7
|
|
||||||
setattr(spec.loader, func_name, partial(func, old))
|
|
||||||
return spec
|
|
||||||
finally:
|
|
||||||
self.fullname = None
|
|
||||||
return None
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def exec_module(old, module):
|
|
||||||
old(module)
|
|
||||||
if module.__name__ in _DISTUTILS_PATCH:
|
|
||||||
patch_dist(module)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def load_module(old, name):
|
|
||||||
module = old(name)
|
|
||||||
if module.__name__ in _DISTUTILS_PATCH:
|
|
||||||
patch_dist(module)
|
|
||||||
return module
|
|
||||||
|
|
||||||
|
|
||||||
sys.meta_path.insert(0, _Finder())
|
|
|
@ -1,33 +0,0 @@
|
||||||
# This is a stub package designed to roughly emulate the _yaml
|
|
||||||
# extension module, which previously existed as a standalone module
|
|
||||||
# and has been moved into the `yaml` package namespace.
|
|
||||||
# It does not perfectly mimic its old counterpart, but should get
|
|
||||||
# close enough for anyone who's relying on it even when they shouldn't.
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
# in some circumstances, the yaml module we imoprted may be from a different version, so we need
|
|
||||||
# to tread carefully when poking at it here (it may not have the attributes we expect)
|
|
||||||
if not getattr(yaml, '__with_libyaml__', False):
|
|
||||||
from sys import version_info
|
|
||||||
|
|
||||||
exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError
|
|
||||||
raise exc("No module named '_yaml'")
|
|
||||||
else:
|
|
||||||
from yaml._yaml import *
|
|
||||||
import warnings
|
|
||||||
warnings.warn(
|
|
||||||
'The _yaml extension module is now located at yaml._yaml'
|
|
||||||
' and its location is subject to change. To use the'
|
|
||||||
' LibYAML-based parser and emitter, import from `yaml`:'
|
|
||||||
' `from yaml import CLoader as Loader, CDumper as Dumper`.',
|
|
||||||
DeprecationWarning
|
|
||||||
)
|
|
||||||
del warnings
|
|
||||||
# Don't `del yaml` here because yaml is actually an existing
|
|
||||||
# namespace member of _yaml.
|
|
||||||
|
|
||||||
__name__ = '_yaml'
|
|
||||||
# If the module is top-level (i.e. not a part of any specific package)
|
|
||||||
# then the attribute should be set to ''.
|
|
||||||
# https://docs.python.org/3.8/library/types.html
|
|
||||||
__package__ = ''
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
pip
|
|
|
@ -1,27 +0,0 @@
|
||||||
Copyright (c) 2013-2024 by the Babel Team, see AUTHORS for more information.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in
|
|
||||||
the documentation and/or other materials provided with the
|
|
||||||
distribution.
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1,36 +0,0 @@
|
||||||
Metadata-Version: 2.1
|
|
||||||
Name: babel
|
|
||||||
Version: 2.16.0
|
|
||||||
Summary: Internationalization utilities
|
|
||||||
Home-page: https://babel.pocoo.org/
|
|
||||||
Author: Armin Ronacher
|
|
||||||
Author-email: armin.ronacher@active-4.com
|
|
||||||
Maintainer: Aarni Koskela
|
|
||||||
Maintainer-email: akx@iki.fi
|
|
||||||
License: BSD-3-Clause
|
|
||||||
Project-URL: Source, https://github.com/python-babel/babel
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Environment :: Web Environment
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: License :: OSI Approved :: BSD License
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3 :: Only
|
|
||||||
Classifier: Programming Language :: Python :: 3.8
|
|
||||||
Classifier: Programming Language :: Python :: 3.9
|
|
||||||
Classifier: Programming Language :: Python :: 3.10
|
|
||||||
Classifier: Programming Language :: Python :: 3.11
|
|
||||||
Classifier: Programming Language :: Python :: 3.12
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
||||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
||||||
Requires-Python: >=3.8
|
|
||||||
License-File: LICENSE
|
|
||||||
Requires-Dist: pytz >=2015.7 ; python_version < "3.9"
|
|
||||||
Provides-Extra: dev
|
|
||||||
Requires-Dist: pytest >=6.0 ; extra == 'dev'
|
|
||||||
Requires-Dist: pytest-cov ; extra == 'dev'
|
|
||||||
Requires-Dist: freezegun ~=1.0 ; extra == 'dev'
|
|
||||||
|
|
||||||
A collection of tools for internationalizing Python applications.
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +0,0 @@
|
||||||
Wheel-Version: 1.0
|
|
||||||
Generator: setuptools (72.1.0)
|
|
||||||
Root-Is-Purelib: true
|
|
||||||
Tag: py3-none-any
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
[babel.checkers]
|
|
||||||
num_plurals = babel.messages.checkers:num_plurals
|
|
||||||
python_format = babel.messages.checkers:python_format
|
|
||||||
|
|
||||||
[babel.extractors]
|
|
||||||
ignore = babel.messages.extract:extract_nothing
|
|
||||||
javascript = babel.messages.extract:extract_javascript
|
|
||||||
python = babel.messages.extract:extract_python
|
|
||||||
|
|
||||||
[console_scripts]
|
|
||||||
pybabel = babel.messages.frontend:main
|
|
||||||
|
|
||||||
[distutils.commands]
|
|
||||||
compile_catalog = babel.messages.setuptools_frontend:compile_catalog
|
|
||||||
extract_messages = babel.messages.setuptools_frontend:extract_messages
|
|
||||||
init_catalog = babel.messages.setuptools_frontend:init_catalog
|
|
||||||
update_catalog = babel.messages.setuptools_frontend:update_catalog
|
|
||||||
|
|
||||||
[distutils.setup_keywords]
|
|
||||||
message_extractors = babel.messages.setuptools_frontend:check_message_extractors
|
|
|
@ -1 +0,0 @@
|
||||||
babel
|
|
|
@ -1,37 +0,0 @@
|
||||||
"""
|
|
||||||
babel
|
|
||||||
~~~~~
|
|
||||||
|
|
||||||
Integrated collection of utilities that assist in internationalizing and
|
|
||||||
localizing applications.
|
|
||||||
|
|
||||||
This package is basically composed of two major parts:
|
|
||||||
|
|
||||||
* tools to build and work with ``gettext`` message catalogs
|
|
||||||
* a Python interface to the CLDR (Common Locale Data Repository), providing
|
|
||||||
access to various locale display names, localized number and date
|
|
||||||
formatting, etc.
|
|
||||||
|
|
||||||
:copyright: (c) 2013-2024 by the Babel Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from babel.core import (
|
|
||||||
Locale,
|
|
||||||
UnknownLocaleError,
|
|
||||||
default_locale,
|
|
||||||
get_locale_identifier,
|
|
||||||
negotiate_locale,
|
|
||||||
parse_locale,
|
|
||||||
)
|
|
||||||
|
|
||||||
__version__ = '2.16.0'
|
|
||||||
|
|
||||||
__all__ = [
|
|
||||||
'Locale',
|
|
||||||
'UnknownLocaleError',
|
|
||||||
'default_locale',
|
|
||||||
'get_locale_identifier',
|
|
||||||
'negotiate_locale',
|
|
||||||
'parse_locale',
|
|
||||||
]
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -1,72 +0,0 @@
|
||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
from babel.core import get_global
|
|
||||||
|
|
||||||
|
|
||||||
def get_official_languages(territory: str, regional: bool = False, de_facto: bool = False) -> tuple[str, ...]:
|
|
||||||
"""
|
|
||||||
Get the official language(s) for the given territory.
|
|
||||||
|
|
||||||
The language codes, if any are known, are returned in order of descending popularity.
|
|
||||||
|
|
||||||
If the `regional` flag is set, then languages which are regionally official are also returned.
|
|
||||||
|
|
||||||
If the `de_facto` flag is set, then languages which are "de facto" official are also returned.
|
|
||||||
|
|
||||||
.. warning:: Note that the data is as up to date as the current version of the CLDR used
|
|
||||||
by Babel. If you need scientifically accurate information, use another source!
|
|
||||||
|
|
||||||
:param territory: Territory code
|
|
||||||
:type territory: str
|
|
||||||
:param regional: Whether to return regionally official languages too
|
|
||||||
:type regional: bool
|
|
||||||
:param de_facto: Whether to return de-facto official languages too
|
|
||||||
:type de_facto: bool
|
|
||||||
:return: Tuple of language codes
|
|
||||||
:rtype: tuple[str]
|
|
||||||
"""
|
|
||||||
|
|
||||||
territory = str(territory).upper()
|
|
||||||
allowed_stati = {"official"}
|
|
||||||
if regional:
|
|
||||||
allowed_stati.add("official_regional")
|
|
||||||
if de_facto:
|
|
||||||
allowed_stati.add("de_facto_official")
|
|
||||||
|
|
||||||
languages = get_global("territory_languages").get(territory, {})
|
|
||||||
pairs = [
|
|
||||||
(info['population_percent'], language)
|
|
||||||
for language, info in languages.items()
|
|
||||||
if info.get('official_status') in allowed_stati
|
|
||||||
]
|
|
||||||
pairs.sort(reverse=True)
|
|
||||||
return tuple(lang for _, lang in pairs)
|
|
||||||
|
|
||||||
|
|
||||||
def get_territory_language_info(territory: str) -> dict[str, dict[str, float | str | None]]:
|
|
||||||
"""
|
|
||||||
Get a dictionary of language information for a territory.
|
|
||||||
|
|
||||||
The dictionary is keyed by language code; the values are dicts with more information.
|
|
||||||
|
|
||||||
The following keys are currently known for the values:
|
|
||||||
|
|
||||||
* `population_percent`: The percentage of the territory's population speaking the
|
|
||||||
language.
|
|
||||||
* `official_status`: An optional string describing the officiality status of the language.
|
|
||||||
Known values are "official", "official_regional" and "de_facto_official".
|
|
||||||
|
|
||||||
.. warning:: Note that the data is as up to date as the current version of the CLDR used
|
|
||||||
by Babel. If you need scientifically accurate information, use another source!
|
|
||||||
|
|
||||||
.. note:: Note that the format of the dict returned may change between Babel versions.
|
|
||||||
|
|
||||||
See https://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html
|
|
||||||
|
|
||||||
:param territory: Territory code
|
|
||||||
:type territory: str
|
|
||||||
:return: Language information dictionary
|
|
||||||
:rtype: dict[str, dict]
|
|
||||||
"""
|
|
||||||
territory = str(territory).upper()
|
|
||||||
return get_global("territory_languages").get(territory, {}).copy()
|
|
|
@ -1,123 +0,0 @@
|
||||||
"""
|
|
||||||
babel.lists
|
|
||||||
~~~~~~~~~~~
|
|
||||||
|
|
||||||
Locale dependent formatting of lists.
|
|
||||||
|
|
||||||
The default locale for the functions in this module is determined by the
|
|
||||||
following environment variables, in that order:
|
|
||||||
|
|
||||||
* ``LC_ALL``, and
|
|
||||||
* ``LANG``
|
|
||||||
|
|
||||||
:copyright: (c) 2015-2024 by the Babel Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
from collections.abc import Sequence
|
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
|
|
||||||
from babel.core import Locale, default_locale
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from typing_extensions import Literal
|
|
||||||
|
|
||||||
DEFAULT_LOCALE = default_locale()
|
|
||||||
|
|
||||||
|
|
||||||
def format_list(
|
|
||||||
lst: Sequence[str],
|
|
||||||
style: Literal['standard', 'standard-short', 'or', 'or-short', 'unit', 'unit-short', 'unit-narrow'] = 'standard',
|
|
||||||
locale: Locale | str | None = DEFAULT_LOCALE,
|
|
||||||
) -> str:
|
|
||||||
"""
|
|
||||||
Format the items in `lst` as a list.
|
|
||||||
|
|
||||||
>>> format_list(['apples', 'oranges', 'pears'], locale='en')
|
|
||||||
u'apples, oranges, and pears'
|
|
||||||
>>> format_list(['apples', 'oranges', 'pears'], locale='zh')
|
|
||||||
u'apples\u3001oranges\u548cpears'
|
|
||||||
>>> format_list(['omena', 'peruna', 'aplari'], style='or', locale='fi')
|
|
||||||
u'omena, peruna tai aplari'
|
|
||||||
|
|
||||||
Not all styles are necessarily available in all locales.
|
|
||||||
The function will attempt to fall back to replacement styles according to the rules
|
|
||||||
set forth in the CLDR root XML file, and raise a ValueError if no suitable replacement
|
|
||||||
can be found.
|
|
||||||
|
|
||||||
The following text is verbatim from the Unicode TR35-49 spec [1].
|
|
||||||
|
|
||||||
* standard:
|
|
||||||
A typical 'and' list for arbitrary placeholders.
|
|
||||||
eg. "January, February, and March"
|
|
||||||
* standard-short:
|
|
||||||
A short version of an 'and' list, suitable for use with short or abbreviated placeholder values.
|
|
||||||
eg. "Jan., Feb., and Mar."
|
|
||||||
* or:
|
|
||||||
A typical 'or' list for arbitrary placeholders.
|
|
||||||
eg. "January, February, or March"
|
|
||||||
* or-short:
|
|
||||||
A short version of an 'or' list.
|
|
||||||
eg. "Jan., Feb., or Mar."
|
|
||||||
* unit:
|
|
||||||
A list suitable for wide units.
|
|
||||||
eg. "3 feet, 7 inches"
|
|
||||||
* unit-short:
|
|
||||||
A list suitable for short units
|
|
||||||
eg. "3 ft, 7 in"
|
|
||||||
* unit-narrow:
|
|
||||||
A list suitable for narrow units, where space on the screen is very limited.
|
|
||||||
eg. "3′ 7″"
|
|
||||||
|
|
||||||
[1]: https://www.unicode.org/reports/tr35/tr35-49/tr35-general.html#ListPatterns
|
|
||||||
|
|
||||||
:param lst: a sequence of items to format in to a list
|
|
||||||
:param style: the style to format the list with. See above for description.
|
|
||||||
:param locale: the locale
|
|
||||||
"""
|
|
||||||
locale = Locale.parse(locale)
|
|
||||||
if not lst:
|
|
||||||
return ''
|
|
||||||
if len(lst) == 1:
|
|
||||||
return lst[0]
|
|
||||||
|
|
||||||
patterns = _resolve_list_style(locale, style)
|
|
||||||
|
|
||||||
if len(lst) == 2 and '2' in patterns:
|
|
||||||
return patterns['2'].format(*lst)
|
|
||||||
|
|
||||||
result = patterns['start'].format(lst[0], lst[1])
|
|
||||||
for elem in lst[2:-1]:
|
|
||||||
result = patterns['middle'].format(result, elem)
|
|
||||||
result = patterns['end'].format(result, lst[-1])
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
# Based on CLDR 45's root.xml file's `<alias>`es.
|
|
||||||
# The root file defines both `standard` and `or`,
|
|
||||||
# so they're always available.
|
|
||||||
# TODO: It would likely be better to use the
|
|
||||||
# babel.localedata.Alias mechanism for this,
|
|
||||||
# but I'm not quite sure how it's supposed to
|
|
||||||
# work with inheritance and data in the root.
|
|
||||||
_style_fallbacks = {
|
|
||||||
"or-narrow": ["or-short", "or"],
|
|
||||||
"or-short": ["or"],
|
|
||||||
"standard-narrow": ["standard-short", "standard"],
|
|
||||||
"standard-short": ["standard"],
|
|
||||||
"unit": ["unit-short", "standard"],
|
|
||||||
"unit-narrow": ["unit-short", "unit", "standard"],
|
|
||||||
"unit-short": ["standard"],
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def _resolve_list_style(locale: Locale, style: str):
|
|
||||||
for style in (style, *(_style_fallbacks.get(style, []))): # noqa: B020
|
|
||||||
if style in locale.list_patterns:
|
|
||||||
return locale.list_patterns[style]
|
|
||||||
raise ValueError(
|
|
||||||
f"Locale {locale} does not support list formatting style {style!r} "
|
|
||||||
f"(supported are {sorted(locale.list_patterns)})",
|
|
||||||
)
|
|
|
@ -1,41 +0,0 @@
|
||||||
UNICODE LICENSE V3
|
|
||||||
|
|
||||||
COPYRIGHT AND PERMISSION NOTICE
|
|
||||||
|
|
||||||
Copyright © 2004-2024 Unicode, Inc.
|
|
||||||
|
|
||||||
NOTICE TO USER: Carefully read the following legal agreement. BY
|
|
||||||
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
|
|
||||||
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
|
|
||||||
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
|
|
||||||
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of data files and any associated documentation (the "Data Files") or
|
|
||||||
software and any associated documentation (the "Software") to deal in the
|
|
||||||
Data Files or Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, and/or sell
|
|
||||||
copies of the Data Files or Software, and to permit persons to whom the
|
|
||||||
Data Files or Software are furnished to do so, provided that either (a)
|
|
||||||
this copyright and permission notice appear with all copies of the Data
|
|
||||||
Files or Software, or (b) this copyright and permission notice appear in
|
|
||||||
associated Documentation.
|
|
||||||
|
|
||||||
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
|
||||||
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
|
||||||
THIRD PARTY RIGHTS.
|
|
||||||
|
|
||||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
|
|
||||||
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
|
|
||||||
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
||||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
|
|
||||||
FILES OR SOFTWARE.
|
|
||||||
|
|
||||||
Except as contained in this notice, the name of a copyright holder shall
|
|
||||||
not be used in advertising or otherwise to promote the sale, use or other
|
|
||||||
dealings in these Data Files or Software without prior written
|
|
||||||
authorization of the copyright holder.
|
|
||||||
|
|
||||||
SPDX-License-Identifier: Unicode-3.0
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue