squirrels 0.5.0b2__py3-none-any.whl → 0.5.0b3__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.
- dateutils/__init__.py +6 -460
- dateutils/_enums.py +25 -0
- dateutils/_implementation.py +409 -0
- dateutils/types.py +6 -0
- squirrels/__init__.py +7 -13
- squirrels/_api_server.py +5 -5
- squirrels/{arguments/init_time_args.py → _arguments/_init_time_args.py} +2 -2
- squirrels/{arguments/run_time_args.py → _arguments/_run_time_args.py} +4 -26
- squirrels/_auth.py +2 -2
- squirrels/_connection_set.py +5 -5
- squirrels/_constants.py +1 -1
- squirrels/_dashboard_types.py +82 -0
- squirrels/_dashboards_io.py +2 -2
- squirrels/_data_sources.py +564 -0
- squirrels/_exceptions.py +1 -1
- squirrels/_initializer.py +31 -26
- squirrels/_manifest.py +5 -5
- squirrels/_model_configs.py +2 -2
- squirrels/_model_queries.py +1 -1
- squirrels/_models.py +28 -16
- squirrels/{package_data → _package_data}/base_project/dashboards/dashboard_example.py +4 -4
- squirrels/{package_data → _package_data}/base_project/dashboards/dashboard_example.yml +2 -2
- squirrels/_package_data/base_project/macros/macros_example.sql +17 -0
- squirrels/{package_data → _package_data}/base_project/models/builds/build_example.py +2 -2
- squirrels/{package_data → _package_data}/base_project/models/builds/build_example.sql +1 -1
- squirrels/{package_data → _package_data}/base_project/models/dbviews/dbview_example.sql +1 -1
- squirrels/_package_data/base_project/models/federates/federate_example.py +41 -0
- squirrels/_package_data/base_project/models/federates/federate_example.sql +25 -0
- squirrels/{package_data → _package_data}/base_project/models/federates/federate_example.yml +6 -6
- squirrels/{package_data → _package_data}/base_project/parameters.yml +9 -8
- squirrels/_package_data/base_project/pyconfigs/connections.py +14 -0
- squirrels/{package_data → _package_data}/base_project/pyconfigs/context.py +14 -16
- squirrels/{package_data → _package_data}/base_project/pyconfigs/parameters.py +13 -8
- squirrels/{package_data → _package_data}/base_project/pyconfigs/user.py +2 -2
- squirrels/_parameter_configs.py +34 -34
- squirrels/_parameter_options.py +348 -0
- squirrels/_parameter_sets.py +18 -18
- squirrels/_parameters.py +1266 -0
- squirrels/_project.py +37 -12
- squirrels/_utils.py +4 -2
- squirrels/arguments.py +2 -0
- squirrels/connections.py +1 -0
- squirrels/dashboards.py +1 -82
- squirrels/data_sources.py +8 -563
- squirrels/parameter_options.py +8 -348
- squirrels/parameters.py +9 -1266
- squirrels/types.py +11 -0
- {squirrels-0.5.0b2.dist-info → squirrels-0.5.0b3.dist-info}/METADATA +1 -1
- squirrels-0.5.0b3.dist-info/RECORD +80 -0
- squirrels/package_data/base_project/macros/macros_example.sql +0 -15
- squirrels/package_data/base_project/models/federates/federate_example.py +0 -44
- squirrels/package_data/base_project/models/federates/federate_example.sql +0 -17
- squirrels/package_data/base_project/pyconfigs/connections.py +0 -14
- squirrels-0.5.0b2.dist-info/RECORD +0 -70
- /squirrels/{dataset_result.py → _dataset_types.py} +0 -0
- /squirrels/{package_data → _package_data}/base_project/.env +0 -0
- /squirrels/{package_data → _package_data}/base_project/.env.example +0 -0
- /squirrels/{package_data → _package_data}/base_project/assets/expenses.db +0 -0
- /squirrels/{package_data → _package_data}/base_project/assets/weather.db +0 -0
- /squirrels/{package_data → _package_data}/base_project/connections.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/docker/.dockerignore +0 -0
- /squirrels/{package_data → _package_data}/base_project/docker/Dockerfile +0 -0
- /squirrels/{package_data → _package_data}/base_project/docker/compose.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/duckdb_init.sql +0 -0
- /squirrels/{package_data/base_project/.gitignore → _package_data/base_project/gitignore} +0 -0
- /squirrels/{package_data → _package_data}/base_project/models/builds/build_example.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/models/dbviews/dbview_example.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/models/sources.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/seeds/seed_categories.csv +0 -0
- /squirrels/{package_data → _package_data}/base_project/seeds/seed_categories.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/seeds/seed_subcategories.csv +0 -0
- /squirrels/{package_data → _package_data}/base_project/seeds/seed_subcategories.yml +0 -0
- /squirrels/{package_data → _package_data}/base_project/squirrels.yml.j2 +0 -0
- /squirrels/{package_data → _package_data}/base_project/tmp/.gitignore +0 -0
- {squirrels-0.5.0b2.dist-info → squirrels-0.5.0b3.dist-info}/WHEEL +0 -0
- {squirrels-0.5.0b2.dist-info → squirrels-0.5.0b3.dist-info}/entry_points.txt +0 -0
- {squirrels-0.5.0b2.dist-info → squirrels-0.5.0b3.dist-info}/licenses/LICENSE +0 -0
squirrels/types.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from ._data_sources import DataSource
|
|
2
|
+
|
|
3
|
+
from ._parameter_options import ParameterOption
|
|
4
|
+
|
|
5
|
+
from ._parameters import Parameter, TextValue
|
|
6
|
+
|
|
7
|
+
from ._auth import BaseUser
|
|
8
|
+
|
|
9
|
+
from ._dataset_types import DatasetMetadata, DatasetResult
|
|
10
|
+
|
|
11
|
+
from ._dashboard_types import Dashboard
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: squirrels
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b3
|
|
4
4
|
Summary: Squirrels - API Framework for Data Analytics
|
|
5
5
|
Project-URL: Homepage, https://squirrels-analytics.github.io
|
|
6
6
|
Project-URL: Repository, https://github.com/squirrels-analytics/squirrels
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
dateutils/__init__.py,sha256=dq4VSlJ5ztaDPdvYBRAvXSyanT_CZif3I4O0YVmWfa8,277
|
|
2
|
+
dateutils/_enums.py,sha256=WBrnLqta_iMMhGMEn24cCO1Vlr7bST0E8oEfAL3z0P8,373
|
|
3
|
+
dateutils/_implementation.py,sha256=PVJAdNolDdTpCZXwvokKoMIZzTSNpCUvZlVLWpMeSho,15173
|
|
4
|
+
dateutils/types.py,sha256=xcRwBoftQi-uHM1tlVTW5xgN84qdrqCo5tQT7A34S8Y,124
|
|
5
|
+
squirrels/__init__.py,sha256=7n-Wci_BSeE7SEY703WYqsBhJ2Ix49AKIcRq3rXb4QI,267
|
|
6
|
+
squirrels/_api_response_models.py,sha256=fQWjEBGAyy8KbkaY4jjOKvxhEcvQPU1bF2dJRTVTRc4,13601
|
|
7
|
+
squirrels/_api_server.py,sha256=iODEImWZo7NPekubYYRFXtVxMHobry0JACLDMFPTJAk,51208
|
|
8
|
+
squirrels/_auth.py,sha256=u3ISed2yavktOseN9rf5uXcPupfS4pK6rlC60RvyrgI,19305
|
|
9
|
+
squirrels/_command_line.py,sha256=ZB7cTJabWiYEV6tFi1l87M-w468LJ-DV7TNgQ_bqFbY,11151
|
|
10
|
+
squirrels/_connection_set.py,sha256=170NqnDgAisseTY4Iqzw79CZeT3oMIdUNuz3HLHZSGM,4009
|
|
11
|
+
squirrels/_constants.py,sha256=ddKMtnBAzUNuXHT4zT63oo1OpWy9LPXakDeLduikM6Q,3127
|
|
12
|
+
squirrels/_dashboard_types.py,sha256=g27ET5CnM_4IvxdhtGBjaRUM4MeK1kDsIfcp78AIYFE,1950
|
|
13
|
+
squirrels/_dashboards_io.py,sha256=bWgXdqTNV57x3zlptmFnG_RX5s1zO-TV2CvrQpcCTs8,3001
|
|
14
|
+
squirrels/_data_sources.py,sha256=W1aUAHkkjPpBRjZGBrc9RJIxEwICfnzB8HAyknCoZ3E,25988
|
|
15
|
+
squirrels/_dataset_types.py,sha256=wZvvRs4U1Hva_iyoFosAAu76S1yfv1Cd5SX3UMIw2PA,2838
|
|
16
|
+
squirrels/_exceptions.py,sha256=ny_-lS-V-G4ss7XT98cg83kl2KWZfP-K1plkgK2ElSg,2505
|
|
17
|
+
squirrels/_initializer.py,sha256=bJ0AeFIHYIYVT6o_kw5oWQJ9Qm4-n1RVNk3iYi2qbH0,14270
|
|
18
|
+
squirrels/_manifest.py,sha256=ag902b0SNbra6XrBzkaKizmJGwRgFKPjEjtnkJgfFio,10232
|
|
19
|
+
squirrels/_model_builder.py,sha256=fdoBcbbDpQaSTApV0mHKbq3yFe5xrr-TggdehEx8xE0,5063
|
|
20
|
+
squirrels/_model_configs.py,sha256=eJne5L-QLv42s7uodUOOASMRn1NbzGbiBmwMllkO5C4,3303
|
|
21
|
+
squirrels/_model_queries.py,sha256=mvx3r0nps8rBGjmxP_SaGjDmKsjh5CBWQ6uAWxX1LnU,1088
|
|
22
|
+
squirrels/_models.py,sha256=pP_NuYtBj8pmC--3BpNp6cVTxfkCUkZf19sB2v817Bg,49721
|
|
23
|
+
squirrels/_package_loader.py,sha256=xcIur5Z38OWd-OVjsueFstVV567zlkK9UBnLS4NawJY,1158
|
|
24
|
+
squirrels/_parameter_configs.py,sha256=GwKtuZJIMIsGx2d1bWlluqw3FkwIRv7nzekYzMQN4zg,23950
|
|
25
|
+
squirrels/_parameter_options.py,sha256=cWYKNoBUopHq6VfaeBu-nN2V0_IY3OgYpmYhKODNCew,16956
|
|
26
|
+
squirrels/_parameter_sets.py,sha256=K_4HKu2keC1-EvaOSBS9PRDRjooicqfTz_NMk1ZqqRs,9823
|
|
27
|
+
squirrels/_parameters.py,sha256=Bg3MqgkBb-QjtEIgBwA35730cOM3KCvq0_qFz-HZaZw,55942
|
|
28
|
+
squirrels/_project.py,sha256=3RnBZVRJtZasuZ-KqIqCM5vOmBXtQr4_FTqrvFp5n5w,29307
|
|
29
|
+
squirrels/_py_module.py,sha256=LgILTjMx3jyb92o8Y35ezpntuk6u6ezYVGAICKhUSUM,2622
|
|
30
|
+
squirrels/_seeds.py,sha256=yyIYp4bn9Sg6lhgvsOYIJQHIpPbvLNsyGHVfswEyVd8,2225
|
|
31
|
+
squirrels/_sources.py,sha256=j5mY_EtA5cxoHwtk8RwTVHO74hleik2lS7mF9gVnG_A,4840
|
|
32
|
+
squirrels/_utils.py,sha256=A2_zBxdKKf-HmwlI6vdsS6VMrefDF1km9TBuwnOG-ME,12279
|
|
33
|
+
squirrels/_version.py,sha256=M8aFbJ4vlAi3Sk9b7leRuEfkNBjkkX5S_F9lA4h8GK4,105
|
|
34
|
+
squirrels/arguments.py,sha256=Sg8m5_LYrL4IMb7fzZGmyNceA2vQMD7fiu0cXNir_V4,165
|
|
35
|
+
squirrels/connections.py,sha256=dpjR00DjLiPfF0iz9HfL9PyjWYtYQq67zk2LyT2bnhg,64
|
|
36
|
+
squirrels/dashboards.py,sha256=hPpuG4xJIZdY7OQFcO_CdO630KCSgLzHdMSsGjlpt5U,57
|
|
37
|
+
squirrels/data_sources.py,sha256=6a4E1m-Zcx-o2SERwKJiz8n6LFsI2CQ5MbmDwKhVq1o,170
|
|
38
|
+
squirrels/parameter_options.py,sha256=TmvoESS1BSPx-73bNzo6W0bSztj7-ye0_vssmii0cBk,205
|
|
39
|
+
squirrels/parameters.py,sha256=7Go5jetD3J7NDrkk2a_7ExxJv0mT4rwo1B9sAkuxPPg,195
|
|
40
|
+
squirrels/types.py,sha256=xhCOlIxXOERG1Th_jTSE6yYJvFMNeATdZbqRFVsEhBg,263
|
|
41
|
+
squirrels/_arguments/_init_time_args.py,sha256=_XfZjsqP9GWhJYppnokRAAFXO1mSqf1mUcKG0KgWk7o,3448
|
|
42
|
+
squirrels/_arguments/_run_time_args.py,sha256=ppakg7XXnhgIkycingldxcaDqXtBkgpfyMpiFhAYK9Y,5017
|
|
43
|
+
squirrels/_package_data/base_project/.env,sha256=3Tuk3SJl7RNMebm8P0jocqB-Ox91aW09Zreq8QjyUJ4,1026
|
|
44
|
+
squirrels/_package_data/base_project/.env.example,sha256=dS5ZO_kyMT3GdZbj6nfiK9PzkvwGfse9-UiYkvrh7ys,1078
|
|
45
|
+
squirrels/_package_data/base_project/connections.yml,sha256=qZxh7OuI2xqf2cFKwpMo5TONrJXGVzQ7YfcWh4Go7Oo,1011
|
|
46
|
+
squirrels/_package_data/base_project/duckdb_init.sql,sha256=iwKDoHbKhOEMe-Pu_sX5a9OauCgqxfZLD70S7RduBrE,196
|
|
47
|
+
squirrels/_package_data/base_project/gitignore,sha256=B9OEkQ_j9fZGA2IAyVUvXeylxpya-AUwzLzqzMN4Bfc,155
|
|
48
|
+
squirrels/_package_data/base_project/parameters.yml,sha256=lws8lblJjyC6apNP-5fhvxlShTKs6UqBzvl3dO_0Zw8,6908
|
|
49
|
+
squirrels/_package_data/base_project/squirrels.yml.j2,sha256=j3X3w-rQNP25rSo9Nye8roOUJV98etlpqfsD_zHwxTo,2673
|
|
50
|
+
squirrels/_package_data/base_project/assets/expenses.db,sha256=aO0QdApW9ad8LRc73MW1o3eimryzmOAH5vz9Vc3dWK0,77824
|
|
51
|
+
squirrels/_package_data/base_project/assets/weather.db,sha256=dsHPO36gQdZ4ULAA726Hg3jp8a1dCdig1DhrGg8wTeg,86016
|
|
52
|
+
squirrels/_package_data/base_project/dashboards/dashboard_example.py,sha256=jd6Sjs69QK4zBJlRnKaloati1cU5Oby1Pzg9bUxY0ZY,1637
|
|
53
|
+
squirrels/_package_data/base_project/dashboards/dashboard_example.yml,sha256=fIm56M3J1eWp9_zDcc5R04pSLbHgdjm2X3XZgpB0SaQ,417
|
|
54
|
+
squirrels/_package_data/base_project/docker/.dockerignore,sha256=IN0ZmxwLdmYlw6I2ziTdzXkTbZWCUyV4kfUI9_lDz-A,201
|
|
55
|
+
squirrels/_package_data/base_project/docker/Dockerfile,sha256=DBOfPajd7ikNr1Qg08TcQmQmWDYamlxoDv7u6FSWElE,470
|
|
56
|
+
squirrels/_package_data/base_project/docker/compose.yml,sha256=xMAjfJeNVv49ypMGxR8bG27P5JSbPTNMR7UeGTHGyeA,105
|
|
57
|
+
squirrels/_package_data/base_project/macros/macros_example.sql,sha256=kJMAxL9ihCd-ULPOfHkqt8TDIMcH6QAOFFw89VplGL0,508
|
|
58
|
+
squirrels/_package_data/base_project/models/sources.yml,sha256=Miujhj5QRnbN1Q6BkQyeyX8FZAROPDPLWzVgdsdZy9o,1890
|
|
59
|
+
squirrels/_package_data/base_project/models/builds/build_example.py,sha256=QqNicirKK_JXn44QGrp48Ods5iGfAnoD_PZN5u-YLzQ,1022
|
|
60
|
+
squirrels/_package_data/base_project/models/builds/build_example.sql,sha256=52tqAIzFWJgX13CP4HNeBd5BFy7Z929Z0XxfLgGKthM,508
|
|
61
|
+
squirrels/_package_data/base_project/models/builds/build_example.yml,sha256=kUd6j5u8qU6UD294AowPBHFOb8yYDA_dxWlCIBrPl90,1407
|
|
62
|
+
squirrels/_package_data/base_project/models/dbviews/dbview_example.sql,sha256=RMET1ni2qeEFysxy3lSFHQOxYkfMHvs6G3JUzPhfklU,268
|
|
63
|
+
squirrels/_package_data/base_project/models/dbviews/dbview_example.yml,sha256=BFTGdBe7OcyNWKjBh7IhWgmfFgG3nT4toCR3XG5ZgLI,947
|
|
64
|
+
squirrels/_package_data/base_project/models/federates/federate_example.py,sha256=c3fJvY9ChSSt-Mg-ddwwOwUmnTzQ1_qfYldLTOduC7s,1544
|
|
65
|
+
squirrels/_package_data/base_project/models/federates/federate_example.sql,sha256=Otda657dASjQUGk5Wbh2P18gcSBIpk8d3VDrgD6vBvA,674
|
|
66
|
+
squirrels/_package_data/base_project/models/federates/federate_example.yml,sha256=FpSVZV7xNSH5iUAXMkyd_jynFxWryutz5Izlgsq3aP0,2279
|
|
67
|
+
squirrels/_package_data/base_project/pyconfigs/connections.py,sha256=IRL9D2HG9pdwp12S896b0Q-hKnFfVck8we1q5sifX10,601
|
|
68
|
+
squirrels/_package_data/base_project/pyconfigs/context.py,sha256=8zsQ0tf0EhfeRDPwK7ANNaJWAubT3AYVCzcdaOz0xwY,3670
|
|
69
|
+
squirrels/_package_data/base_project/pyconfigs/parameters.py,sha256=B3AdnzJzpK5BC_fADl7og_hsmejAYNqgjpQO-4eFYXk,5355
|
|
70
|
+
squirrels/_package_data/base_project/pyconfigs/user.py,sha256=qP0dpptza-xBBZKxN3-KBfaDwaD5ZUGhUBqU8WqBNXk,855
|
|
71
|
+
squirrels/_package_data/base_project/seeds/seed_categories.csv,sha256=jppjf1nOIxy7-bi5lJn5CVqmnLfJHHq0ABgp6UqbXnw,104
|
|
72
|
+
squirrels/_package_data/base_project/seeds/seed_categories.yml,sha256=NZ4BVvYYCEq6OnjRLrE_WOMhYsW0BQhRPWOgUchzdp4,435
|
|
73
|
+
squirrels/_package_data/base_project/seeds/seed_subcategories.csv,sha256=Tta1oIgnc2nukNMDlUkIErRKNH_8YT5EPp1A2kQKcow,327
|
|
74
|
+
squirrels/_package_data/base_project/seeds/seed_subcategories.yml,sha256=QTgw8Eld-p6Kntf53FyXyn7-7vKYI7IOJVu-Lr-FHCY,583
|
|
75
|
+
squirrels/_package_data/base_project/tmp/.gitignore,sha256=XImoqcWvJY0C0L_TWCx1ljvqU7qh9fUTJmK4ACCmNFI,13
|
|
76
|
+
squirrels-0.5.0b3.dist-info/METADATA,sha256=PIrRC6cNC2UbwcUSK7eVbiiK9LM8l43_zX9qI5M66n4,4399
|
|
77
|
+
squirrels-0.5.0b3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
78
|
+
squirrels-0.5.0b3.dist-info/entry_points.txt,sha256=i6vgjhJ3o_cdSFYofFcNY9DFMPr4MIcuwnkskSTXfJc,95
|
|
79
|
+
squirrels-0.5.0b3.dist-info/licenses/LICENSE,sha256=qqERuumQtQVsMrEXvJHuecJvV2sLxbleEubd_Zk8dY8,11338
|
|
80
|
+
squirrels-0.5.0b3.dist-info/RECORD,,
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{%- macro date_and_amount_filters(use_from_range) -%}
|
|
2
|
-
|
|
3
|
-
{%- if use_from_range -%}
|
|
4
|
-
date >= {{ ctx.start_date_from_range }}
|
|
5
|
-
AND date <= {{ ctx.end_date_from_range }}
|
|
6
|
-
AND amount >= {{ ctx.min_amount_from_range }}
|
|
7
|
-
AND amount <= {{ ctx.max_amount_from_range }}
|
|
8
|
-
{%- else -%}
|
|
9
|
-
date >= {{ ctx.start_date }}
|
|
10
|
-
AND date <= {{ ctx.end_date }}
|
|
11
|
-
AND amount >= {{ ctx.min_amount }}
|
|
12
|
-
AND amount <= {{ ctx.max_amount }}
|
|
13
|
-
{%- endif -%}
|
|
14
|
-
|
|
15
|
-
{%- endmacro -%}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from squirrels import ModelArgs, parameters as p
|
|
2
|
-
import polars as pl, pandas as pd
|
|
3
|
-
|
|
4
|
-
def dequote(value: str) -> str:
|
|
5
|
-
return value[1:-1]
|
|
6
|
-
|
|
7
|
-
def joined_str_to_list(value: str) -> list[str]:
|
|
8
|
-
return [dequote(category) for category in str(value).split(",")]
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def main(sqrl: ModelArgs) -> pl.LazyFrame | pl.DataFrame | pd.DataFrame:
|
|
12
|
-
"""
|
|
13
|
-
Create federated models by joining/processing dependent models (sources, seeds, builds, dbviews, other federates, etc.) to
|
|
14
|
-
form a new Python DataFrame (using polars LazyFrame, polars DataFrame, or pandas DataFrame).
|
|
15
|
-
"""
|
|
16
|
-
df = sqrl.ref("build_example")
|
|
17
|
-
|
|
18
|
-
df = df.filter(
|
|
19
|
-
(pl.col("amount") >= sqrl.ctx["min_amount_from_range"]) &
|
|
20
|
-
(pl.col("amount") <= sqrl.ctx["max_amount_from_range"]) &
|
|
21
|
-
(pl.col("date") >= dequote(sqrl.ctx["start_date_from_range"])) &
|
|
22
|
-
(pl.col("date") <= dequote(sqrl.ctx["end_date_from_range"]))
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
if sqrl.ctx["has_categories"]:
|
|
26
|
-
categories_list = joined_str_to_list(sqrl.ctx["categories"])
|
|
27
|
-
df = df.filter(pl.col("category_id").is_in(categories_list))
|
|
28
|
-
|
|
29
|
-
if sqrl.ctx["has_subcategories"]:
|
|
30
|
-
subcategories_list = joined_str_to_list(sqrl.ctx["subcategories"])
|
|
31
|
-
df = df.filter(pl.col("subcategory_id").is_in(subcategories_list))
|
|
32
|
-
|
|
33
|
-
dimension_cols = sqrl.ctx["group_by_cols_list"]
|
|
34
|
-
df = df.group_by(dimension_cols).agg(
|
|
35
|
-
pl.sum("amount").cast(pl.Decimal(precision=15, scale=2)).alias("total_amount")
|
|
36
|
-
)
|
|
37
|
-
df = df.sort(dimension_cols, descending=True)
|
|
38
|
-
|
|
39
|
-
if sqrl.param_exists("limit"):
|
|
40
|
-
assert isinstance(limit := sqrl.prms["limit"], p.NumberParameter)
|
|
41
|
-
df = df.limit(int(limit.get_selected_value()))
|
|
42
|
-
|
|
43
|
-
df = df.select(*dimension_cols, "total_amount")
|
|
44
|
-
return df.rename(sqrl.ctx["rename_dict"])
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{# DuckDB dialect #}
|
|
2
|
-
|
|
3
|
-
SELECT {{ ctx.select_dim_cols }}
|
|
4
|
-
, CAST(SUM(amount) AS DECIMAL(15, 2)) as total_amount
|
|
5
|
-
|
|
6
|
-
{# ref() can be used on a sources, seeds, builds, dbviews, or other federate models -#}
|
|
7
|
-
FROM {{ ref("build_example") }} AS a
|
|
8
|
-
|
|
9
|
-
WHERE {{ date_and_amount_filters(use_from_range=true) }}
|
|
10
|
-
{% if ctx.has_categories -%} AND category_id IN ({{ ctx.categories }}) {%- endif %}
|
|
11
|
-
{% if ctx.has_subcategories -%} AND subcategory_id IN ({{ ctx.subcategories }}) {%- endif %}
|
|
12
|
-
|
|
13
|
-
GROUP BY {{ ctx.group_by_cols }}
|
|
14
|
-
|
|
15
|
-
ORDER BY {{ ctx.order_by_cols }}
|
|
16
|
-
|
|
17
|
-
{{ ctx.limit_clause }}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
from typing import Any
|
|
2
|
-
from squirrels import ConnectionsArgs, ConnectionProperties, ConnectionType
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
def main(connections: dict[str, ConnectionProperties | Any], sqrl: ConnectionsArgs) -> None:
|
|
6
|
-
"""
|
|
7
|
-
Define sqlalchemy engines by adding them to the "connections" dictionary
|
|
8
|
-
"""
|
|
9
|
-
## SQLAlchemy URL for a connection engine
|
|
10
|
-
conn_str: str = sqrl.env_vars["SQLITE_URI"].format(project_path=sqrl.project_path)
|
|
11
|
-
|
|
12
|
-
## Assigning names to connection engines
|
|
13
|
-
connections["default"] = ConnectionProperties(label="SQLite Expenses Database", type=ConnectionType.SQLALCHEMY, uri=conn_str)
|
|
14
|
-
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
dateutils/__init__.py,sha256=7HDDMpT26jreIkDecQo_-CGPwmhMBwMsCyLKuWc4EPY,16673
|
|
2
|
-
squirrels/__init__.py,sha256=Y62ldkfs81jsKcetWLDw_1a98gwALx9Ww1b_rLsBpbs,1010
|
|
3
|
-
squirrels/_api_response_models.py,sha256=fQWjEBGAyy8KbkaY4jjOKvxhEcvQPU1bF2dJRTVTRc4,13601
|
|
4
|
-
squirrels/_api_server.py,sha256=1jhUr7GwwwD0O5dqQOX11uuU3Ea-zKXheeeQM0cLrDE,51181
|
|
5
|
-
squirrels/_auth.py,sha256=XCC9i-Z7PaU74u-fqR6_d_eoc9qVh-5nC0CdYp4Svvg,19254
|
|
6
|
-
squirrels/_command_line.py,sha256=ZB7cTJabWiYEV6tFi1l87M-w468LJ-DV7TNgQ_bqFbY,11151
|
|
7
|
-
squirrels/_connection_set.py,sha256=ZxnNAj9Cu_5ba0uwi6v_ItH6nurFnONrPgB47_GE-3I,3987
|
|
8
|
-
squirrels/_constants.py,sha256=RDoUo4HtiVIQXatVdLoMXaGs1pkNER-Kgnmgs4FUx_Y,3126
|
|
9
|
-
squirrels/_dashboards_io.py,sha256=PPZGB6TpPYxaWJ2pJMj0cZNT9Vo14QV9w-1idLb_eaE,2993
|
|
10
|
-
squirrels/_exceptions.py,sha256=OOywX0UhX-KnvC8MScl2E6KYq3bzLq-PSqOpF7NbUvc,2481
|
|
11
|
-
squirrels/_initializer.py,sha256=-aQHgpGADfJDfMUW1ToJR_4YJgglIAHJ2zH457h3rzY,14100
|
|
12
|
-
squirrels/_manifest.py,sha256=SrnGj_dd6L1O5Ygfr_B4rvxv_zx9iZap8bSfHTjhx4o,10208
|
|
13
|
-
squirrels/_model_builder.py,sha256=fdoBcbbDpQaSTApV0mHKbq3yFe5xrr-TggdehEx8xE0,5063
|
|
14
|
-
squirrels/_model_configs.py,sha256=90ops65jN_iEeZjdR6VzfV0AGbTro6m4XEzbo5Mlf6Y,3299
|
|
15
|
-
squirrels/_model_queries.py,sha256=xzfkPvHMq-5m22pnb-Zd045gRTdWe7UP6RmS9AZ-LRk,1086
|
|
16
|
-
squirrels/_models.py,sha256=C99VZVQsdcLYRBxNasOj95o8LNJcVxW5AqcxxYo0mIQ,48796
|
|
17
|
-
squirrels/_package_loader.py,sha256=xcIur5Z38OWd-OVjsueFstVV567zlkK9UBnLS4NawJY,1158
|
|
18
|
-
squirrels/_parameter_configs.py,sha256=sWQEJ7Hr6s1TE91H6qZsUO7uUAZqlS0z2Af3ZNoqc7I,23981
|
|
19
|
-
squirrels/_parameter_sets.py,sha256=aE6IDELpLgytjt_G7eI9oTEMgDCgkb71dxATBsrnC38,9837
|
|
20
|
-
squirrels/_project.py,sha256=3Ve6waHnRh92tu-KJSy5GJ5imaIf4LqBQcq_dlokAJs,28314
|
|
21
|
-
squirrels/_py_module.py,sha256=LgILTjMx3jyb92o8Y35ezpntuk6u6ezYVGAICKhUSUM,2622
|
|
22
|
-
squirrels/_seeds.py,sha256=yyIYp4bn9Sg6lhgvsOYIJQHIpPbvLNsyGHVfswEyVd8,2225
|
|
23
|
-
squirrels/_sources.py,sha256=j5mY_EtA5cxoHwtk8RwTVHO74hleik2lS7mF9gVnG_A,4840
|
|
24
|
-
squirrels/_utils.py,sha256=dOGlXjMY_Ad-A5TCVPyIeW81738cK4Ytz2Wghv2irPU,12138
|
|
25
|
-
squirrels/_version.py,sha256=M8aFbJ4vlAi3Sk9b7leRuEfkNBjkkX5S_F9lA4h8GK4,105
|
|
26
|
-
squirrels/dashboards.py,sha256=pekv_ERwoHHpBLYjIXSJ7Z8X7suWmjyex_whpCpZY60,1974
|
|
27
|
-
squirrels/data_sources.py,sha256=W3wzXyC7wGVnz49JkWYZQxBqNuViC_QhulM90KEuLCY,26088
|
|
28
|
-
squirrels/dataset_result.py,sha256=wZvvRs4U1Hva_iyoFosAAu76S1yfv1Cd5SX3UMIw2PA,2838
|
|
29
|
-
squirrels/parameter_options.py,sha256=cWYKNoBUopHq6VfaeBu-nN2V0_IY3OgYpmYhKODNCew,16956
|
|
30
|
-
squirrels/parameters.py,sha256=kcMQ5-GEQ5lA9Zs_-R21n2Hq5_gULCygQy-Rf1FJK-4,56001
|
|
31
|
-
squirrels/arguments/init_time_args.py,sha256=wl9PrVr3iHsMuZQEfrUj_gyzjdSqMTdQbpYUPjWQEsc,3477
|
|
32
|
-
squirrels/arguments/run_time_args.py,sha256=3L8lQvICJPdH75J1rAqqeupM8raUIw6VedEHJL8nT0c,5705
|
|
33
|
-
squirrels/package_data/base_project/.env,sha256=3Tuk3SJl7RNMebm8P0jocqB-Ox91aW09Zreq8QjyUJ4,1026
|
|
34
|
-
squirrels/package_data/base_project/.env.example,sha256=dS5ZO_kyMT3GdZbj6nfiK9PzkvwGfse9-UiYkvrh7ys,1078
|
|
35
|
-
squirrels/package_data/base_project/.gitignore,sha256=B9OEkQ_j9fZGA2IAyVUvXeylxpya-AUwzLzqzMN4Bfc,155
|
|
36
|
-
squirrels/package_data/base_project/connections.yml,sha256=qZxh7OuI2xqf2cFKwpMo5TONrJXGVzQ7YfcWh4Go7Oo,1011
|
|
37
|
-
squirrels/package_data/base_project/duckdb_init.sql,sha256=iwKDoHbKhOEMe-Pu_sX5a9OauCgqxfZLD70S7RduBrE,196
|
|
38
|
-
squirrels/package_data/base_project/parameters.yml,sha256=McvLXWWI3DoYqTUPGBFo9ArsGJOCseh9mdzO9TxiJ8I,6755
|
|
39
|
-
squirrels/package_data/base_project/squirrels.yml.j2,sha256=j3X3w-rQNP25rSo9Nye8roOUJV98etlpqfsD_zHwxTo,2673
|
|
40
|
-
squirrels/package_data/base_project/assets/expenses.db,sha256=aO0QdApW9ad8LRc73MW1o3eimryzmOAH5vz9Vc3dWK0,77824
|
|
41
|
-
squirrels/package_data/base_project/assets/weather.db,sha256=dsHPO36gQdZ4ULAA726Hg3jp8a1dCdig1DhrGg8wTeg,86016
|
|
42
|
-
squirrels/package_data/base_project/dashboards/dashboard_example.py,sha256=8hg5MIrmeD5OpiKb7x2TCRkAsc4Rg36lf6I4KpJg7Os,1621
|
|
43
|
-
squirrels/package_data/base_project/dashboards/dashboard_example.yml,sha256=mxC1Zmt33TpjpSCEFPAkK7nOcVbSJBhbWh7wMGeHav0,410
|
|
44
|
-
squirrels/package_data/base_project/docker/.dockerignore,sha256=IN0ZmxwLdmYlw6I2ziTdzXkTbZWCUyV4kfUI9_lDz-A,201
|
|
45
|
-
squirrels/package_data/base_project/docker/Dockerfile,sha256=DBOfPajd7ikNr1Qg08TcQmQmWDYamlxoDv7u6FSWElE,470
|
|
46
|
-
squirrels/package_data/base_project/docker/compose.yml,sha256=xMAjfJeNVv49ypMGxR8bG27P5JSbPTNMR7UeGTHGyeA,105
|
|
47
|
-
squirrels/package_data/base_project/macros/macros_example.sql,sha256=oxC6TZmoqgTiXEjosQbiKwUV2-mAGbINmNoV36V1-PI,510
|
|
48
|
-
squirrels/package_data/base_project/models/sources.yml,sha256=Miujhj5QRnbN1Q6BkQyeyX8FZAROPDPLWzVgdsdZy9o,1890
|
|
49
|
-
squirrels/package_data/base_project/models/builds/build_example.py,sha256=SUfWN7E8lZJYl-Zi2c-KoLADha4S5sw4T6cVhhozLaY,1014
|
|
50
|
-
squirrels/package_data/base_project/models/builds/build_example.sql,sha256=UNpgvybUV7sVK-KN2h-ULDyDb4uwN3nYNGZUcBLBtrU,506
|
|
51
|
-
squirrels/package_data/base_project/models/builds/build_example.yml,sha256=kUd6j5u8qU6UD294AowPBHFOb8yYDA_dxWlCIBrPl90,1407
|
|
52
|
-
squirrels/package_data/base_project/models/dbviews/dbview_example.sql,sha256=hGj7rNJZzgEKGxqzwjmkCAdL-0hOh4U7pIJCyz2SYHk,266
|
|
53
|
-
squirrels/package_data/base_project/models/dbviews/dbview_example.yml,sha256=BFTGdBe7OcyNWKjBh7IhWgmfFgG3nT4toCR3XG5ZgLI,947
|
|
54
|
-
squirrels/package_data/base_project/models/federates/federate_example.py,sha256=g30cVukwI9UIypZR6KOU1z0KWLwx2kGIkRHhrdmeZq8,1774
|
|
55
|
-
squirrels/package_data/base_project/models/federates/federate_example.sql,sha256=A_-ts4Qw5eO-btnrmGbagv3MWJ0TUj_hBS5P7jaCNP4,574
|
|
56
|
-
squirrels/package_data/base_project/models/federates/federate_example.yml,sha256=xhNmc4nT5zyc7J6tr_xSq_lQl3RP6pg4zUuxTPpaEXE,2254
|
|
57
|
-
squirrels/package_data/base_project/pyconfigs/connections.py,sha256=zueK24yEuWt1x_xcR0Q-ikXGe2dXsS4wwh3qlzKG39Q,600
|
|
58
|
-
squirrels/package_data/base_project/pyconfigs/context.py,sha256=9QuvSc7_oAipsIaaeT06bMnjGtUlpKdxmu5xnofE__Y,3717
|
|
59
|
-
squirrels/package_data/base_project/pyconfigs/parameters.py,sha256=VS6fC5H0JSY_bubnDb4iawOI5niEGESF3YFDQ9gv1co,5053
|
|
60
|
-
squirrels/package_data/base_project/pyconfigs/user.py,sha256=L-dj3skPFM2B46g1NgXhX7fgCB7MzLLhWcwMAan98xE,851
|
|
61
|
-
squirrels/package_data/base_project/seeds/seed_categories.csv,sha256=jppjf1nOIxy7-bi5lJn5CVqmnLfJHHq0ABgp6UqbXnw,104
|
|
62
|
-
squirrels/package_data/base_project/seeds/seed_categories.yml,sha256=NZ4BVvYYCEq6OnjRLrE_WOMhYsW0BQhRPWOgUchzdp4,435
|
|
63
|
-
squirrels/package_data/base_project/seeds/seed_subcategories.csv,sha256=Tta1oIgnc2nukNMDlUkIErRKNH_8YT5EPp1A2kQKcow,327
|
|
64
|
-
squirrels/package_data/base_project/seeds/seed_subcategories.yml,sha256=QTgw8Eld-p6Kntf53FyXyn7-7vKYI7IOJVu-Lr-FHCY,583
|
|
65
|
-
squirrels/package_data/base_project/tmp/.gitignore,sha256=XImoqcWvJY0C0L_TWCx1ljvqU7qh9fUTJmK4ACCmNFI,13
|
|
66
|
-
squirrels-0.5.0b2.dist-info/METADATA,sha256=JTh_jdSvir5R6fCBIwjYJ_nRD6OfKwWnti-o2di3UXY,4399
|
|
67
|
-
squirrels-0.5.0b2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
68
|
-
squirrels-0.5.0b2.dist-info/entry_points.txt,sha256=i6vgjhJ3o_cdSFYofFcNY9DFMPr4MIcuwnkskSTXfJc,95
|
|
69
|
-
squirrels-0.5.0b2.dist-info/licenses/LICENSE,sha256=qqERuumQtQVsMrEXvJHuecJvV2sLxbleEubd_Zk8dY8,11338
|
|
70
|
-
squirrels-0.5.0b2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|