squirrels 0.5.0rc0__py3-none-any.whl → 0.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of squirrels might be problematic. Click here for more details.

Files changed (108) hide show
  1. dateutils/__init__.py +6 -0
  2. dateutils/_enums.py +25 -0
  3. squirrels/dateutils.py → dateutils/_implementation.py +58 -111
  4. dateutils/types.py +6 -0
  5. squirrels/__init__.py +10 -12
  6. squirrels/_api_routes/__init__.py +5 -0
  7. squirrels/_api_routes/auth.py +271 -0
  8. squirrels/_api_routes/base.py +171 -0
  9. squirrels/_api_routes/dashboards.py +158 -0
  10. squirrels/_api_routes/data_management.py +148 -0
  11. squirrels/_api_routes/datasets.py +265 -0
  12. squirrels/_api_routes/oauth2.py +298 -0
  13. squirrels/_api_routes/project.py +252 -0
  14. squirrels/_api_server.py +245 -781
  15. squirrels/_arguments/__init__.py +0 -0
  16. squirrels/{arguments → _arguments}/init_time_args.py +7 -2
  17. squirrels/{arguments → _arguments}/run_time_args.py +13 -35
  18. squirrels/_auth.py +720 -212
  19. squirrels/_command_line.py +81 -41
  20. squirrels/_compile_prompts.py +147 -0
  21. squirrels/_connection_set.py +16 -7
  22. squirrels/_constants.py +29 -9
  23. squirrels/{_dashboards_io.py → _dashboards.py} +87 -6
  24. squirrels/_data_sources.py +570 -0
  25. squirrels/{dataset_result.py → _dataset_types.py} +2 -4
  26. squirrels/_exceptions.py +9 -37
  27. squirrels/_initializer.py +83 -59
  28. squirrels/_logging.py +117 -0
  29. squirrels/_manifest.py +129 -62
  30. squirrels/_model_builder.py +10 -52
  31. squirrels/_model_configs.py +3 -3
  32. squirrels/_model_queries.py +1 -1
  33. squirrels/_models.py +249 -118
  34. squirrels/{package_data → _package_data}/base_project/.env +16 -4
  35. squirrels/{package_data → _package_data}/base_project/.env.example +15 -3
  36. squirrels/{package_data → _package_data}/base_project/connections.yml +4 -3
  37. squirrels/{package_data → _package_data}/base_project/dashboards/dashboard_example.py +4 -4
  38. squirrels/_package_data/base_project/dashboards/dashboard_example.yml +22 -0
  39. squirrels/{package_data → _package_data}/base_project/duckdb_init.sql +1 -0
  40. squirrels/_package_data/base_project/macros/macros_example.sql +17 -0
  41. squirrels/{package_data → _package_data}/base_project/models/builds/build_example.py +2 -2
  42. squirrels/{package_data → _package_data}/base_project/models/builds/build_example.sql +1 -1
  43. squirrels/{package_data → _package_data}/base_project/models/builds/build_example.yml +2 -0
  44. squirrels/_package_data/base_project/models/dbviews/dbview_example.sql +17 -0
  45. squirrels/_package_data/base_project/models/dbviews/dbview_example.yml +32 -0
  46. squirrels/_package_data/base_project/models/federates/federate_example.py +48 -0
  47. squirrels/_package_data/base_project/models/federates/federate_example.sql +21 -0
  48. squirrels/{package_data → _package_data}/base_project/models/federates/federate_example.yml +7 -7
  49. squirrels/{package_data → _package_data}/base_project/models/sources.yml +5 -6
  50. squirrels/{package_data → _package_data}/base_project/parameters.yml +32 -45
  51. squirrels/_package_data/base_project/pyconfigs/connections.py +18 -0
  52. squirrels/{package_data → _package_data}/base_project/pyconfigs/context.py +31 -22
  53. squirrels/_package_data/base_project/pyconfigs/parameters.py +141 -0
  54. squirrels/_package_data/base_project/pyconfigs/user.py +44 -0
  55. squirrels/{package_data → _package_data}/base_project/seeds/seed_categories.yml +1 -1
  56. squirrels/{package_data → _package_data}/base_project/seeds/seed_subcategories.yml +1 -1
  57. squirrels/_package_data/base_project/squirrels.yml.j2 +61 -0
  58. squirrels/_package_data/templates/dataset_results.html +112 -0
  59. squirrels/_package_data/templates/oauth_login.html +271 -0
  60. squirrels/_package_data/templates/squirrels_studio.html +20 -0
  61. squirrels/_parameter_configs.py +76 -55
  62. squirrels/_parameter_options.py +348 -0
  63. squirrels/_parameter_sets.py +53 -45
  64. squirrels/_parameters.py +1664 -0
  65. squirrels/_project.py +403 -242
  66. squirrels/_py_module.py +3 -2
  67. squirrels/_request_context.py +33 -0
  68. squirrels/_schemas/__init__.py +0 -0
  69. squirrels/_schemas/auth_models.py +167 -0
  70. squirrels/_schemas/query_param_models.py +75 -0
  71. squirrels/{_api_response_models.py → _schemas/response_models.py} +48 -18
  72. squirrels/_seeds.py +1 -1
  73. squirrels/_sources.py +23 -19
  74. squirrels/_utils.py +121 -39
  75. squirrels/_version.py +1 -1
  76. squirrels/arguments.py +7 -0
  77. squirrels/auth.py +4 -0
  78. squirrels/connections.py +3 -0
  79. squirrels/dashboards.py +2 -81
  80. squirrels/data_sources.py +14 -563
  81. squirrels/parameter_options.py +13 -348
  82. squirrels/parameters.py +14 -1266
  83. squirrels/types.py +16 -0
  84. {squirrels-0.5.0rc0.dist-info → squirrels-0.5.1.dist-info}/METADATA +42 -30
  85. squirrels-0.5.1.dist-info/RECORD +98 -0
  86. squirrels/package_data/base_project/dashboards/dashboard_example.yml +0 -22
  87. squirrels/package_data/base_project/macros/macros_example.sql +0 -15
  88. squirrels/package_data/base_project/models/dbviews/dbview_example.sql +0 -12
  89. squirrels/package_data/base_project/models/dbviews/dbview_example.yml +0 -26
  90. squirrels/package_data/base_project/models/federates/federate_example.py +0 -44
  91. squirrels/package_data/base_project/models/federates/federate_example.sql +0 -17
  92. squirrels/package_data/base_project/pyconfigs/connections.py +0 -14
  93. squirrels/package_data/base_project/pyconfigs/parameters.py +0 -93
  94. squirrels/package_data/base_project/pyconfigs/user.py +0 -23
  95. squirrels/package_data/base_project/squirrels.yml.j2 +0 -71
  96. squirrels-0.5.0rc0.dist-info/RECORD +0 -70
  97. /squirrels/{package_data → _package_data}/base_project/assets/expenses.db +0 -0
  98. /squirrels/{package_data → _package_data}/base_project/assets/weather.db +0 -0
  99. /squirrels/{package_data → _package_data}/base_project/docker/.dockerignore +0 -0
  100. /squirrels/{package_data → _package_data}/base_project/docker/Dockerfile +0 -0
  101. /squirrels/{package_data → _package_data}/base_project/docker/compose.yml +0 -0
  102. /squirrels/{package_data/base_project/.gitignore → _package_data/base_project/gitignore} +0 -0
  103. /squirrels/{package_data → _package_data}/base_project/seeds/seed_categories.csv +0 -0
  104. /squirrels/{package_data → _package_data}/base_project/seeds/seed_subcategories.csv +0 -0
  105. /squirrels/{package_data → _package_data}/base_project/tmp/.gitignore +0 -0
  106. {squirrels-0.5.0rc0.dist-info → squirrels-0.5.1.dist-info}/WHEEL +0 -0
  107. {squirrels-0.5.0rc0.dist-info → squirrels-0.5.1.dist-info}/entry_points.txt +0 -0
  108. {squirrels-0.5.0rc0.dist-info → squirrels-0.5.1.dist-info}/licenses/LICENSE +0 -0
