summaryrefslogtreecommitdiffstats
path: root/contrib/python/Flask/py2
diff options
context:
space:
mode:
authormaxim-yurchuk <[email protected]>2024-10-09 12:29:46 +0300
committermaxim-yurchuk <[email protected]>2024-10-09 13:14:22 +0300
commit9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch)
treea8fb3181d5947c0d78cf402aa56e686130179049 /contrib/python/Flask/py2
parenta44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff)
publishFullContrib: true for ydb
<HIDDEN_URL> commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/python/Flask/py2')
-rw-r--r--contrib/python/Flask/py2/patches/01-arcadia.patch67
-rw-r--r--contrib/python/Flask/py2/patches/02-fix-metadata.patch17
2 files changed, 84 insertions, 0 deletions
diff --git a/contrib/python/Flask/py2/patches/01-arcadia.patch b/contrib/python/Flask/py2/patches/01-arcadia.patch
new file mode 100644
index 00000000000..a48070b78b8
--- /dev/null
+++ b/contrib/python/Flask/py2/patches/01-arcadia.patch
@@ -0,0 +1,67 @@
+--- contrib/python/Flask/py2/flask/helpers.py (index)
++++ contrib/python/Flask/py2/flask/helpers.py (working tree)
+@@ -21,7 +21,7 @@ from threading import RLock
+ from time import time
+ from zlib import adler32
+
+-from jinja2 import FileSystemLoader
++from jinja2 import ChoiceLoader, FileSystemLoader, ResourceLoader
+ from werkzeug.datastructures import Headers
+ from werkzeug.exceptions import BadRequest
+ from werkzeug.exceptions import NotFound
+@@ -974,6 +974,13 @@ class _PackageBoundObject(object):
+
+ def __init__(self, import_name, template_folder=None, root_path=None):
+ self.import_name = import_name
++
++ package_name = import_name
++ self.module_loader = pkgutil.find_loader(import_name)
++ if self.module_loader and not self.module_loader.is_package(import_name):
++ package_name = package_name.rsplit('.', 1)[0]
++ self._builtin_resource_prefix = package_name.replace('.', '/')
++
+ self.template_folder = template_folder
+
+ if root_path is None:
+@@ -1041,7 +1048,10 @@ class _PackageBoundObject(object):
+ .. versionadded:: 0.5
+ """
+ if self.template_folder is not None:
+- return FileSystemLoader(os.path.join(self.root_path, self.template_folder))
++ return ChoiceLoader([
++ FileSystemLoader(os.path.join(self.root_path, self.template_folder)),
++ ResourceLoader(os.path.join(self._builtin_resource_prefix, self.template_folder), self.module_loader),
++ ])
+
+ def get_send_file_max_age(self, filename):
+ """Provides default cache_timeout for the :func:`send_file` functions.
+@@ -1080,9 +1090,26 @@ class _PackageBoundObject(object):
+ # Ensure get_send_file_max_age is called in all cases.
+ # Here, we ensure get_send_file_max_age is called for Blueprints.
+ cache_timeout = self.get_send_file_max_age(filename)
+- return send_from_directory(
+- self.static_folder, filename, cache_timeout=cache_timeout
+- )
++ try:
++ return send_from_directory(
++ self.static_folder, filename, cache_timeout=cache_timeout
++ )
++ except NotFound:
++ if self.module_loader is None:
++ raise
++ from io import BytesIO
++ path = os.path.join(self._builtin_resource_prefix, self._static_folder, filename)
++ try:
++ data = self.module_loader.get_data(path)
++ except IOError:
++ raise NotFound
++ mimetype = mimetypes.guess_type(filename)[0]
++ fobj = BytesIO(data)
++ # Note: in case of uWSGI, might also need to set
++ # `wsgi-disable-file-wrapper = true`
++ # because, otherwise, uwsgi expects a `fileno` on it.
++ return send_file(fobj, mimetype=mimetype,
++ cache_timeout=cache_timeout, conditional=True)
+
+ def open_resource(self, resource, mode="rb"):
+ """Opens a resource from the application's resource folder. To see
diff --git a/contrib/python/Flask/py2/patches/02-fix-metadata.patch b/contrib/python/Flask/py2/patches/02-fix-metadata.patch
new file mode 100644
index 00000000000..0c7d27d9da7
--- /dev/null
+++ b/contrib/python/Flask/py2/patches/02-fix-metadata.patch
@@ -0,0 +1,17 @@
+--- contrib/python/Flask/py2/.dist-info/METADATA (index)
++++ contrib/python/Flask/py2/.dist-info/METADATA (working tree)
+@@ -33,10 +33,10 @@ Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
+ Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
+-Requires-Dist: Werkzeug (<2.0,>=0.15)
+-Requires-Dist: Jinja2 (<3.0,>=2.10.1)
+-Requires-Dist: itsdangerous (<2.0,>=0.24)
+-Requires-Dist: click (<8.0,>=5.1)
++Requires-Dist: Werkzeug (<3.0,>=0.15)
++Requires-Dist: Jinja2 (<4.0,>=2.10.1)
++Requires-Dist: itsdangerous (<3.0,>=0.24)
++Requires-Dist: click (<9.0,>=5.1)
+ Provides-Extra: dev
+ Requires-Dist: pytest ; extra == 'dev'
+ Requires-Dist: coverage ; extra == 'dev'