asgi-tools 1.3.1__cp310-cp310-macosx_10_9_universal2.whl → 1.3.3__cp310-cp310-macosx_10_9_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
asgi_tools/middleware.py CHANGED
@@ -392,7 +392,7 @@ class StaticFilesMiddleware(BaseMiddleware):
392
392
  super().__init__(app)
393
393
  self.url_prefix = url_prefix
394
394
  folders = folders or []
395
- self.folders: list[Path] = [Path(folder) for folder in folders]
395
+ self.folders: list[Path] = [Path(folder).resolve() for folder in folders]
396
396
 
397
397
  async def __process__(self, scope: TASGIScope, receive: TASGIReceive, send: TASGISend) -> None:
398
398
  """Serve static files for self url prefix."""
@@ -403,7 +403,7 @@ class StaticFilesMiddleware(BaseMiddleware):
403
403
  filename = path[len(url_prefix) :].strip("/")
404
404
  for folder in self.folders:
405
405
  filepath = folder.joinpath(filename).resolve()
406
- if folder != filepath.parent:
406
+ if not filepath.is_file() or not filepath.is_relative_to(folder):
407
407
  continue
408
408
  with suppress(ASGIError):
409
409
  response = ResponseFile(filepath, headers_only=scope["method"] == "HEAD")
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: asgi-tools
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: ASGI Toolkit to build web applications
5
5
  Author-email: Kirill Klenov <horneds@gmail.com>
6
6
  License: MIT License
@@ -33,7 +33,7 @@ Requires-Dist: async-timeout; python_version < "3.11"
33
33
  Provides-Extra: tests
34
34
  Requires-Dist: aiofile; extra == "tests"
35
35
  Requires-Dist: pytest; extra == "tests"
36
- Requires-Dist: pytest-aio[curio,trio]>=1.3.1; extra == "tests"
36
+ Requires-Dist: pytest-aio[curio,trio]>=1.3.3; extra == "tests"
37
37
  Requires-Dist: pytest-benchmark; extra == "tests"
38
38
  Requires-Dist: PyYAML; extra == "tests"
39
39
  Requires-Dist: ruff; extra == "tests"
@@ -6,14 +6,14 @@ asgi_tools/constants.py,sha256=B7fJabLdpSE4COX0vAudyC32xV0dSpLgg0kob-FlCkE,128
6
6
  asgi_tools/request.py,sha256=s-CqT9JI-aPZz46YtKyvSDR7CfLxEhPrIuH9OG6npzk,10802
7
7
  asgi_tools/__init__.py,sha256=tBnlggb3FJPK8tDrnpC580OfbQ0QpuKFRdyfxmIeu8w,1428
8
8
  asgi_tools/response.py,sha256=-oePnVs5_lAjZWBgcVbdnhuStHMJoqnaqYS1Dqw3rFU,18494
9
- asgi_tools/multipart.cpython-310-darwin.so,sha256=4LxKUYR_xTxWqw_s66-xMS2sW8vz9y2J4hlfds8lcJc,309776
9
+ asgi_tools/multipart.cpython-310-darwin.so,sha256=S8X4DoPoEnG0sdwdZYXAq3zeWsm9ZlofQFcn46ysegA,309776
10
10
  asgi_tools/types.py,sha256=QWmrnhqc_jEUaXUcMm5iMpxpd6vrTcCnlq4O9moKANg,926
11
11
  asgi_tools/forms.py,sha256=ers1A52YEAO1TBYWJP73K6q6jArNU7QbV0LjTlpKdeM,5059
12
12
  asgi_tools/view.py,sha256=DO0Lr8euP98kMicDwmZLcbMpJ-Hzbhl3vYFYqAXpisw,1925
13
13
  asgi_tools/utils.py,sha256=6qNwZbUsKatg75Gi1ltRsAeJhBaf1gwJkuR0LemitRw,2813
14
14
  asgi_tools/logs.py,sha256=FaXJF5UYClU-JdqLL7VANxQ8O-eYAEemt0Zc_GaEC60,148
15
15
  asgi_tools/app.py,sha256=OEkoRszSRJ9bwWQ3SKWm3Pv-R0B8uKcP9ciYsDMyCGg,10790
16
- asgi_tools/forms.cpython-310-darwin.so,sha256=Lz1jRks2JkKLQ5A8dQscIKVZkZb3XWhiXg1LqObP1rE,351248
16
+ asgi_tools/forms.cpython-310-darwin.so,sha256=9hm2zhoXSgwytg1wkIlEx3yXolbztT0xv8Yij7GwW-c,351248
17
17
  asgi_tools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  asgi_tools/errors.py,sha256=TTAtJL5w2EVm9dVNK2pqNBRWM1lGJXg7HnJTibjgkes,550
19
19
  asgi_tools/multipart.pxd,sha256=bPnRLYuBw51OX7v-SZTOgOpb4PxM1MtR5dGWVoymX3A,725
@@ -21,9 +21,9 @@ asgi_tools/forms.pyx,sha256=ol1iEXDwS--9vNIoxFFvcTRvzUF14gQC3SDWW9K5-k8,5340
21
21
  asgi_tools/router.py,sha256=1MCF5QLfYPWZH10AuXMRN0rTMTyQWciDSh3owgsFhk4,440
22
22
  asgi_tools/_compat.py,sha256=3BTsysYhxa0itJzCWnzpnE-HuYGs7vXzZRgQRei0IW4,7483
23
23
  asgi_tools/tests.py,sha256=elUGlBE8qklBzKAov1x1i0eVHfkFLzj5Oifd6_JjHv4,12944
24
- asgi_tools/middleware.py,sha256=_hTALpm3Gv_3ssCyZfInzuFC8onNz2ZFVrDCdgOcnF8,15148
25
- asgi_tools-1.3.1.dist-info/RECORD,,
26
- asgi_tools-1.3.1.dist-info/WHEEL,sha256=nc924w4TUhRiaM6-2LHWgVO2LgkOLXLUotVVlNPrJ7M,141
27
- asgi_tools-1.3.1.dist-info/top_level.txt,sha256=-6i6ebKuJ0cSaXJ3KWPmJLKUbmBE2UsuA2b7BcZMJSk,11
28
- asgi_tools-1.3.1.dist-info/METADATA,sha256=TRU5h3XpsqQiez8jDNuws_Vtwt_HGl9q7fifjNvXHdg,7139
29
- asgi_tools-1.3.1.dist-info/licenses/LICENSE,sha256=ytogAgYcPT6gWj8aRc-cZwhSq9Y3wOzG-4KteKCyQOw,1070
24
+ asgi_tools/middleware.py,sha256=51dneaxFDl1tjrkhITZgqf-F6uuLAfsIntbGhk04tuc,15194
25
+ asgi_tools-1.3.3.dist-info/RECORD,,
26
+ asgi_tools-1.3.3.dist-info/WHEEL,sha256=nc924w4TUhRiaM6-2LHWgVO2LgkOLXLUotVVlNPrJ7M,141
27
+ asgi_tools-1.3.3.dist-info/top_level.txt,sha256=-6i6ebKuJ0cSaXJ3KWPmJLKUbmBE2UsuA2b7BcZMJSk,11
28
+ asgi_tools-1.3.3.dist-info/METADATA,sha256=G1TcMWGOIY4uOYtSxmh-d51t9ueXzess14ekaf-fmUw,7139
29
+ asgi_tools-1.3.3.dist-info/licenses/LICENSE,sha256=ytogAgYcPT6gWj8aRc-cZwhSq9Y3wOzG-4KteKCyQOw,1070