File without changes
@@ -19,6 +19,11 @@ class ConnectionsArgs:
19
19
  return self._env_vars.copy()
20
20
 
21
21
 
22
+ @dataclass
23
+ class AuthProviderArgs(ConnectionsArgs):
24
+ pass
25
+
26
+
22
27
  @dataclass
23
28
  class ParametersArgs(ConnectionsArgs):
24
29
  pass
@@ -88,14 +93,14 @@ class BuildModelArgs(_WithConnectionDictArgs):
88
93
 
89
94
  def run_sql_on_dataframes(self, sql_query: str, *, dataframes: dict[str, pl.LazyFrame] | None = None, **kwargs) -> pl.DataFrame:
90
95
  """
91
- Uses a dictionary of dataframes to execute a SQL query in an embedded in-memory database (sqlite or duckdb based on setting)
96
+ Uses a dictionary of dataframes to execute a SQL query in an embedded in-memory DuckDB database
92
97
 
93
98
  Arguments:
94
99
  sql_query: The SQL query to run
95
100
  dataframes: A dictionary of table names to their polars LazyFrame. If None, uses results of dependent models
96
101
 
97
102
  Returns:
98
- The result as a polars LazyFrame from running the query
103
+ The result as a polars DataFrame from running the query
99
104
  """
