Project Structure

This site gives a brief overview of the project structure of the qunicorn project. Describing the different packages and components within.

The Structure described can be found within the qunicorn_core package.

Structure of the project

api <Package>:

The api package contains all the api views and models. It is used to define the API.

  • api_models <Package>:
    • contains DTOS and Schemas for all Objects

    • these are used for computation and to define the schemas for the api views

  • {component}_api <Package>:
    • contains the api definition for a component.

core <Package>:

The core package contains all the core logic of the project. This includes mappers and various services.

  • mapper <Package>:
    • contains mappers to map between different objects.

    • this includes:
      • mapping from DTOs to Dataclass objects

      • mapping from Schemas to DTOs

  • pilotmanager <Package>:
    • contains the different pilots, which are used to communicate with different quantum providers

    • contains the pilot_manager, a service class for handling of pilot data.

    • pilot_resources <Package>:
      • Contains resources for the pilots in the json format.

  • transpiler <Package>:
    • contains the transpiler, which is used to transpile between assembler languages used by different providers.

  • {component}_service <.py File>
    • a service file for a component which handles communication between the api and other parts of the core package and the db package.

db <Package>:

The db package contains the database models and the database service. It is used to define the database, and to handle communication with it.

  • database_services <Package>:
    • contains services which provide access the database (add, get, update, remove).

    • Services are called from the core package.

  • models <Package>:
    • contains the definitions of the various database models.

  • cli <.py File>:
    • contains cli commands to interact with the database, such as setting up the database or pushing clean data.

  • db <.py File>:
    • contains DB constant to avoid circular imports.

static <Package>:

The static package contains all static files, such as the enums used in the qunicorn project.

  • enums <Package>:
    • contains all enums used within the project.

util <Package>:

The util package contains various util files, as well as config files for the project.

  • config <Package>:
    • contains config files for the project.

    • These include: Celery, Smorest and sqlalchemy config files.

  • debug_routes <Package>:
    • contains routes for debugging purposes.

  • logging <.py File>:
    • a util file to set up logging.

  • reserve_proxy_fix <.py File>
    • a util file to set up reverse proxy fix.

  • utils <.py File>:
    • a util file to set up general util methods.