from panther.app import API
from panther.request import Request
from panther.response import Response
from panther import status
from serializers import MFA_Exception_Request_Serializer
@API(input_model=MFA_Exception_Request_Serializer)
async def MfaExceptionsEndpoint(request: Request):
data: MFA_Exception_Request_Serializer = request.data
if request.method == 'POST':
message = f"You have POSTED to MFA Exceptions for device {data.hostname}"
return Response(data=message, status_code=status.HTTP_200_OK)
return Response(data="None of that.", status_code=status.HTTP_501_NOT_IMPLEMENTED)
from apis import MfaExceptionsEndpoint
urls = {
'mfa/requested-exceptions/': MfaExceptionsEndpoint,
}
from pydantic import BaseModel
class MFA_Exception_Request_Serializer(BaseModel):
hostname: str
from panther import Panther
app = Panther(__name__)
The error seems to come from main.py which literally hasn't even been touched.
PS <REDACTED>> panther run
'clear' is not recognized as an internal or external command,
operable program or batch file.
DEBUG: | 2023-08-30 11:22:21 | Base directory: <REDACTED>
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "<REDACTED>AppData\Local\Programs\Python\Python311\Scripts\panther.exe\__main__.py", line 7, in <module>
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\panther\cli\main.py", line 31, in start
run(args)
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\panther\cli\run_command.py", line 53, in run
uvicorn.run('main:app', **command)
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\main.py", line 587, in run
server.run()
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 68, in serve
config.load()
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\config.py", line 467, in load
self.loaded_app = import_from_string(self.app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\importer.py", line 24, in import_from_string
raise exc from None
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\importer.py", line 21, in import_from_string
module = importlib.import_module(module_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<REDACTED>\main.py", line 3, in <module>
app = Panther(__name__)
^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\panther\main.py", line 32, in __init__
self.load_configs()
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\panther\main.py", line 56, in load_configs
self._collect_models()
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\panther\main.py", line 140, in _collect_models
klass = import_class(f'{class_path}.models.{n.name}')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\site-packages\panther\_utils.py", line 66, in import_class
module = importlib.import_module(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<REDACTED>AppData\Local\Programs\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named <REDACTED>'