squirrels 0.5.0b3__py3-none-any.whl → 0.6.0.post0__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.
Files changed (93) hide show
  1. squirrels/__init__.py +4 -0
  2. squirrels/_api_routes/__init__.py +5 -0
  3. squirrels/_api_routes/auth.py +337 -0
  4. squirrels/_api_routes/base.py +196 -0
  5. squirrels/_api_routes/dashboards.py +156 -0
  6. squirrels/_api_routes/data_management.py +148 -0
  7. squirrels/_api_routes/datasets.py +220 -0
  8. squirrels/_api_routes/project.py +289 -0
  9. squirrels/_api_server.py +440 -792
  10. squirrels/_arguments/__init__.py +0 -0
  11. squirrels/_arguments/{_init_time_args.py → init_time_args.py} +23 -43
  12. squirrels/_arguments/{_run_time_args.py → run_time_args.py} +32 -68
  13. squirrels/_auth.py +590 -264
  14. squirrels/_command_line.py +130 -58
  15. squirrels/_compile_prompts.py +147 -0
  16. squirrels/_connection_set.py +16 -15
  17. squirrels/_constants.py +36 -11
  18. squirrels/_dashboards.py +179 -0
  19. squirrels/_data_sources.py +40 -34
  20. squirrels/_dataset_types.py +16 -11
  21. squirrels/_env_vars.py +209 -0
  22. squirrels/_exceptions.py +9 -37
  23. squirrels/_http_error_responses.py +52 -0
  24. squirrels/_initializer.py +7 -6
  25. squirrels/_logging.py +121 -0
  26. squirrels/_manifest.py +155 -77
  27. squirrels/_mcp_server.py +578 -0
  28. squirrels/_model_builder.py +11 -55
  29. squirrels/_model_configs.py +5 -5
  30. squirrels/_model_queries.py +1 -1
  31. squirrels/_models.py +276 -143
  32. squirrels/_package_data/base_project/.env +1 -24
  33. squirrels/_package_data/base_project/.env.example +31 -17
  34. squirrels/_package_data/base_project/connections.yml +4 -3
  35. squirrels/_package_data/base_project/dashboards/dashboard_example.py +13 -7
  36. squirrels/_package_data/base_project/dashboards/dashboard_example.yml +6 -6
  37. squirrels/_package_data/base_project/docker/Dockerfile +2 -2
  38. squirrels/_package_data/base_project/docker/compose.yml +1 -1
  39. squirrels/_package_data/base_project/duckdb_init.sql +1 -0
  40. squirrels/_package_data/base_project/models/builds/build_example.py +2 -2
  41. squirrels/_package_data/base_project/models/dbviews/dbview_example.sql +7 -2
  42. squirrels/_package_data/base_project/models/dbviews/dbview_example.yml +16 -10
  43. squirrels/_package_data/base_project/models/federates/federate_example.py +27 -17
  44. squirrels/_package_data/base_project/models/federates/federate_example.sql +3 -7
  45. squirrels/_package_data/base_project/models/federates/federate_example.yml +7 -7
  46. squirrels/_package_data/base_project/models/sources.yml +5 -6
  47. squirrels/_package_data/base_project/parameters.yml +24 -38
  48. squirrels/_package_data/base_project/pyconfigs/connections.py +8 -3
  49. squirrels/_package_data/base_project/pyconfigs/context.py +26 -14
  50. squirrels/_package_data/base_project/pyconfigs/parameters.py +124 -81
  51. squirrels/_package_data/base_project/pyconfigs/user.py +48 -15
  52. squirrels/_package_data/base_project/resources/public/.gitkeep +0 -0
  53. squirrels/_package_data/base_project/seeds/seed_categories.yml +1 -1
  54. squirrels/_package_data/base_project/seeds/seed_subcategories.yml +1 -1
  55. squirrels/_package_data/base_project/squirrels.yml.j2 +21 -31
  56. squirrels/_package_data/templates/login_successful.html +53 -0
  57. squirrels/_package_data/templates/squirrels_studio.html +22 -0
  58. squirrels/_parameter_configs.py +43 -22
  59. squirrels/_parameter_options.py +1 -1
  60. squirrels/_parameter_sets.py +41 -30
  61. squirrels/_parameters.py +560 -123
  62. squirrels/_project.py +487 -277
  63. squirrels/_py_module.py +71 -10
  64. squirrels/_request_context.py +33 -0
  65. squirrels/_schemas/__init__.py +0 -0
  66. squirrels/_schemas/auth_models.py +83 -0
  67. squirrels/_schemas/query_param_models.py +70 -0
  68. squirrels/_schemas/request_models.py +26 -0
  69. squirrels/_schemas/response_models.py +286 -0
  70. squirrels/_seeds.py +52 -13
  71. squirrels/_sources.py +29 -23
  72. squirrels/_utils.py +221 -42
  73. squirrels/_version.py +1 -3
  74. squirrels/arguments.py +7 -2
  75. squirrels/auth.py +4 -0
  76. squirrels/connections.py +2 -0
  77. squirrels/dashboards.py +3 -1
  78. squirrels/data_sources.py +6 -0
  79. squirrels/parameter_options.py +5 -0
  80. squirrels/parameters.py +5 -0
  81. squirrels/types.py +10 -3
  82. squirrels-0.6.0.post0.dist-info/METADATA +148 -0
  83. squirrels-0.6.0.post0.dist-info/RECORD +101 -0
  84. {squirrels-0.5.0b3.dist-info → squirrels-0.6.0.post0.dist-info}/WHEEL +1 -1
  85. squirrels/_api_response_models.py +0 -190
  86. squirrels/_dashboard_types.py +0 -82
  87. squirrels/_dashboards_io.py +0 -79
  88. squirrels-0.5.0b3.dist-info/METADATA +0 -110
  89. squirrels-0.5.0b3.dist-info/RECORD +0 -80
  90. /squirrels/_package_data/base_project/{assets → resources}/expenses.db +0 -0
  91. /squirrels/_package_data/base_project/{assets → resources}/weather.db +0 -0
  92. {squirrels-0.5.0b3.dist-info → squirrels-0.6.0.post0.dist-info}/entry_points.txt +0 -0
  93. {squirrels-0.5.0b3.dist-info → squirrels-0.6.0.post0.dist-info}/licenses/LICENSE +0 -0
