asgi-cli 0.4.3__tar.gz → 0.4.4__tar.gz
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.
- {asgi-cli-0.4.3/src/asgi_cli.egg-info → asgi_cli-0.4.4}/PKG-INFO +10 -12
- asgi_cli-0.4.4/pyproject.toml +55 -0
- asgi_cli-0.4.4/src/asgi_cli/__init__.py +1 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/main.py +1 -1
- asgi_cli-0.4.4/src/asgi_cli/tests/__init__.py +0 -0
- asgi_cli-0.4.4/src/asgi_cli/tests/test_formatter.py +28 -0
- asgi_cli-0.4.4/src/asgi_cli/tests/test_loader.py +8 -0
- asgi_cli-0.4.4/src/asgi_cli/tests/test_main.py +35 -0
- asgi_cli-0.4.4/src/asgi_cli/tests/test_parser.py +24 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4/src/asgi_cli.egg-info}/PKG-INFO +10 -12
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli.egg-info/SOURCES.txt +7 -2
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli.egg-info/entry_points.txt +0 -1
- asgi-cli-0.4.3/setup.py +0 -54
- asgi-cli-0.4.3/src/asgi_cli/__init__.py +0 -1
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/LICENSE +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/MANIFEST.in +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/README.md +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/setup.cfg +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/builder.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/executor.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/formatter.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/loader.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/parser.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/py.typed +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/timing.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli/typing.py +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli.egg-info/dependency_links.txt +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli.egg-info/top_level.txt +0 -0
- {asgi-cli-0.4.3 → asgi_cli-0.4.4}/src/asgi_cli.egg-info/zip-safe +0 -0
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: asgi-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: Call ASGI Python application from command line, just like CURL
|
|
5
|
-
|
|
6
|
-
Author: Andriy Kornatskyy
|
|
7
|
-
Author-email: andriy.kornatskyy@live.com
|
|
5
|
+
Author-email: Andriy Kornatskyy <andriy.kornatskyy@live.com>
|
|
8
6
|
License: MIT
|
|
9
|
-
|
|
7
|
+
Project-URL: Homepage, https://github.com/akornatskyy/asgi-cli
|
|
10
8
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
9
|
Classifier: Environment :: Console
|
|
12
10
|
Classifier: Environment :: Web Environment
|
|
@@ -15,19 +13,21 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
15
13
|
Classifier: Natural Language :: English
|
|
16
14
|
Classifier: Operating System :: OS Independent
|
|
17
15
|
Classifier: Programming Language :: Python
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
21
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
23
22
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
24
23
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
25
24
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
26
25
|
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
27
26
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
28
|
-
Requires-Python: >=3.
|
|
27
|
+
Requires-Python: >=3.10
|
|
29
28
|
Description-Content-Type: text/markdown
|
|
30
29
|
License-File: LICENSE
|
|
30
|
+
Dynamic: license-file
|
|
31
31
|
|
|
32
32
|
# ASGI CLI
|
|
33
33
|
|
|
@@ -147,5 +147,3 @@ Hello, world!
|
|
|
147
147
|
#2 => 438.12K, 2.28μs
|
|
148
148
|
#3 => 446.90K, 2.24μs
|
|
149
149
|
```
|
|
150
|
-
|
|
151
|
-
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "asgi-cli"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Call ASGI Python application from command line, just like CURL"
|
|
9
|
+
readme = {file = "README.md", content-type = "text/markdown"}
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = {text = "MIT"}
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Andriy Kornatskyy", email = "andriy.kornatskyy@live.com"}
|
|
14
|
+
]
|
|
15
|
+
keywords = []
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 5 - Production/Stable",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Environment :: Web Environment",
|
|
20
|
+
"Intended Audience :: Developers",
|
|
21
|
+
"License :: OSI Approved :: MIT License",
|
|
22
|
+
"Natural Language :: English",
|
|
23
|
+
"Operating System :: OS Independent",
|
|
24
|
+
"Programming Language :: Python",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
"Programming Language :: Python :: 3.13",
|
|
29
|
+
"Programming Language :: Python :: 3.14",
|
|
30
|
+
"Programming Language :: Python :: Implementation :: CPython",
|
|
31
|
+
"Programming Language :: Python :: Implementation :: PyPy",
|
|
32
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
33
|
+
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
34
|
+
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
35
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
36
|
+
]
|
|
37
|
+
dependencies = []
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Homepage = "https://github.com/akornatskyy/asgi-cli"
|
|
41
|
+
|
|
42
|
+
[project.scripts]
|
|
43
|
+
asgi-cli = "asgi_cli.main:main"
|
|
44
|
+
|
|
45
|
+
[tool.setuptools]
|
|
46
|
+
zip-safe = true
|
|
47
|
+
|
|
48
|
+
[tool.setuptools.dynamic]
|
|
49
|
+
version = {attr = "asgi_cli.__version__"}
|
|
50
|
+
|
|
51
|
+
[tool.setuptools.packages.find]
|
|
52
|
+
where = ["src"]
|
|
53
|
+
|
|
54
|
+
[tool.setuptools.package-data]
|
|
55
|
+
asgi_cli = ["py.typed"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.4"
|
|
@@ -42,7 +42,7 @@ def main(args: typing.Optional[typing.List[str]] = None) -> int:
|
|
|
42
42
|
if args is None: # pragma: nocover
|
|
43
43
|
args = sys.argv[1:]
|
|
44
44
|
sys.path.extend([os.path.abspath(".")])
|
|
45
|
-
return asyncio.
|
|
45
|
+
return asyncio.run(go(args))
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
if __name__ == "__main__": # pragma: nocover
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from asgi_cli.formatter import format_number
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FormatterTestCase(unittest.TestCase):
|
|
7
|
+
def test_format_number(self) -> None:
|
|
8
|
+
for number, expected in [
|
|
9
|
+
(12345678901, "12,345.68M"),
|
|
10
|
+
(1234567890, "1,234.57M"),
|
|
11
|
+
(123456789.1, "123.46M"),
|
|
12
|
+
(12345678.9, "12.35M"),
|
|
13
|
+
(1234567.89, "1.23M"),
|
|
14
|
+
(123456.789, "123.46K"),
|
|
15
|
+
(12345.6789, "12.35K"),
|
|
16
|
+
(1234.56789, "1.23K"),
|
|
17
|
+
(123.456789, "123.46"),
|
|
18
|
+
(12.3456789, "12.35"),
|
|
19
|
+
(1.23456789, "1.23"),
|
|
20
|
+
(0.12345678, "123.46m"),
|
|
21
|
+
(0.01234567, "12.35m"),
|
|
22
|
+
(0.00123456, "1.23m"),
|
|
23
|
+
(0.00012345, "123.45u"),
|
|
24
|
+
(0.00001234, "12.34u"),
|
|
25
|
+
(0.00000123, "1.23u"),
|
|
26
|
+
(-1234.56789, "-1,234.57"),
|
|
27
|
+
]:
|
|
28
|
+
self.assertEqual(format_number(number), expected)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from asgi_cli.main import main
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MainTestCase(unittest.TestCase):
|
|
7
|
+
def test_main(self) -> None:
|
|
8
|
+
main(["unknown:app"])
|
|
9
|
+
main(["example:app"])
|
|
10
|
+
main(["-v", "example:app"])
|
|
11
|
+
main(["-d", "", "example:app"])
|
|
12
|
+
main(["-d", "{}", "example:app"])
|
|
13
|
+
main(["example:app", "/receiver"])
|
|
14
|
+
main(["-F", "x=123", "example:app", "/receiver"])
|
|
15
|
+
main(["-F", "fn=@README.md", "example:app", "/receiver"])
|
|
16
|
+
main(["-X", "POST", "-v", "example:app"])
|
|
17
|
+
main(["-X", "POST", "-d", "msg=hello", "example:app"])
|
|
18
|
+
main(["-I", "example:app"])
|
|
19
|
+
main(["-b", "-n", "1K", "example:app"])
|
|
20
|
+
main(["-p", "-n", "1K", "example:app"])
|
|
21
|
+
main(["-H", "Accept: application/json", "example:app"])
|
|
22
|
+
main(["-v", "example:app", "http://example.com/uk/welcome"])
|
|
23
|
+
main(
|
|
24
|
+
[
|
|
25
|
+
"-v",
|
|
26
|
+
"-X",
|
|
27
|
+
"PATCH",
|
|
28
|
+
"-H",
|
|
29
|
+
"Content-Type: application/json",
|
|
30
|
+
"-d",
|
|
31
|
+
"[]",
|
|
32
|
+
"example:app",
|
|
33
|
+
"welcome",
|
|
34
|
+
]
|
|
35
|
+
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from asgi_cli.parser import parse_number
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ParserTestCase(unittest.TestCase):
|
|
7
|
+
def test_parse_number(self) -> None:
|
|
8
|
+
for s, expected in [
|
|
9
|
+
("12345", 12345),
|
|
10
|
+
("12345678901", 12345678901),
|
|
11
|
+
("1K", 1e3),
|
|
12
|
+
("25K", 25e3),
|
|
13
|
+
("1M", 1e6),
|
|
14
|
+
("10M", 1e7),
|
|
15
|
+
]:
|
|
16
|
+
self.assertEqual(parse_number(s), expected)
|
|
17
|
+
|
|
18
|
+
for s in [
|
|
19
|
+
"1KK",
|
|
20
|
+
"1G",
|
|
21
|
+
"K",
|
|
22
|
+
"M",
|
|
23
|
+
]:
|
|
24
|
+
self.assertRaises(ValueError, lambda s: parse_number(s), s)
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: asgi-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: Call ASGI Python application from command line, just like CURL
|
|
5
|
-
|
|
6
|
-
Author: Andriy Kornatskyy
|
|
7
|
-
Author-email: andriy.kornatskyy@live.com
|
|
5
|
+
Author-email: Andriy Kornatskyy <andriy.kornatskyy@live.com>
|
|
8
6
|
License: MIT
|
|
9
|
-
|
|
7
|
+
Project-URL: Homepage, https://github.com/akornatskyy/asgi-cli
|
|
10
8
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
9
|
Classifier: Environment :: Console
|
|
12
10
|
Classifier: Environment :: Web Environment
|
|
@@ -15,19 +13,21 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
15
13
|
Classifier: Natural Language :: English
|
|
16
14
|
Classifier: Operating System :: OS Independent
|
|
17
15
|
Classifier: Programming Language :: Python
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
21
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
23
22
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
24
23
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
25
24
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
26
25
|
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
27
26
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
28
|
-
Requires-Python: >=3.
|
|
27
|
+
Requires-Python: >=3.10
|
|
29
28
|
Description-Content-Type: text/markdown
|
|
30
29
|
License-File: LICENSE
|
|
30
|
+
Dynamic: license-file
|
|
31
31
|
|
|
32
32
|
# ASGI CLI
|
|
33
33
|
|
|
@@ -147,5 +147,3 @@ Hello, world!
|
|
|
147
147
|
#2 => 438.12K, 2.28μs
|
|
148
148
|
#3 => 446.90K, 2.24μs
|
|
149
149
|
```
|
|
150
|
-
|
|
151
|
-
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
LICENSE
|
|
2
2
|
MANIFEST.in
|
|
3
3
|
README.md
|
|
4
|
-
|
|
4
|
+
pyproject.toml
|
|
5
5
|
src/asgi_cli/__init__.py
|
|
6
6
|
src/asgi_cli/builder.py
|
|
7
7
|
src/asgi_cli/executor.py
|
|
@@ -17,4 +17,9 @@ src/asgi_cli.egg-info/SOURCES.txt
|
|
|
17
17
|
src/asgi_cli.egg-info/dependency_links.txt
|
|
18
18
|
src/asgi_cli.egg-info/entry_points.txt
|
|
19
19
|
src/asgi_cli.egg-info/top_level.txt
|
|
20
|
-
src/asgi_cli.egg-info/zip-safe
|
|
20
|
+
src/asgi_cli.egg-info/zip-safe
|
|
21
|
+
src/asgi_cli/tests/__init__.py
|
|
22
|
+
src/asgi_cli/tests/test_formatter.py
|
|
23
|
+
src/asgi_cli/tests/test_loader.py
|
|
24
|
+
src/asgi_cli/tests/test_main.py
|
|
25
|
+
src/asgi_cli/tests/test_parser.py
|
asgi-cli-0.4.3/setup.py
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import re
|
|
2
|
-
|
|
3
|
-
from setuptools import setup
|
|
4
|
-
|
|
5
|
-
README = open("README.md").read()
|
|
6
|
-
VERSION = (
|
|
7
|
-
re.search(
|
|
8
|
-
r"__version__ = \"(.+)\"", open("src/asgi_cli/__init__.py").read()
|
|
9
|
-
)
|
|
10
|
-
.group(1)
|
|
11
|
-
.strip()
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
setup(
|
|
15
|
-
name="asgi-cli",
|
|
16
|
-
version=VERSION,
|
|
17
|
-
python_requires=">=3.7",
|
|
18
|
-
description="Call ASGI Python application from command line,"
|
|
19
|
-
" just like CURL",
|
|
20
|
-
long_description=README,
|
|
21
|
-
long_description_content_type="text/markdown",
|
|
22
|
-
url="https://github.com/akornatskyy/asgi-cli",
|
|
23
|
-
author="Andriy Kornatskyy",
|
|
24
|
-
author_email="andriy.kornatskyy@live.com",
|
|
25
|
-
license="MIT",
|
|
26
|
-
classifiers=[
|
|
27
|
-
"Development Status :: 5 - Production/Stable",
|
|
28
|
-
"Environment :: Console",
|
|
29
|
-
"Environment :: Web Environment",
|
|
30
|
-
"Intended Audience :: Developers",
|
|
31
|
-
"License :: OSI Approved :: MIT License",
|
|
32
|
-
"Natural Language :: English",
|
|
33
|
-
"Operating System :: OS Independent",
|
|
34
|
-
"Programming Language :: Python",
|
|
35
|
-
"Programming Language :: Python :: 3.7",
|
|
36
|
-
"Programming Language :: Python :: 3.8",
|
|
37
|
-
"Programming Language :: Python :: 3.9",
|
|
38
|
-
"Programming Language :: Python :: 3.10",
|
|
39
|
-
"Programming Language :: Python :: Implementation :: CPython",
|
|
40
|
-
"Programming Language :: Python :: Implementation :: PyPy",
|
|
41
|
-
"Topic :: Internet :: WWW/HTTP",
|
|
42
|
-
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
43
|
-
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
44
|
-
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
45
|
-
],
|
|
46
|
-
keywords="",
|
|
47
|
-
packages=["asgi_cli"],
|
|
48
|
-
package_data={"asgi_cli": ["py.typed"]},
|
|
49
|
-
package_dir={"": "src"},
|
|
50
|
-
zip_safe=True,
|
|
51
|
-
install_requires=[],
|
|
52
|
-
entry_points={"console_scripts": ["asgi-cli=asgi_cli.main:main"]},
|
|
53
|
-
platforms="any",
|
|
54
|
-
)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.4.3"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|