2
2
3
3
from pathlib import Path
4
4
5
- import pydantic_argparse
6
- from pydantic import Field , HttpUrl , v1
5
+ from pydantic import Field , HttpUrl
7
6
from pydantic_settings import BaseSettings , SettingsConfigDict
8
7
9
8
from sploty import audio_features , concat , enrich , filter , metrics , to_elastic
10
9
from sploty .settings import logger
11
10
12
11
13
- class Arguments (v1 .BaseModel ):
14
- resources_path : str = v1 .Field (description = "a required string" )
15
- previous_enriched_streaming_history_path : str = v1 .Field (None , description = "an optional string" )
16
- chunk_size : int = v1 .Field (default = 100 , description = "an optional int" )
17
- spotify_timeout : int = v1 .Field (default = 10 , description = "an optional int" )
18
- spotify_sleep : int = v1 .Field (default = 60 , description = "an optional int" )
19
- db_path : str = v1 .Field (description = "a required string" )
20
- index_name : str = v1 .Field (description = "a required string" )
21
- elastic_timeout : int = v1 .Field (default = 10 , description = "an optional int" )
22
- concat : bool = v1 .Field (default = True )
23
- filter : bool = v1 .Field (default = True )
24
- enrich : bool = v1 .Field (default = True )
25
- feature : bool = v1 .Field (default = True )
26
- metric : bool = v1 .Field (default = True )
27
- elastic : bool = v1 .Field (default = True )
12
+ class Arguments (BaseSettings , cli_implicit_flags = True , cli_enforce_required = True ):
13
+ model_config = SettingsConfigDict (cli_parse_args = True )
14
+ resources_path : str = Field (alias = "resources-path" , description = "a required string" )
15
+ previous_enriched_streaming_history_path : str | None = Field (
16
+ alias = "previous-enriched-streaming-history-path" ,
17
+ default = None ,
18
+ description = "an optional string" ,
19
+ )
20
+ chunk_size : int = Field (alias = "chunk-size" , default = 100 , description = "an optional int" )
21
+ spotify_timeout : int = Field (alias = "spotify-timeout" , default = 10 , description = "an optional int" )
22
+ spotify_sleep : int = Field (alias = "spotify-sleep" , default = 60 , description = "an optional int" )
23
+ db_path : str = Field (alias = "db-path" , description = "a required string" )
24
+ index_name : str = Field (alias = "index-name" , description = "a required string" )
25
+ elastic_timeout : int = Field (alias = "elastic-timeout" , default = 10 , description = "an optional int" )
26
+ concat : bool = Field (alias = "concat" , default = True )
27
+ filter : bool = Field (alias = "filter" , default = True )
28
+ enrich : bool = Field (alias = "enrich" , default = True )
29
+ feature : bool = Field (alias = "feature" , default = True )
30
+ metric : bool = Field (alias = "metric" , default = True )
31
+ elastic : bool = Field (alias = "elastic" , default = True )
28
32
29
33
30
34
class Environment (BaseSettings ):
@@ -39,15 +43,8 @@ class Environment(BaseSettings):
39
43
40
44
41
45
def main () -> None :
42
- # Create Parser and Parse Args
43
- parser = pydantic_argparse .ArgumentParser (
44
- model = Arguments ,
45
- prog = "Example Program" ,
46
- description = "Example Description" ,
47
- version = "0.0.1" ,
48
- epilog = "Example Epilog" ,
49
- )
50
- args = parser .parse_typed_args ()
46
+ # Parse args and environment vars
47
+ args = Arguments ()
51
48
env = Environment ()
52
49
53
50
# Paths
0 commit comments