@@ -1,110 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: squirrels
3
- Version: 0.5.0b3
4
- Summary: Squirrels - API Framework for Data Analytics
5
- Project-URL: Homepage, https://squirrels-analytics.github.io
6
- Project-URL: Repository, https://github.com/squirrels-analytics/squirrels
7
- Project-URL: Documentation, https://squirrels-analytics.github.io
8
- Author-email: Tim Huang <tim.yuting@hotmail.com>
9
- License-Expression: Apache-2.0
10
- License-File: LICENSE
11
- Classifier: Intended Audience :: Developers
12
- Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
13
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
- Classifier: Typing :: Typed
15
- Requires-Python: ~=3.10
16
- Requires-Dist: bcrypt<5,>=4.0.1
17
- Requires-Dist: cachetools<6,>=5.3.2
18
- Requires-Dist: duckdb<2,>=1.1.3
19
- Requires-Dist: fastapi<1,>=0.112.1
20
- Requires-Dist: gitpython<4,>=3.1.41
21
- Requires-Dist: inquirer<4,>=3.2.1
22
- Requires-Dist: jinja2<4,>=3.1.3
23
- Requires-Dist: libpass<2,>=1.9.0
24
- Requires-Dist: matplotlib<4,>=3.8.3
25
- Requires-Dist: networkx<4,>=3.2.1
26
- Requires-Dist: pandas<3,>=2.1.4
27
- Requires-Dist: polars<2,>=1.14.0
28
- Requires-Dist: pyarrow>=19.0.1
29
- Requires-Dist: pydantic<3,>=2.8.2
30
- Requires-Dist: pyjwt<3,>=2.8.0
31
- Requires-Dist: python-dotenv<2,>=1.0.1
32
- Requires-Dist: python-multipart<1,>=0.0.9
33
- Requires-Dist: pyyaml<7,>=6.0.1
34
- Requires-Dist: sqlalchemy<3,>=2.0.25
35
- Requires-Dist: sqlglot>=26.12.1
36
- Requires-Dist: uvicorn<1,>=0.30.6
37
- Description-Content-Type: text/markdown
38
-
39
- # Squirrels
40
-
41
- Squirrels is an API framework that lets you create REST APIs for dynamic data analytics!
42
-
43
- **Documentation**: <a href="https://squirrels-analytics.github.io/" target="_blank">https://squirrels-analytics.github.io/</a>
44
-
45
- **Source Code**: <a href="https://github.com/squirrels-analytics/squirrels" target="_blank">https://github.com/squirrels-analytics/squirrels</a>
46
-
47
- ## Table of Contents
48
-
49
- - [Main Features](#main-features)
50
- - [License](#license)
51
- - [Contributing to squirrels](#contributing-to-squirrels)
52
- - [Setup](#setup)
53
- - [Testing](#testing)
54
- - [Project Structure](#project-structure)
55
-
56
- ## Main Features
57
-
58
- Here are a few of the things that squirrels can do:
59
-
60
- - Connect to any database by specifying its SQLAlchemy url (in `squirrels.yml`) or by using its native connector library in python (in `connections.py`).
61
- - Configure API routes for datasets (in `squirrels.yml`) without writing code.
62
- - Configure parameter widgets (types include single-select, multi-select, date, number, etc.) for your datasets (in `parameters.py`).
63
- - Use Jinja SQL templates (just like dbt!) or python functions (that return a Python dataframe such as polars or pandas) to define dynamic query logic based on parameter selections.
64
- - Query multiple databases and join the results together in a final view in one API endpoint/dataset!
65
- - Test your API endpoints with Squirrels Studio or by a command line that generates rendered sql queries and results (for a given set of parameter selections).
66
- - Define User model (in `user.py`) and authorize privacy scope per dataset (in `squirrels.yml`). The user's attributes can even be used in your query logic!
67
-
68
- ## License
69
-
70
- Squirrels is released under the Apache 2.0 license.
71
-
72
- See the file LICENSE for more details.
73
-
74
- ## Contributing to squirrels
75
-
76
- The sections below describe how to set up your local environment for squirrels development and run unit tests. A high level overview of the project structure is also provided.
77
-
78
- ### Setup
79
-
80
- This project requires python version 3.10 or above to be installed. It also uses the python package manager `uv`. Information on setting up poetry can be found at: https://docs.astral.sh/uv/getting-started/installation/.
81
-
82
- Then, to install all dependencies in a virtual environment, run:
83
-
84
- ```bash
85
- uv sync
86
- ```
87
-
88
- And activate the virtual environment with:
89
-
90
- ```bash
91
- source .venv/bin/activate
92
- ```
93
-
94
- To confirm that the setup worked, run the following to show the help page for all squirrels CLI commands:
95
-
96
- ```bash
97
- sqrl -h
98
- ```
99
-
100
- ### Testing
101
-
102
- Run `uv run pytest`. Or if you have the virtual environment activated, simply run `pytest`.
103
-
104
- ### Project Structure
105
-
106
- From the root of the git repo, the source code can be found in the `squirrels` folder and unit tests can be found in the `tests` folder.
107
-
108
- To understand what a specific squirrels command is doing, start from the `_command_line.py` file as your entry point.
109
-
110
- The library version is maintained in both the `pyproject.toml` and the `squirrels/_version.py` files.
@@ -1,80 +0,0 @@
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,,