[release] 0.5.0
This commit is contained in:
parent
904783b134
commit
e5a278c84c
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
__version__ = '0.4.1'
|
__version__ = '0.5.0'
|
||||||
|
|
||||||
def version():
|
def version():
|
||||||
return f'HalfAPI version:{__version__}'
|
return f'HalfAPI version:{__version__}'
|
||||||
|
|
|
@ -153,25 +153,6 @@ def gen_router_routes(m_router: ModuleType, path: List[str]) -> Generator:
|
||||||
path.pop()
|
path.pop()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def gen_domain_routes(domain: str, m_dom: ModuleType) -> Generator:
|
|
||||||
"""
|
|
||||||
Generator that calls gen_router_routes for a domain
|
|
||||||
|
|
||||||
The domain must have a routers module in it's root-level.
|
|
||||||
If not, it is considered as empty
|
|
||||||
"""
|
|
||||||
m_router = None
|
|
||||||
try:
|
|
||||||
m_router = importlib.import_module('.routers', domain)
|
|
||||||
except ImportError:
|
|
||||||
logger.warning('Domain **%s** has no **routers** module', domain)
|
|
||||||
m_router = importlib.import_module('.routers', f'.{domain}')
|
|
||||||
|
|
||||||
if m_router:
|
|
||||||
yield from gen_router_routes(m_router, [domain])
|
|
||||||
|
|
||||||
|
|
||||||
def d_domains(config) -> Dict[str, ModuleType]:
|
def d_domains(config) -> Dict[str, ModuleType]:
|
||||||
"""
|
"""
|
||||||
Parameters:
|
Parameters:
|
||||||
|
@ -188,8 +169,8 @@ def d_domains(config) -> Dict[str, ModuleType]:
|
||||||
try:
|
try:
|
||||||
sys.path.append('.')
|
sys.path.append('.')
|
||||||
return {
|
return {
|
||||||
domain: importlib.import_module(domain)
|
domain: importlib.import_module(''.join((domain, module)))
|
||||||
for domain, _ in config.items('domains')
|
for domain, module in config.items('domains')
|
||||||
}
|
}
|
||||||
except ImportError as exc:
|
except ImportError as exc:
|
||||||
logger.error('Could not load a domain : %s', exc)
|
logger.error('Could not load a domain : %s', exc)
|
||||||
|
|
|
@ -24,7 +24,7 @@ from starlette.routing import Route
|
||||||
from starlette.requests import Request
|
from starlette.requests import Request
|
||||||
from starlette.responses import Response, PlainTextResponse
|
from starlette.responses import Response, PlainTextResponse
|
||||||
|
|
||||||
from halfapi.lib.domain import gen_domain_routes, VERBS
|
from halfapi.lib.domain import gen_router_routes, VERBS
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger('uvicorn.asgi')
|
logger = logging.getLogger('uvicorn.asgi')
|
||||||
|
@ -104,7 +104,7 @@ def gen_starlette_routes(d_domains: Dict[str, ModuleType]) -> Generator:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for domain_name, m_domain in d_domains.items():
|
for domain_name, m_domain in d_domains.items():
|
||||||
for path, d_route in gen_domain_routes(domain_name, m_domain):
|
for path, d_route in gen_router_routes(m_domain, [domain_name]):
|
||||||
for verb in VERBS:
|
for verb in VERBS:
|
||||||
if verb not in d_route.keys():
|
if verb not in d_route.keys():
|
||||||
continue
|
continue
|
||||||
|
@ -148,7 +148,7 @@ def api_routes(m_dom: ModuleType) -> Generator:
|
||||||
return l_params
|
return l_params
|
||||||
|
|
||||||
d_res = {}
|
d_res = {}
|
||||||
for path, d_route in gen_domain_routes(m_dom.__name__, m_dom):
|
for path, d_route in gen_router_routes(m_dom, [m_dom.__name__]):
|
||||||
d_res[path] = {'fqtn': d_route['fqtn'] }
|
d_res[path] = {'fqtn': d_route['fqtn'] }
|
||||||
|
|
||||||
for verb in VERBS:
|
for verb in VERBS:
|
||||||
|
|
|
@ -197,7 +197,7 @@ def project_runner(runner, halfapicli, halfapi_conf_dir):
|
||||||
###
|
###
|
||||||
# add dummy domain
|
# add dummy domain
|
||||||
###
|
###
|
||||||
create_domain('dummy_domain', '.dummy_domain')
|
create_domain('tests', '.dummy_domain.routers')
|
||||||
###
|
###
|
||||||
|
|
||||||
yield halfapicli
|
yield halfapicli
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import importlib
|
import importlib
|
||||||
from halfapi.lib.domain import VERBS, gen_domain_routes, gen_router_routes
|
from halfapi.lib.domain import VERBS, gen_router_routes
|
||||||
|
|
||||||
|
|
||||||
def test_gen_router_routes():
|
def test_gen_router_routes():
|
||||||
|
@ -16,11 +16,3 @@ def test_gen_router_routes():
|
||||||
assert hasattr(route['fct'], '__call__')
|
assert hasattr(route['fct'], '__call__')
|
||||||
if 'fqtn' in route:
|
if 'fqtn' in route:
|
||||||
assert isinstance(route['fqtn'], str)
|
assert isinstance(route['fqtn'], str)
|
||||||
|
|
||||||
|
|
||||||
def test_gen_domain_routes():
|
|
||||||
from . import dummy_domain
|
|
||||||
for path, route in gen_domain_routes(
|
|
||||||
'dummy_domain', dummy_domain):
|
|
||||||
assert isinstance(path, str)
|
|
||||||
assert isinstance(route, dict)
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ from starlette.routing import Route
|
||||||
from halfapi.lib.routes import gen_starlette_routes
|
from halfapi.lib.routes import gen_starlette_routes
|
||||||
|
|
||||||
def test_gen_starlette_routes():
|
def test_gen_starlette_routes():
|
||||||
from . import dummy_domain
|
from .dummy_domain import routers
|
||||||
for route in gen_starlette_routes({
|
for route in gen_starlette_routes({
|
||||||
'dummy_domain': dummy_domain }):
|
'dummy_domain': routers }):
|
||||||
|
|
||||||
assert isinstance(route, Route)
|
assert isinstance(route, Route)
|
||||||
|
|
|
@ -9,9 +9,9 @@ from halfapi.app import application
|
||||||
from halfapi.lib.schemas import schema_dict_dom
|
from halfapi.lib.schemas import schema_dict_dom
|
||||||
|
|
||||||
def test_schemas_dict_dom():
|
def test_schemas_dict_dom():
|
||||||
from . import dummy_domain
|
from .dummy_domain import routers
|
||||||
schema = schema_dict_dom({
|
schema = schema_dict_dom({
|
||||||
'dummy_domain':dummy_domain})
|
'dummy_domain':routers})
|
||||||
assert isinstance(schema, dict)
|
assert isinstance(schema, dict)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue