altimeter.qj package¶
Subpackages¶
Submodules¶
altimeter.qj.client module¶
Client for the QJ API
- 
class 
QJAPIClient(host, port=443, scheme='https', api_key=None)¶ Bases:
objectClient for the QJ API
- 
create_or_update_active_job(job_in)¶ This method ensures that an active Job as described by JobCreate exists. If the Job does not exist it will be created. If a Job which can be updated exists (e.g. query is the same but perhaps category is different) that job will be updated. The created or updated job will be activated. Note that for finding a job candidate to update, only active jobs are considered - an inactive job will never be updated and used, instead a new version would be created. If an update was made, a Job object is returned, otherwise None
- Return type
 Optional[Job]
- 
delete_expired_result_sets()¶ Delete all expired ResultSets
- Return type
 
- 
get_auth()¶ Get the currently used api auth token. This can be used to validate that the client’s key is valid
- Return type
 str
- 
 
- 
exception 
QJAPIClientError¶ Bases:
ExceptionGeneral QJ API Client exception
- 
raise_client_error(response, exception)¶ Raise an QJAPIClientError based on a Response and Exception
- Return type
 None
altimeter.qj.config module¶
Global Settings
- 
class 
APIConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
altimeter.qj.config.QJConfigConfiguraton for the API service and consumers
- 
api_host: str¶ 
- 
api_port: int¶ 
- 
 
- 
class 
APIKeyRotatorConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
altimeter.qj.config.APIConfigConfiguraton for the APIKeyRotator lambda
- 
account_id_key: str¶ 
- 
api_host: str¶ 
- 
api_port: int¶ 
- 
app_name: str¶ 
- 
region: str¶ 
- 
 
- 
class 
APIServiceConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
altimeter.qj.config.APIConfig,altimeter.qj.config.DBConfig,altimeter.qj.config.LimitsConfig,altimeter.qj.config.SecurityConfigConfiguration for the API service
- 
classmethod 
check_max_graph_age_sec(values)¶ Validate that max_graph_age_sec_default does not exceed max_graph_age_sec_limit
- Return type
 Dict[str,Any]
- 
classmethod 
check_max_result_age_sec(values)¶ Validate that max_result_age_sec_default does not exceed max_result_age_sec_limit
- Return type
 Dict[str,Any]
- 
classmethod 
check_result_expiration_sec(values)¶ Validate that result_expiration_sec_default does not exceed result_expiration_sec_limit
- Return type
 Dict[str,Any]
- 
db_ro_user: str¶ 
- 
classmethod 
 
- 
class 
DBConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
pydantic.env_settings.BaseSettingsConfiguraton for the DB
- 
db_host: str¶ 
- 
db_name: str¶ 
- 
db_password: str¶ 
- 
db_user: str¶ 
- 
get_db_uri()¶ Get a db uri for this DBConfig
- Return type
 str
- 
 
- 
class 
ExecutorConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
altimeter.qj.config.APIConfigConfiguraton for the Executor lambda
- 
query_queue_url: str¶ 
- 
 
- 
class 
LimitsConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
pydantic.env_settings.BaseSettingsLimit configurations
- 
max_graph_age_sec_default: int¶ 
- 
max_graph_age_sec_limit: int¶ 
- 
max_result_age_sec_default: int¶ 
- 
max_result_age_sec_limit: int¶ 
- 
max_result_set_results: int¶ 
- 
max_result_size_bytes: int¶ 
- 
result_expiration_sec_default: int¶ 
- 
result_expiration_sec_limit: int¶ 
- 
 
- 
class 
PrunerConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
altimeter.qj.config.APIConfig,altimeter.qj.config.SecurityConfigConfiguraton for the Pruner lambda
- 
account_id_key: str¶ 
- 
api_host: str¶ 
- 
api_port: int¶ 
- 
app_name: str¶ 
- 
region: str¶ 
- 
 
- 
class 
QJConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
pydantic.env_settings.BaseSettingsGeneral high level configuration
- 
account_id_key: str¶ 
- 
app_name: str¶ 
- 
region: str¶ 
- 
 
- 
class 
QueryConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)¶ Bases:
altimeter.qj.config.APIConfig,altimeter.qj.config.SecurityConfigConfiguraton for the Query lambda
- 
neptune_host: str¶ 
- 
neptune_port: int¶ 
- 
neptune_region: str¶ 
- 
 
