This commit is contained in:
ziggi
2020-05-22 06:01:24 +00:00
parent 2327488661
commit a8a418c011
37 changed files with 364 additions and 38 deletions

23
python/py-Jinja2/Makefile Normal file
View File

@@ -0,0 +1,23 @@
# Created by: Nicola Vitale <nivit@FreeBSD.org>
# $FreeBSD: head/devel/py-Jinja2/Makefile 534966 2020-05-11 23:51:58Z dbaio $
PORTNAME= Jinja2
PORTVERSION= 2.10.1
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
PKGNAMESUFFIX?=
MAINTAINER= nivit@FreeBSD.org
COMMENT?= Fast and easy to use stand-alone template engine
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}MarkupSafe>=0.23:python/py-MarkupSafe@${PY_FLAVOR}
NO_ARCH= yes
USES= python
USE_PYTHON= autoplist distutils
PY2TO3_CMD= ${LOCALBASE}/bin/2to3-${PYTHON_VER}
PY2TO3_ARGS= --fix=all --no-diffs --nobackups --verbose --write
.include <bsd.port.mk>

View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1555711700
SHA256 (Jinja2-2.10.1.tar.gz) = 065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013
SIZE (Jinja2-2.10.1.tar.gz) = 260956

View File

@@ -0,0 +1,6 @@
Jinja is a sandboxed template engine written in pure Python licensed
under the BSD license. It provides a Django-like non-XML syntax and
compiles templates into executable python code. It's basically a
combination of Django templates and python code.
WWW: http://jinja.pocoo.org/

View File

@@ -1,16 +1,17 @@
# $FreeBSD: head/devel/py-asn1crypto/Makefile 444640 2017-06-29 10:06:12Z robak $
# $FreeBSD: head/devel/py-asn1crypto/Makefile 527788 2020-03-04 16:50:07Z mikael $
PORTNAME= asn1crypto
PORTVERSION= 0.22.0
PORTVERSION= 1.3.0
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= mikael.urankar@gmail.com
MAINTAINER= mikael@FreeBSD.org
COMMENT= ASN.1 library with a focus on performance and a pythonic API
NO_ARCH= yes
USES= python
USE_PYTHON= autoplist distutils
NO_ARCH= yes
.include <bsd.port.mk>

View File

@@ -1,3 +1,3 @@
TIMESTAMP = 1498488938
SHA256 (asn1crypto-0.22.0.tar.gz) = cbbadd640d3165ab24b06ef25d1dca09a3441611ac15f6a6b452474fdf0aed1a
SIZE (asn1crypto-0.22.0.tar.gz) = 84508
TIMESTAMP = 1582989456
SHA256 (asn1crypto-1.3.0.tar.gz) = 5a215cb8dc12f892244e3a113fe05397ee23c5c4ca7a69cd6e69811755efc42d
SIZE (asn1crypto-1.3.0.tar.gz) = 118481

View File

@@ -2,7 +2,7 @@
# $FreeBSD: head/devel/py-cffi/Makefile 472884 2018-06-20 17:05:41Z mat $
PORTNAME= cffi
PORTVERSION= 1.11.5
PORTVERSION= 1.14.0
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}

View File

@@ -1,3 +1,3 @@
TIMESTAMP = 1522555152
SHA256 (cffi-1.11.5.tar.gz) = e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4
SIZE (cffi-1.11.5.tar.gz) = 438498
TIMESTAMP = 1590074780
SHA256 (cffi-1.14.0.tar.gz) = 2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6
SIZE (cffi-1.14.0.tar.gz) = 463065

19
python/py-click/Makefile Normal file
View File

@@ -0,0 +1,19 @@
# Created by: Bartek Rutkowski <ports@robakdesign.com>
# $FreeBSD: head/devel/py-click/Makefile 496503 2019-03-21 19:41:43Z sunpoet $
PORTNAME= click
PORTVERSION= 7.0
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
DISTNAME= Click-${PORTVERSION}
MAINTAINER= robak@FreeBSD.org
COMMENT= Python package for creating command line interfaces
USES= python
USE_PYTHON= distutils autoplist
NO_ARCH= yes
.include <bsd.port.mk>