100
105
  if dataframes is None:
101
106
  dataframes = {x: self.ref(x) for x in self._dependencies}
@@ -1,45 +1,23 @@
1
1
  from typing import Callable, Any, Coroutine
2
2
  import polars as pl
3
3
 
4
- from .init_time_args import _WithConnectionDictArgs, ParametersArgs, BuildModelArgs, ConnectionsArgs
5
- from .._auth import BaseUser
6
- from ..parameters import Parameter, TextValue
7
-
8
-
9
- class AuthLoginArgs(_WithConnectionDictArgs):
10
-
11
- def __init__(
12
- self, conn_args: ConnectionsArgs, _connections: dict[str, Any],
13
- username: str,
14
- password: str
15
- ):
16
- super().__init__(conn_args.project_path, conn_args.proj_vars, conn_args.env_vars, _connections)
17
- self.username = username
18
- self.password = password
19
-
20
-
21
- class AuthTokenArgs(_WithConnectionDictArgs):
22
-
23
- def __init__(
24
- self, conn_args: ConnectionsArgs, _connections: dict[str, Any],
25
- token: str
26
- ):
27
- super().__init__(conn_args.project_path, conn_args.proj_vars, conn_args.env_vars, _connections)
28
- self.token = token
4
+ from .init_time_args import ParametersArgs, BuildModelArgs
5
+ from .._schemas.auth_models import AbstractUser
6
+ from .._parameters import Parameter, TextValue
29
7
 
30
8
 
31
9
  class ContextArgs(ParametersArgs):
32
10
 
33
11
  def __init__(
34
12
  self, param_args: ParametersArgs,
35
- user: BaseUser | None,
36
- prms: dict[str, Parameter],
37
- traits: dict[str, Any]
13
+ user: AbstractUser,
14
+ prms: dict[str, Parameter],
15
+ configurables: dict[str, str]
38
16
  ):
39
17
  super().__init__(param_args.project_path, param_args.proj_vars, param_args.env_vars)
40
18
  self.user = user
41
19
  self._prms = prms
42
- self._traits = traits
20
+ self._configurables = configurables
43
21
  self._placeholders = {}
44
22
 
45
23
  @property
@@ -50,14 +28,14 @@ class ContextArgs(ParametersArgs):
50
28
  return self._prms.copy()
51
29
 
52
30
  @property
53
- def traits(self) -> dict[str, Any]:
31
+ def configurables(self) -> dict[str, str]:
54
32
  """
55
- A dictionary of dataset trait name to value
33
+ A dictionary of configurable name to value (set by application)
56
34
  """
57
- return self._traits.copy()
35
+ return self._configurables.copy()
58
36
 
59
37
  @property
60
- def placeholders(self) -> dict[str, Any]:
38
+ def _placeholders_copy(self) -> dict[str, Any]:
61
39
  """
62
40
  A dictionary of placeholder name to placeholder value
63
41
  """
@@ -102,8 +80,8 @@ class ModelArgs(BuildModelArgs, ContextArgs):
102
80
  self._env_vars = ctx_args.env_vars
103
81
  self.user = ctx_args.user
104
82
  self._prms = ctx_args.prms
105
- self._traits = ctx_args.traits
106
- self._placeholders = ctx_args.placeholders
83
+ self._configurables = ctx_args.configurables
84
+ self._placeholders = ctx_args._placeholders_copy
107
85
  self._connections = build_model_args.connections
108
86
  self._dependencies = build_model_args.dependencies
109
87
  self._ref = build_model_args.ref