setup.py
    F 25:0 get_requirements - A (4)
tests/test_rest_api.py
    F 64:0 test_ingest_endpoint_wrong_content_type - B (6)
    F 89:0 test_ingest_endpoint_empty_payload - B (6)
    F 24:0 test_readiness_endpoint_wrong_http_method - A (5)
    F 45:0 test_liveness_endpoint_wrong_http_method - A (5)
    F 16:0 test_readiness_endpoint - A (3)
    F 37:0 test_liveness_endpoint - A (3)
    F 78:0 test_ingest_endpoint_no_payload - A (3)
    F 58:0 test_ingest_endpoint_wrong_http_method - A (2)
    F 6:0 api_route_for - A (1)
    F 11:0 get_json_from_response - A (1)
tests/test_errors.py
    F 7:0 test_f8a_configuration_exception - A (4)
tests/test_utils.py
    F 54:0 test_eco_object_dict - B (8)
    F 31:0 test_validate_request_data_not_valid_backend - A (5)
    F 7:0 test_validate_request_data_no_payload - A (3)
    F 15:0 test_validate_request_data_empty_payload - A (3)
    F 23:0 test_validate_request_data_not_valid_ecosystem - A (3)
    F 45:0 test_validate_request_data_valid_backend - A (3)
tests/conftest.py
    F 8:0 client - A (2)
tools/check_python_version.py
    F 19:0 get_expected_version - A (4)
    F 48:0 compare_versions - A (2)
    F 59:0 main - A (2)
    F 43:0 get_actual_version - A (1)
f8a_ingestion/models.py
    M 82:4 BayesianModelMixin.get_or_create - A (4)
    C 43:0 BayesianModelMixin - A (3)
    M 62:4 BayesianModelMixin._by_attrs - A (3)
    F 33:0 create_db_scoped_session - A (2)
    M 54:4 BayesianModelMixin.to_dict - A (2)
    M 73:4 BayesianModelMixin.by_id - A (2)
    M 131:4 Ecosystem.by_name - A (2)
    C 141:0 Package - A (2)
    M 157:4 Package.by_name - A (2)
    C 168:0 Version - A (2)
    M 182:4 Version.by_identifier - A (2)
    C 104:0 Ecosystem - A (1)
    M 117:4 Ecosystem.backend - A (1)
    M 122:4 Ecosystem.backend - A (1)
    M 127:4 Ecosystem.is_backed_by - A (1)
f8a_ingestion/utils.py
    M 119:4 DatabaseIngestion.get_info - A (5)
    F 39:0 validate_request_data - A (4)
    C 70:0 DatabaseIngestion - A (4)
    M 92:4 DatabaseIngestion.store_record - A (4)
    M 73:4 DatabaseIngestion.update_data - A (3)
    F 30:0 get_session - A (2)
    F 61:0 _eco_object_dict - A (1)
f8a_ingestion/rest_api.py
    F 38:0 ingest - B (6)
    F 28:0 readiness - A (1)
    F 33:0 liveness - A (1)
f8a_ingestion/enums.py
    C 24:0 EcosystemBackend - A (1)
    C 35:0 SortOrder - A (1)
f8a_ingestion/errors.py
    C 21:0 F8AConfigurationException - A (1)
f8a_ingestion/defaults.py
    C 30:0 F8AConfiguration - A (1)
    M 33:4 F8AConfiguration._make_postgres_string - A (1)
alembic/env.py
    F 56:0 run_migrations_online - A (3)
    F 36:0 run_migrations_offline - A (2)
alembic/versions/0194c3a2332e_initial_migration.py
    F 19:0 upgrade - A (1)
    F 63:0 downgrade - A (1)

57 blocks (classes, functions, methods) analyzed.
Average complexity: A (2.6666666666666665)