altimeter.qj.exceptions module¶
QJ Exception Classes
- 
exception 
ActiveJobVersionNotFound¶ Bases:
altimeter.qj.exceptions.QJExceptionAn active JobVersion for a specified Job could not be found
- 
exception 
JobInvalid¶ Bases:
altimeter.qj.exceptions.QJExceptionA specified Job is invalid
- 
exception 
JobNotFound¶ Bases:
altimeter.qj.exceptions.QJExceptionA specified Job could not be found
- 
exception 
JobQueryInvalid¶ Bases:
altimeter.qj.exceptions.QJExceptionA Job’s query is invalid SPARQL
- 
exception 
JobQueryMissingAccountId¶ Bases:
altimeter.qj.exceptions.QJExceptionA Job’s query is missing the required account_id field
- 
exception 
JobVersionNotFound¶ Bases:
altimeter.qj.exceptions.QJExceptionA specified JobVersion could not be found
- 
exception 
QJException¶ Bases:
ExceptionBase exception class for all QJ thrown exceptions
- 
exception 
ResultSetNotFound¶ Bases:
altimeter.qj.exceptions.QJExceptionA specified ResultSet could not be found
- 
exception 
ResultSetResultsLimitExceeded¶ Bases:
altimeter.qj.exceptions.QJExceptionThe number of Results in a ResultSet exceeds the configured maximum
- 
exception 
ResultSizeExceeded¶ Bases:
altimeter.qj.exceptions.QJExceptionThe size of an individual result exceeds the configured maximum
altimeter.qj.log module¶
LogEvent for QJ events.
- 
class 
QJLogEvents(InitConfig=EventName(name='InitConfig'), GetJobs=EventName(name='GetJobs'), ScheduleJob=EventName(name='ScheduleJob'), DeleteStart=EventName(name='DeleteStart'), DeleteEnd=EventName(name='DeleteEnd'), InitJob=EventName(name='InitJob'), RunQueryStart=EventName(name='RunQueryStart'), RunQueryEnd=EventName(name='RunQueryEnd'), CreateResultSetStart=EventName(name='CreateResultSetStart'), CreateResultSetEnd=EventName(name='CreateResultSetEnd'), CreateJob=EventName(name='CreateJob'), DeleteJob=EventName(name='DeleteJob'), GetActiveJob=EventName(name='GetActiveJob'), GetJobVersion=EventName(name='GetJobVersion'), GetJobVersions=EventName(name='GetJobVersions'), UpdateJob=EventName(name='UpdateJob'), CreateView=EventName(name='CreateView'), DropView=EventName(name='DropView'), CreateResultSet=EventName(name='CreateResultSet'), DeleteExpiredResultSets=EventName(name='DeleteExpiredResultSets'), GetExpiredResultSets=EventName(name='GetExpiredResultSets'), GetResultSet=EventName(name='GetResultSet'), GetLatestResultSetForActiveJob=EventName(name='GetLatestResultSetForActiveJob'), APIError=EventName(name='APIError'), HTTPRequest=EventName(name='HTTPRequest'))¶ Bases:
altimeter.core.log.BaseLogEventQJ Log event names
- 
APIError: altimeter.core.log.EventName = EventName(name='APIError')¶ 
- 
CreateJob: altimeter.core.log.EventName = EventName(name='CreateJob')¶ 
- 
CreateResultSet: altimeter.core.log.EventName = EventName(name='CreateResultSet')¶ 
- 
CreateResultSetEnd: altimeter.core.log.EventName = EventName(name='CreateResultSetEnd')¶ 
- 
CreateResultSetStart: altimeter.core.log.EventName = EventName(name='CreateResultSetStart')¶ 
- 
CreateView: altimeter.core.log.EventName = EventName(name='CreateView')¶ 
- 
DeleteEnd: altimeter.core.log.EventName = EventName(name='DeleteEnd')¶ 
- 
DeleteExpiredResultSets: altimeter.core.log.EventName = EventName(name='DeleteExpiredResultSets')¶ 
- 
DeleteJob: altimeter.core.log.EventName = EventName(name='DeleteJob')¶ 
- 
DeleteStart: altimeter.core.log.EventName = EventName(name='DeleteStart')¶ 
- 
DropView: altimeter.core.log.EventName = EventName(name='DropView')¶ 
- 
GetActiveJob: altimeter.core.log.EventName = EventName(name='GetActiveJob')¶ 
- 
GetExpiredResultSets: altimeter.core.log.EventName = EventName(name='GetExpiredResultSets')¶ 
- 
GetJobVersion: altimeter.core.log.EventName = EventName(name='GetJobVersion')¶ 
- 
GetJobVersions: altimeter.core.log.EventName = EventName(name='GetJobVersions')¶ 
- 
GetJobs: altimeter.core.log.EventName = EventName(name='GetJobs')¶ 
- 
GetLatestResultSetForActiveJob: altimeter.core.log.EventName = EventName(name='GetLatestResultSetForActiveJob')¶ 
- 
GetResultSet: altimeter.core.log.EventName = EventName(name='GetResultSet')¶ 
- 
HTTPRequest: altimeter.core.log.EventName = EventName(name='HTTPRequest')¶ 
- 
InitConfig: altimeter.core.log.EventName = EventName(name='InitConfig')¶ 
- 
InitJob: altimeter.core.log.EventName = EventName(name='InitJob')¶ 
- 
RunQueryEnd: altimeter.core.log.EventName = EventName(name='RunQueryEnd')¶ 
- 
RunQueryStart: altimeter.core.log.EventName = EventName(name='RunQueryStart')¶ 
- 
ScheduleJob: altimeter.core.log.EventName = EventName(name='ScheduleJob')¶ 
- 
UpdateJob: altimeter.core.log.EventName = EventName(name='UpdateJob')¶ 
- 
 
altimeter.qj.middleware module¶
FastAPI middlewares
altimeter.qj.security module¶
Security related functions
- 
get_api_key(region_name, version_stage='AWSCURRENT')¶ Get the current API key from SecretsManager
- Return type
 str
altimeter.qj.settings module¶
Settings