Coverage for filip/config.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2025-03-10 13:43 +0000

1""" 

2Settings module to set url from .env.filip file. This can also seen as an 

3example for other applications such as webapp that use the library. Using 

4`*.env` belongs to best practices in containerized applications. Pydantic 

5provides a convenient and clean way to manage environments. 

6""" 

7 

8from pydantic import Field, AnyHttpUrl, AliasChoices, AnyUrl 

9from pydantic_settings import BaseSettings, SettingsConfigDict 

10from pathlib import Path 

11import os 

12from dotenv import find_dotenv 

13 

14ROOT_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), "..")) 

15 

16 

17class Settings(BaseSettings): 

18 """ 

19 Settings class that reads environment variables from a local `.env.filip` 

20 file or environment variables. The `.env.filip` can be located anywhere 

21 in the FiLiP repository. 

22 """ 

23 

24 model_config = SettingsConfigDict( 

25 env_file=find_dotenv(Path(ROOT_DIR) / ".env.filip"), 

26 env_file_encoding="utf-8", 

27 case_sensitive=False, 

28 extra="ignore", 

29 ) 

30 

31 CB_URL: AnyHttpUrl = Field( 

32 default="http://127.0.0.1:1026", 

33 validation_alias=AliasChoices( 

34 "ORION_URL", "CB_URL", "CB_HOST", "CONTEXTBROKER_URL", "OCB_URL" 

35 ), 

36 ) 

37 LD_CB_URL: AnyHttpUrl = Field( 

38 default="http://127.0.0.1:1027", 

39 validation_alias=AliasChoices( 

40 "LD_ORION_URL", "LD_CB_URL", "ORION_LD_URL", "SCORPIO_URL", "STELLIO_URL" 

41 ), 

42 ) 

43 

44 IOTA_URL: AnyHttpUrl = Field( 

45 default="http://127.0.0.1:4041", validation_alias="IOTA_URL" 

46 ) 

47 

48 QL_URL: AnyHttpUrl = Field( 

49 default="http://127.0.0.1:8668", 

50 validation_alias=AliasChoices("QUANTUMLEAP_URL", "QL_URL"), 

51 ) 

52 

53 MQTT_BROKER_URL: AnyUrl = Field( 

54 default="mqtt://127.0.0.1:1883", 

55 validation_alias=AliasChoices("MQTT_BROKER_URL", "MQTT_URL", "MQTT_BROKER"), 

56 ) 

57 LD_MQTT_BROKER_URL: AnyUrl = Field( 

58 default="mqtt://127.0.0.1:1884", 

59 validation_alias=AliasChoices( 

60 "LD_MQTT_BROKER_URL", "LD_MQTT_URL", "LD_MQTT_BROKER" 

61 ), 

62 ) 

63 

64 

65# create settings object 

66settings = Settings()