"""Quantinuum Nexus API client configuration via pydantic-settings."""importosfrompydanticimportAliasChoices,Fieldfrompydantic_settingsimportBaseSettings,SettingsConfigDictdef_resolve_env_file()->str:"""Resolve the settings env file path. Supports an explicit override via ``NEXUS_CONFIG_FILE`` and defaults to ``~/.qnexus/config``. """returnos.path.expanduser(os.getenv("NEXUS_CONFIG_FILE","~/.qnexus/config"))
[docs]classConfig(BaseSettings):"""QNexus Configuration schema. Uses pydantic-settings to read environment variables for qnexus configuration."""model_config=SettingsConfigDict(env_prefix="NEXUS_",env_file=_resolve_env_file(),)# webprotocol:str="https"websockets_protocol:str="wss"domain:str=Field(validation_alias=AliasChoices("NEXUS_DOMAIN","NEXUS_HOST"),default="nexus.quantinuum.com",)port:int=443httpx_verify:bool=True# authstore_tokens:bool=True# Not implementedtoken_path:str=".qnx/auth"# testingqa_user_email:str=""qa_user_password:str=""def__str__(self)->str:"""String representation of current config."""returnself.model_dump_json()@propertydefurl(self)->str:"""Current http API URL"""returnf"{self.protocol}://{self.domain}:{self.port}"@propertydefwebsockets_url(self)->str:"""Current websockets API URL"""returnf"{self.websockets_protocol}://{self.domain}:{self.port}"