diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..6941a349fb9befea4b9c12b88df59c16a7e3bd99 --- /dev/null +++ b/LICENSE @@ -0,0 +1,5 @@ +MIT License + +Copyright (c) 2024 GÉANT + +Permission is hereby granted, free of charge, to any person obtaining a copy... \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000000000000000000000000000000000000..74215c3ee42cae82d98383c9cea51b08d4551d2a --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include README.md +include LICENSE \ No newline at end of file diff --git a/mapping_provider/__init__.py b/mapping_provider/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..b71618451ed5806e10d1944861e055734ca84ea6 --- /dev/null +++ b/mapping_provider/__init__.py @@ -0,0 +1,14 @@ +"""Initializes the FastAPI application.""" +from xml.sax.handler import version + +from fastapi import FastAPI +from mapping_provider.api.common import router as version_router + +def create_app(): + """Create a FastAPI application.""" + app = FastAPI( + title="Mapping provider", + description="Mapping provider endpoints for GÉANT maps", + ) + app.include_router(version_router) + return app diff --git a/mapping_provider/api/__ini__.py b/mapping_provider/api/__ini__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/mapping_provider/api/common.py b/mapping_provider/api/common.py new file mode 100644 index 0000000000000000000000000000000000000000..f1395f2d77a509e02adf4a55c965cd14fec40d1a --- /dev/null +++ b/mapping_provider/api/common.py @@ -0,0 +1,14 @@ +from importlib.metadata import version, PackageNotFoundError + +from fastapi import APIRouter + +router = APIRouter() + + +@router.get("/version") +def get_version(): + """Get the version of the package.""" + try: + return {"version": version("mapping_provider")} + except PackageNotFoundError: + return {"version": "unknown"} diff --git a/mapping_provider/main.py b/mapping_provider/main.py new file mode 100644 index 0000000000000000000000000000000000000000..dfcd3b48ae2aeb815081e1cf6fe07e90020d8eff --- /dev/null +++ b/mapping_provider/main.py @@ -0,0 +1,6 @@ +"""The main module that runs the application.""" + +from mapping_provider import create_app + +app = create_app() + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e0578a0c2cb636e21d871d5ae4fdbb81887bee2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +fastapi +uvicorn[standard] \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..5a84dbf65238b60c9c29ced773c89c572fc5ffb4 --- /dev/null +++ b/setup.py @@ -0,0 +1,26 @@ +from setuptools import setup, find_packages + +setup( + name="mapping-provider", + version="0.1", + description="A FastAPI app to provide mapping services for GEANT maps.", + author="GÉANT", + author_email="info@geant.org", + license="MIT", + packages=find_packages(where="mapping_provider"), + package_dir={"": "mapping_provider"}, + include_package_data=True, + python_requires=">=3.10", + install_requires=[ + "fastapi", + "uvicorn[standard]" + ], + long_description=open("README.md", encoding="utf-8").read(), + long_description_content_type="text/markdown", + classifiers=[ + "Programming Language :: Python :: 3", + "Framework :: FastAPI", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], +) \ No newline at end of file