py-app-runner 0.7.0__tar.gz → 0.7.2__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.
- py_app_runner-0.7.2/.version +1 -0
- {py_app_runner-0.7.0/src/py_app_runner.egg-info → py_app_runner-0.7.2}/PKG-INFO +2 -2
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/pyproject.toml +1 -1
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/pybridge.py +28 -7
- {py_app_runner-0.7.0 → py_app_runner-0.7.2/src/py_app_runner.egg-info}/PKG-INFO +2 -2
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner.egg-info/requires.txt +1 -1
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_pybridge.py +25 -1
- py_app_runner-0.7.0/.version +0 -1
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/LICENSE +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/MANIFEST.in +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/README.md +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/setup.cfg +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/abilities.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/files/install.pgsql.sql +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/keys.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/model.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/audit.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/diff.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/errors.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/event.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/files/install.pgsql.sql +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/audit/store.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/api.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/encoders/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/encoders/base.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/encoders/json_encoder.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/encoders/msgpack_encoder.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/web_app.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/websocket.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/colors.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/config.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/cron/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/cron/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/cron/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/cron/commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/cron/execute.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/cron/schedule.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/envelope.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/errors.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/fields.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/crypto/passwords.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/db_pools.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/file_lock.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/http_exception.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/logger_handlers.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/discovery.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/states.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/tracker.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/migrations/tracker_sqlite.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/py.typed +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/_service_args.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/driver_pg.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/driver_redis.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/files/install.pgsql.sql +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/handler.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/interface.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/job.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/queue/worker.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/registry.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/auth_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/client_ip.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/decorators.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/handlers.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/pagination.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/return_model.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/runner.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/throttle/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/throttle/throttle.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/tick_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/timer.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/utils.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/wbcm/__init__.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/wbcm/device_connections.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/wbcm/factory.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/wbcm/wb_connection_manager.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/wbcm/ws_interface.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner.egg-info/SOURCES.txt +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner.egg-info/dependency_links.txt +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner.egg-info/top_level.txt +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_api_handler.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_api_key_bridge.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_api_key_cli.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_api_key_helpers.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_api_keys.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_audit_diff.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_audit_store.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_bridge_backends.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_config.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_cron_execute.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_cron_schedule.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_cron_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_crypto_commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_crypto_envelope.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_crypto_fields.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_crypto_passwords.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_decorators.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_decorators_sqlite.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_error_envelope.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_example.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_logger_handlers.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_commands.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_discovery.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_pg_harness.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_service.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_sqlite.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_states.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_migrations_tracker.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_optional_extras.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_queue_contract.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_queue_driver.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_queue_driver_redis.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_queue_worker.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_throttle.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_utils.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_wbcm.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_websocket_auth.py +0 -0
- {py_app_runner-0.7.0 → py_app_runner-0.7.2}/tests/test_websocket_messages.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.7.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: py_app_runner
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
4
4
|
Summary: Async service framework: Tornado HTTP/WS bridge, service loader, Redis WS connection manager
|
|
5
5
|
Author-email: Gints Murans <gm@gm.lv>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -31,7 +31,7 @@ Requires-Dist: uvloop>=0.21.0
|
|
|
31
31
|
Requires-Dist: msgspec>=0.19.0
|
|
32
32
|
Requires-Dist: msgpack>=1.2.4
|
|
33
33
|
Requires-Dist: tornado>=6.5.9
|
|
34
|
-
Requires-Dist: database_wrapper[pgsql,redis,sqlite]==0.
|
|
34
|
+
Requires-Dist: database_wrapper[pgsql,redis,sqlite]==0.4.0
|
|
35
35
|
Requires-Dist: psycopg>=3.2.0
|
|
36
36
|
Requires-Dist: psycopg[pool]>=3.2.0
|
|
37
37
|
Requires-Dist: redis>=4.5.4
|
|
@@ -56,7 +56,7 @@ dependencies = [
|
|
|
56
56
|
"tornado >= 6.5.9",
|
|
57
57
|
# The extras pull the base package in, so one pin rather than three that must be kept
|
|
58
58
|
# in lockstep. 0.3.146 is the first MIT release - 0.2.38 and earlier are GPL-3.0.
|
|
59
|
-
"database_wrapper[pgsql,redis,sqlite] == 0.
|
|
59
|
+
"database_wrapper[pgsql,redis,sqlite] == 0.4.0",
|
|
60
60
|
# Used directly by py_app_runner.migrations, not only through database_wrapper, so the
|
|
61
61
|
# floor is declared here rather than inherited. Matches database_wrapper_pgsql 0.3.146's
|
|
62
62
|
# own psycopg[binary]/psycopg[pool] >= 3.2.0.
|
|
@@ -1,8 +1,24 @@
|
|
|
1
|
+
import sys
|
|
1
2
|
from importlib import import_module
|
|
3
|
+
from importlib.util import find_spec
|
|
2
4
|
from typing import Any, Literal
|
|
3
5
|
|
|
4
6
|
from py_app_runner.db_pools import DbPools
|
|
5
7
|
|
|
8
|
+
_ENTRY_MODULES = ("_service", "_service_args", "_service_pybridge")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _module_exists(module_name: str) -> bool:
|
|
12
|
+
"""Whether `module_name` can be imported, without executing it."""
|
|
13
|
+
|
|
14
|
+
if module_name in sys.modules:
|
|
15
|
+
return True
|
|
16
|
+
|
|
17
|
+
try:
|
|
18
|
+
return find_spec(module_name) is not None
|
|
19
|
+
except ModuleNotFoundError:
|
|
20
|
+
return False
|
|
21
|
+
|
|
6
22
|
|
|
7
23
|
class PyBridge:
|
|
8
24
|
services_placeholder: dict[str, Any]
|
|
@@ -27,15 +43,20 @@ class PyBridge:
|
|
|
27
43
|
raise
|
|
28
44
|
|
|
29
45
|
def _resolve(self, service_name: str, module: str) -> Any | Literal[False]:
|
|
30
|
-
"""
|
|
31
|
-
|
|
46
|
+
"""A project package with any entry module owns the service name outright, so a
|
|
47
|
+
built-in of the same name is never mixed in or imported. A project package without
|
|
48
|
+
one (`services/bridge` holding only routes) extends the built-in instead."""
|
|
32
49
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
50
|
+
project = f"services.{service_name}"
|
|
51
|
+
found = self._import_or_none(f"{project}.{module}")
|
|
52
|
+
if found is not None:
|
|
53
|
+
return found
|
|
37
54
|
|
|
38
|
-
|
|
55
|
+
if any(_module_exists(f"{project}.{entry}") for entry in _ENTRY_MODULES):
|
|
56
|
+
return False
|
|
57
|
+
|
|
58
|
+
found = self._import_or_none(f"py_app_runner.{service_name}.{module}")
|
|
59
|
+
return found if found is not None else False
|
|
39
60
|
|
|
40
61
|
def load_service(self, service_name: str) -> Any:
|
|
41
62
|
service = self._resolve(service_name, "_service")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: py_app_runner
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
4
4
|
Summary: Async service framework: Tornado HTTP/WS bridge, service loader, Redis WS connection manager
|
|
5
5
|
Author-email: Gints Murans <gm@gm.lv>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -31,7 +31,7 @@ Requires-Dist: uvloop>=0.21.0
|
|
|
31
31
|
Requires-Dist: msgspec>=0.19.0
|
|
32
32
|
Requires-Dist: msgpack>=1.2.4
|
|
33
33
|
Requires-Dist: tornado>=6.5.9
|
|
34
|
-
Requires-Dist: database_wrapper[pgsql,redis,sqlite]==0.
|
|
34
|
+
Requires-Dist: database_wrapper[pgsql,redis,sqlite]==0.4.0
|
|
35
35
|
Requires-Dist: psycopg>=3.2.0
|
|
36
36
|
Requires-Dist: psycopg[pool]>=3.2.0
|
|
37
37
|
Requires-Dist: redis>=4.5.4
|
|
@@ -37,7 +37,10 @@ def test_project_service_wins_over_builtin(fake_modules):
|
|
|
37
37
|
assert PyBridge().load_service_args("demo").origin == "project"
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
def
|
|
40
|
+
def test_falls_back_to_builtin_when_project_has_no_entry_module(fake_modules):
|
|
41
|
+
fake_modules("services")
|
|
42
|
+
fake_modules("services.demo")
|
|
43
|
+
fake_modules("services.demo.routes")
|
|
41
44
|
fake_modules("py_app_runner.demo")
|
|
42
45
|
builtin = fake_modules("py_app_runner.demo._service_args")
|
|
43
46
|
builtin.origin = "builtin"
|
|
@@ -45,6 +48,27 @@ def test_falls_back_to_builtin_when_project_module_absent(fake_modules):
|
|
|
45
48
|
assert PyBridge().load_service_args("demo").origin == "builtin"
|
|
46
49
|
|
|
47
50
|
|
|
51
|
+
def test_project_service_shadows_builtin_of_the_same_name(fake_modules, monkeypatch):
|
|
52
|
+
"""A project `services/cron` without a pybridge must not reach `py_app_runner.cron`,
|
|
53
|
+
whose package refuses to import without the `cron` extra."""
|
|
54
|
+
|
|
55
|
+
import py_app_runner.pybridge as pybridge_module
|
|
56
|
+
|
|
57
|
+
fake_modules("services")
|
|
58
|
+
fake_modules("services.demo")
|
|
59
|
+
fake_modules("services.demo._service_args")
|
|
60
|
+
real_import_module = pybridge_module.import_module
|
|
61
|
+
|
|
62
|
+
def fake_import_module(name: str, *args, **kwargs):
|
|
63
|
+
if name.startswith("py_app_runner.demo"):
|
|
64
|
+
raise ImportError("py_app_runner.demo requires an extra")
|
|
65
|
+
return real_import_module(name, *args, **kwargs)
|
|
66
|
+
|
|
67
|
+
monkeypatch.setattr(pybridge_module, "import_module", fake_import_module)
|
|
68
|
+
|
|
69
|
+
assert PyBridge().load_service_pybridge("demo") is False
|
|
70
|
+
|
|
71
|
+
|
|
48
72
|
def test_returns_false_when_neither_leg_exists(fake_modules):
|
|
49
73
|
assert PyBridge().load_service_args("nosuchservice") is False
|
|
50
74
|
|
py_app_runner-0.7.0/.version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.7.0
|
|
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
|
{py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/api_keys/files/install.pgsql.sql
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/encoders/json_encoder.py
RENAMED
|
File without changes
|
{py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/bridge/encoders/msgpack_encoder.py
RENAMED
|
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
|
|
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
|
|
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
|
{py_app_runner-0.7.0 → py_app_runner-0.7.2}/src/py_app_runner/request_handler/auth_service.py
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|