3
python/py-click/distinfo Normal file
View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1551680094
SHA256 (Click-7.0.tar.gz) = 5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7
SIZE (Click-7.0.tar.gz) = 286192

View File

@@ -0,0 +1,6 @@
Click is a Python package for creating beautiful command line interfaces
in a composable way with as little code as necessary. It's the "Command
Line Interface Creation Kit". It's highly configurable but comes with
sensible defaults out of the box.
WWW: https://github.com/mitsuhiko/click

View File

@@ -1,8 +1,8 @@
# Created by: Kubilay Kocak <koobs@FreeBSD.org>
# $FreeBSD: head/security/py-cryptography/Makefile 476488 2018-08-06 03:25:20Z koobs $
# $FreeBSD: head/security/py-cryptography/Makefile 496506 2019-03-21 19:41:59Z sunpoet $
PORTNAME= cryptography
PORTVERSION= 2.3
PORTVERSION= 2.6.1
CATEGORIES= security python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -10,17 +10,15 @@ PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= koobs@FreeBSD.org
COMMENT= Cryptographic recipes and primitives for Python developers
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cffi>=1.7:python/py-cffi@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}idna>=2.1:python/py-idna@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}asn1crypto>=0.21.0:python/py-asn1crypto@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}six>=1.4.1:python/py-six@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}cffi>=1.7:python/py-cffi@${PY_FLAVOR}
# ${PY_ENUM34} ${PY_IPADDRESS}
# Python 2.7, 3.4-3.6
USES= compiler:env python
USE_PYTHON= autoplist distutils
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cffi>=1.8:python/py-cffi@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}asn1crypto>=0.21.0:python/py-asn1crypto@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}cffi>=1.8:python/py-cffi@${PY_FLAVOR} \
# ${PY_ENUM34} \
# ${PY_IPADDRESS} \
${PYTHON_PKGNAMEPREFIX}six>=1.4.1:python/py-six@${PY_FLAVOR}
# Python 2.7, 3.4-3.7
USES= compiler:env python ssl
USE_PYTHON= autoplist concurrent distutils
CFLAGS+= -I${OPENSSLINC}
LDFLAGS+= -L${OPENSSLLIB}
@@ -29,11 +27,14 @@ LDFLAGS+= -L${OPENSSLLIB}
.if ${CHOSEN_COMPILER_TYPE} == gcc && ${COMPILER_VERSION} <= 42
post-patch:
${REINPLACE_CMD} -e 's|"-Wno-error=sign-conversion"||' \
@${REINPLACE_CMD} -e 's|"-Wno-error=sign-conversion"||' \
${WRKSRC}/src/_cffi_src/build_openssl.py
.endif
post-install:
${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/cryptography/hazmat/bindings/*.so
do-test:
@cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test
.include <bsd.port.post.mk>

View File

@@ -1,3 +1,3 @@
TIMESTAMP = 1532336711
SHA256 (cryptography-2.3.tar.gz) = c132bab45d4bd0fff1d3fe294d92b0a6eb8404e93337b3127bdec9f21de117e6
SIZE (cryptography-2.3.tar.gz) = 449464
TIMESTAMP = 1551354433
SHA256 (cryptography-2.6.1.tar.gz) = 26c821cbeb683facb966045e2064303029d572a87ee69ca5a1bf54bf55f93ca6
SIZE (cryptography-2.6.1.tar.gz) = 491580

26
python/py-django/Makefile Normal file
View File

@@ -0,0 +1,26 @@
# Created by: Jose Alonso Cardenas Marquez <acardenas@bsd.org.pe>
# $FreeBSD: head/www/py-django22/Makefile 534966 2020-05-11 23:51:58Z dbaio $
PORTNAME= django
PORTVERSION= 2.2.12
CATEGORIES= www python
MASTER_SITES= CHEESESHOP https://www.djangoproject.com/m/releases/${PORTVERSION}/
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
DISTNAME= Django-${PORTVERSION}
DIST_SUBDIR= python
MAINTAINER= python@FreeBSD.org
COMMENT= High-level Python Web Framework
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytz>0:python/py-pytz@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}sqlparse>=0:python/py-sqlparse@${PY_FLAVOR}
NO_ARCH= yes
USES= cpe python:3.5+ shebangfix
USE_PYTHON= autoplist distutils
SHEBANG_FILES= django/bin/django-admin.py django/conf/project_template/manage.py-tpl
#PGSQL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}psycopg2>0:databases/py-psycopg2@${PY_FLAVOR}
#MYSQL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}mysqlclient>=1.3.13:databases/py-mysqlclient@${PY_FLAVOR}
.include <bsd.port.mk>

View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1585742383
SHA256 (python/Django-2.2.12.tar.gz) = 69897097095f336d5aeef45b4103dceae51c00afa6d3ae198a2a18e519791b7a
SIZE (python/Django-2.2.12.tar.gz) = 8877061

View File

@@ -0,0 +1,10 @@
Django is a high-level Python Web framework that encourages rapid development
and clean, pragmatic design.
Developed and used over the past two years by a fast-moving online-news
operation, Django was designed from scratch to handle two challenges: the
intensive deadlines of a newsroom and the stringent requirements of experienced
Web developers. It has convenient niceties for developing content-management
systems, but it's an excellent tool for building any Web site.
WWW: https://www.djangoproject.com/

23
python/py-flask/Makefile Normal file
View File

@@ -0,0 +1,23 @@
# Created by: Olivier Duchateau <duchateau.olivier@gmail.com>
# $FreeBSD: head/www/py-flask/Makefile 532893 2020-04-24 20:39:14Z rm $
PORTNAME= Flask
DISTVERSION= 1.1.2
CATEGORIES= www python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= rm@FreeBSD.org
COMMENT= Micro web framework
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}werkzeug>=0.15:python/py-werkzeug@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}Jinja2>=2.10.1:python/py-Jinja2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}itsdangerous>=0.24:python/py-itsdangerous@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}click>=5.1:python/py-click@${PY_FLAVOR}
USES= python
USE_PYTHON= distutils concurrent autoplist
NO_ARCH= yes
.include <bsd.port.mk>

3
python/py-flask/distinfo Normal file
View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1587760273
SHA256 (Flask-1.1.2.tar.gz) = 4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060
SIZE (Flask-1.1.2.tar.gz) = 637516

View File

@@ -0,0 +1,3 @@
Flask is a microframework for Python based on Werkzeug and Jinja2.
WWW: http://flask.pocoo.org/

View File

@@ -0,0 +1,20 @@
# Created by: Olivier Duchateau
# $FreeBSD: head/security/py-itsdangerous/Makefile 498757 2019-04-12 20:59:02Z sunpoet $
PORTNAME= itsdangerous
PORTVERSION= 0.24
CATEGORIES= security python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= rm@FreeBSD.org
COMMENT= Various helpers to pass data in untrusted environments
USES= python
USE_PYTHON= distutils autoplist
NO_ARCH= yes
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}simplejson>=3.0:python/py-simplejson@${PY_FLAVOR}
.include <bsd.port.mk>

View File

@@ -0,0 +1,2 @@
SHA256 (itsdangerous-0.24.tar.gz) = cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519
SIZE (itsdangerous-0.24.tar.gz) = 46541

View File

@@ -0,0 +1,3 @@
Various helpers to deal with untrusted sources.
WWW: https://github.com/mitsuhiko/itsdangerous/

View File

@@ -0,0 +1,20 @@
# Created by: Wen Heping <wenheping@gmail.com>
# $FreeBSD: head/devel/py-lockfile/Makefile 472884 2018-06-20 17:05:41Z mat $
PORTNAME= lockfile
PORTVERSION= 0.12.2
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= wg@FreeBSD.org
COMMENT= Platform-independent file locking module
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pbr>=1.8:python/py-pbr@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist distutils
NO_ARCH= yes
.include <bsd.port.mk>

View File

@@ -0,0 +1,2 @@
SHA256 (lockfile-0.12.2.tar.gz) = 6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799
SIZE (lockfile-0.12.2.tar.gz) = 20874

View File

@@ -0,0 +1,8 @@
The lockfile module exports a FileLock class which provides a simple
API for locking files. Unlike the Windows msvcrt.locking function, the
Unix fcntl.flock, fcntl.lockf and the deprecated posixfile module, the
API is identical across both Unix (including Linux and Mac) and Windows
platforms. The lock mechanism relies on the atomic nature of the link
(on Unix) and mkdir (on Windows) system calls.
WWW: https://github.com/smontanaro/pylockfile

View File

@@ -1,8 +1,8 @@
# Created by: ijliao
# $FreeBSD: head/security/py-openssl/Makefile 472884 2018-06-20 17:05:41Z mat $
# $FreeBSD: head/security/py-openssl/Makefile 508146 2019-08-05 09:11:10Z kai $
PORTNAME= openssl
PORTVERSION= 17.5.0
PORTVERSION= 19.0.0
CATEGORIES= security python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -11,10 +11,12 @@ DISTNAME= pyOpenSSL-${PORTVERSION}
MAINTAINER= sbz@FreeBSD.org
COMMENT= Python interface to the OpenSSL library
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography>=2.1.4:python/py-cryptography@${PY_FLAVOR} \
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cryptography>=2.2.1:python/py-cryptography@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}six>=1.5.2:python/py-six@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist distutils pythonprefix
USES= cpe python
USE_PYTHON= autoplist concurrent distutils pythonprefix
NO_ARCH= yes
.include <bsd.port.mk>

View File

@@ -1,3 +1,3 @@
TIMESTAMP = 1516479217
SHA256 (pyOpenSSL-17.5.0.tar.gz) = 2c10cfba46a52c0b0950118981d61e72c1e5b1aac451ca1bc77de1a679456773
SIZE (pyOpenSSL-17.5.0.tar.gz) = 170870
TIMESTAMP = 1540136888
SHA256 (pyOpenSSL-19.0.0.tar.gz) = aeca66338f6de19d1aa46ed634c3b9ae519a64b458f8468aec688e7e3c20f200
SIZE (pyOpenSSL-19.0.0.tar.gz) = 168551

View File

@@ -1,5 +1,5 @@
# Created by: Kubilay Kocak <koobs@FreeBSD.org>
# $FreeBSD: head/devel/py-pbr/Makefile 472884 2018-06-20 17:05:41Z mat $
# $FreeBSD: head/devel/py-pbr/Makefile 498530 2019-04-10 06:18:31Z antoine $
PORTNAME= pbr
PORTVERSION= 3.1.1
@@ -15,7 +15,7 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pip>0:python/py-pip@${PY_FLAVOR}
NO_ARCH= yes
USES= python shebangfix
USE_PYTHON= autoplist distutils
USE_PYTHON= autoplist concurrent distutils
SHEBANG_FILES= pbr/tests/testpackage/setup.py
.include <bsd.port.mk>

View File

@@ -0,0 +1,19 @@
# Created by: Alexander Botero-Lowry <alex@foxybanana.com>
# $FreeBSD: head/devel/py-simplejson/Makefile 522961 2020-01-13 17:49:17Z sunpoet $
PORTNAME= simplejson
PORTVERSION= 3.17.0
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= python@FreeBSD.org
COMMENT= Simple, fast, extensible JSON encoder/decoder
USES= python
USE_PYTHON= autoplist concurrent distutils
post-install:
${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/simplejson/_speedups.so
.include <bsd.port.mk>

View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1578923324
SHA256 (simplejson-3.17.0.tar.gz) = 2b4b2b738b3b99819a17feaf118265d0753d5536049ea570b3c43b51c4701e81
SIZE (simplejson-3.17.0.tar.gz) = 83119

View File

@@ -0,0 +1,37 @@
--- setup.py.orig 2016-10-21 07:55:07 UTC
+++ setup.py
@@ -64,25 +64,8 @@ class ve_build_ext(build_ext):
raise BuildFailed()
-class TestCommand(Command):
- user_options = []
-
- def initialize_options(self):
- pass
-
- def finalize_options(self):
- pass
-
- def run(self):
- import sys, subprocess
- raise SystemExit(
- subprocess.call([sys.executable,
- # Turn on deprecation warnings
- '-Wd',
- 'simplejson/tests/__init__.py']))
-
def run_setup(with_binary):
- cmdclass = dict(test=TestCommand)
+ cmdclass = dict()
if with_binary:
kw = dict(
ext_modules = [
@@ -105,6 +88,7 @@ def run_setup(with_binary):
license="MIT License",
packages=['simplejson', 'simplejson.tests'],
platforms=['any'],
+ test_suite='simplejson.tests',
**kw)
try:

View File

@@ -0,0 +1,15 @@
simplejson is a simple, fast, extensible JSON encoder/decoder for Python
simplejson is compatible with Python 2.4 and later with no external
dependencies. It covers the full JSON specification for both encoding and
decoding, with unicode support. By default, encoding is done in an encoding
neutral fashion (plain ASCII with \uXXXX escapes for unicode characters).
The encoder may be subclassed to provide serialization in any kind of situation,
without any special support by the objects to be serialized (somewhat like
pickle).
The decoder can handle incoming JSON strings of any specified encoding (UTF-8 by
default).
WWW: https://pypi.org/project/simplejson/

View File

@@ -0,0 +1,18 @@
# Created by: Roland van Laar <roland@micite.net>
# $FreeBSD: head/databases/py-sqlparse/Makefile 527575 2020-03-01 18:18:22Z sunpoet $
PORTNAME= sqlparse
PORTVERSION= 0.3.1
CATEGORIES= databases python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= sunpoet@FreeBSD.org
COMMENT= Non-validating SQL parser for Python
USES= python
USE_PYTHON= autoplist concurrent distutils
NO_ARCH= yes
.include <bsd.port.mk>

View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1583046292
SHA256 (sqlparse-0.3.1.tar.gz) = e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548
SIZE (sqlparse-0.3.1.tar.gz) = 67572

View File

@@ -0,0 +1,5 @@
sqlparse is a non-validating SQL parser module.
It provides support for parsing, splitting and formatting SQL statements.
WWW: https://pypi.org/project/sqlparse/
WWW: https://github.com/andialbrecht/sqlparse

View File

@@ -0,0 +1,24 @@
# Created by: Moggie <moggie@elasticmind.net>
# $FreeBSD: head/www/py-werkzeug/Makefile 530318 2020-04-02 12:04:28Z sunpoet $
PORTNAME= werkzeug
PORTVERSION= 1.0.1
CATEGORIES= www python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
DISTNAME= Werkzeug-${DISTVERSION}
MAINTAINER= sunpoet@FreeBSD.org
COMMENT= Python utilities collection for building WSGI applications
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}openssl>=16.0:python/py-openssl@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist concurrent distutils
NO_ARCH= yes
#WATCHDOG_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}watchdog>=0.8:devel/py-watchdog@${PY_FLAVOR}
.include <bsd.port.mk>

View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1585752057
SHA256 (Werkzeug-1.0.1.tar.gz) = 6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c
SIZE (Werkzeug-1.0.1.tar.gz) = 904455

View File

@@ -0,0 +1,12 @@
A Python utilities collection for building WSGI applications.
Werkzeug does not try to be a framework, and instead started as a simple
collection of various utilities useful for building WSGI applications.
It has since become one of the most advanced collections of its kind.
It includes a powerful debugger, fully featured request and response
objects, HTTP utilities to handle entity tags, cache control headers,
HTTP dates, cookie handling, file uploads, a powerful URL routing
system and a bunch of community contributed add-on modules.
WWW: https://palletsprojects.com/p/werkzeug/