dsgrid-toolkit 0.2.0__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 dsgrid-toolkit might be problematic. Click here for more details.

Files changed (152) hide show
  1. dsgrid/__init__.py +22 -0
  2. dsgrid/api/__init__.py +0 -0
  3. dsgrid/api/api_manager.py +179 -0
  4. dsgrid/api/app.py +420 -0
  5. dsgrid/api/models.py +60 -0
  6. dsgrid/api/response_models.py +116 -0
  7. dsgrid/apps/__init__.py +0 -0
  8. dsgrid/apps/project_viewer/app.py +216 -0
  9. dsgrid/apps/registration_gui.py +444 -0
  10. dsgrid/chronify.py +22 -0
  11. dsgrid/cli/__init__.py +0 -0
  12. dsgrid/cli/common.py +120 -0
  13. dsgrid/cli/config.py +177 -0
  14. dsgrid/cli/download.py +13 -0
  15. dsgrid/cli/dsgrid.py +142 -0
  16. dsgrid/cli/dsgrid_admin.py +349 -0
  17. dsgrid/cli/install_notebooks.py +62 -0
  18. dsgrid/cli/query.py +711 -0
  19. dsgrid/cli/registry.py +1773 -0
  20. dsgrid/cloud/__init__.py +0 -0
  21. dsgrid/cloud/cloud_storage_interface.py +140 -0
  22. dsgrid/cloud/factory.py +31 -0
  23. dsgrid/cloud/fake_storage_interface.py +37 -0
  24. dsgrid/cloud/s3_storage_interface.py +156 -0
  25. dsgrid/common.py +35 -0
  26. dsgrid/config/__init__.py +0 -0
  27. dsgrid/config/annual_time_dimension_config.py +187 -0
  28. dsgrid/config/common.py +131 -0
  29. dsgrid/config/config_base.py +148 -0
  30. dsgrid/config/dataset_config.py +684 -0
  31. dsgrid/config/dataset_schema_handler_factory.py +41 -0
  32. dsgrid/config/date_time_dimension_config.py +108 -0
  33. dsgrid/config/dimension_config.py +54 -0
  34. dsgrid/config/dimension_config_factory.py +65 -0
  35. dsgrid/config/dimension_mapping_base.py +349 -0
  36. dsgrid/config/dimension_mappings_config.py +48 -0
  37. dsgrid/config/dimensions.py +775 -0
  38. dsgrid/config/dimensions_config.py +71 -0
  39. dsgrid/config/index_time_dimension_config.py +76 -0
  40. dsgrid/config/input_dataset_requirements.py +31 -0
  41. dsgrid/config/mapping_tables.py +209 -0
  42. dsgrid/config/noop_time_dimension_config.py +42 -0
  43. dsgrid/config/project_config.py +1457 -0
  44. dsgrid/config/registration_models.py +199 -0
  45. dsgrid/config/representative_period_time_dimension_config.py +194 -0
  46. dsgrid/config/simple_models.py +49 -0
  47. dsgrid/config/supplemental_dimension.py +29 -0
  48. dsgrid/config/time_dimension_base_config.py +200 -0
  49. dsgrid/data_models.py +155 -0
  50. dsgrid/dataset/__init__.py +0 -0
  51. dsgrid/dataset/dataset.py +123 -0
  52. dsgrid/dataset/dataset_expression_handler.py +86 -0
  53. dsgrid/dataset/dataset_mapping_manager.py +121 -0
  54. dsgrid/dataset/dataset_schema_handler_base.py +899 -0
  55. dsgrid/dataset/dataset_schema_handler_one_table.py +196 -0
  56. dsgrid/dataset/dataset_schema_handler_standard.py +303 -0
  57. dsgrid/dataset/growth_rates.py +162 -0
  58. dsgrid/dataset/models.py +44 -0
  59. dsgrid/dataset/table_format_handler_base.py +257 -0
  60. dsgrid/dataset/table_format_handler_factory.py +17 -0
  61. dsgrid/dataset/unpivoted_table.py +121 -0
  62. dsgrid/dimension/__init__.py +0 -0
  63. dsgrid/dimension/base_models.py +218 -0
  64. dsgrid/dimension/dimension_filters.py +308 -0
  65. dsgrid/dimension/standard.py +213 -0
  66. dsgrid/dimension/time.py +531 -0
  67. dsgrid/dimension/time_utils.py +88 -0
  68. dsgrid/dsgrid_rc.py +88 -0
  69. dsgrid/exceptions.py +105 -0
  70. dsgrid/filesystem/__init__.py +0 -0
  71. dsgrid/filesystem/cloud_filesystem.py +32 -0
  72. dsgrid/filesystem/factory.py +32 -0
  73. dsgrid/filesystem/filesystem_interface.py +136 -0
  74. dsgrid/filesystem/local_filesystem.py +74 -0
  75. dsgrid/filesystem/s3_filesystem.py +118 -0
  76. dsgrid/loggers.py +132 -0
  77. dsgrid/notebooks/connect_to_dsgrid_registry.ipynb +950 -0
  78. dsgrid/notebooks/registration.ipynb +48 -0
  79. dsgrid/notebooks/start_notebook.sh +11 -0
  80. dsgrid/project.py +451 -0
  81. dsgrid/query/__init__.py +0 -0
  82. dsgrid/query/dataset_mapping_plan.py +142 -0
  83. dsgrid/query/derived_dataset.py +384 -0
  84. dsgrid/query/models.py +726 -0
  85. dsgrid/query/query_context.py +287 -0
  86. dsgrid/query/query_submitter.py +847 -0
  87. dsgrid/query/report_factory.py +19 -0
  88. dsgrid/query/report_peak_load.py +70 -0
  89. dsgrid/query/reports_base.py +20 -0
  90. dsgrid/registry/__init__.py +0 -0
  91. dsgrid/registry/bulk_register.py +161 -0
  92. dsgrid/registry/common.py +287 -0
  93. dsgrid/registry/config_update_checker_base.py +63 -0
  94. dsgrid/registry/data_store_factory.py +34 -0
  95. dsgrid/registry/data_store_interface.py +69 -0
  96. dsgrid/registry/dataset_config_generator.py +156 -0
  97. dsgrid/registry/dataset_registry_manager.py +734 -0
  98. dsgrid/registry/dataset_update_checker.py +16 -0
  99. dsgrid/registry/dimension_mapping_registry_manager.py +575 -0
  100. dsgrid/registry/dimension_mapping_update_checker.py +16 -0
  101. dsgrid/registry/dimension_registry_manager.py +413 -0
  102. dsgrid/registry/dimension_update_checker.py +16 -0
  103. dsgrid/registry/duckdb_data_store.py +185 -0
  104. dsgrid/registry/filesystem_data_store.py +141 -0
  105. dsgrid/registry/filter_registry_manager.py +123 -0
  106. dsgrid/registry/project_config_generator.py +57 -0
  107. dsgrid/registry/project_registry_manager.py +1616 -0
  108. dsgrid/registry/project_update_checker.py +48 -0
  109. dsgrid/registry/registration_context.py +223 -0
  110. dsgrid/registry/registry_auto_updater.py +316 -0
  111. dsgrid/registry/registry_database.py +662 -0
  112. dsgrid/registry/registry_interface.py +446 -0
  113. dsgrid/registry/registry_manager.py +544 -0
  114. dsgrid/registry/registry_manager_base.py +367 -0
  115. dsgrid/registry/versioning.py +92 -0
  116. dsgrid/spark/__init__.py +0 -0
  117. dsgrid/spark/functions.py +545 -0
  118. dsgrid/spark/types.py +50 -0
  119. dsgrid/tests/__init__.py +0 -0
  120. dsgrid/tests/common.py +139 -0
  121. dsgrid/tests/make_us_data_registry.py +204 -0
  122. dsgrid/tests/register_derived_datasets.py +103 -0
  123. dsgrid/tests/utils.py +25 -0
  124. dsgrid/time/__init__.py +0 -0
  125. dsgrid/time/time_conversions.py +80 -0
  126. dsgrid/time/types.py +67 -0
  127. dsgrid/units/__init__.py +0 -0
  128. dsgrid/units/constants.py +113 -0
  129. dsgrid/units/convert.py +71 -0
  130. dsgrid/units/energy.py +145 -0
  131. dsgrid/units/power.py +87 -0
  132. dsgrid/utils/__init__.py +0 -0
  133. dsgrid/utils/dataset.py +612 -0
  134. dsgrid/utils/files.py +179 -0
  135. dsgrid/utils/filters.py +125 -0
  136. dsgrid/utils/id_remappings.py +100 -0
  137. dsgrid/utils/py_expression_eval/LICENSE +19 -0
  138. dsgrid/utils/py_expression_eval/README.md +8 -0
  139. dsgrid/utils/py_expression_eval/__init__.py +847 -0
  140. dsgrid/utils/py_expression_eval/tests.py +283 -0
  141. dsgrid/utils/run_command.py +70 -0
  142. dsgrid/utils/scratch_dir_context.py +64 -0
  143. dsgrid/utils/spark.py +918 -0
  144. dsgrid/utils/spark_partition.py +98 -0
  145. dsgrid/utils/timing.py +239 -0
  146. dsgrid/utils/utilities.py +184 -0
  147. dsgrid/utils/versioning.py +36 -0
  148. dsgrid_toolkit-0.2.0.dist-info/METADATA +216 -0
  149. dsgrid_toolkit-0.2.0.dist-info/RECORD +152 -0
  150. dsgrid_toolkit-0.2.0.dist-info/WHEEL +4 -0
  151. dsgrid_toolkit-0.2.0.dist-info/entry_points.txt +4 -0
  152. dsgrid_toolkit-0.2.0.dist-info/licenses/LICENSE +29 -0
@@ -0,0 +1,216 @@
1
+ Metadata-Version: 2.4
2
+ Name: dsgrid-toolkit
3
+ Version: 0.2.0
4
+ Summary: Python API for accessing demand-side grid model (dsgrid) datasets
5
+ Project-URL: GitHub, https://github.com/dsgrid/dsgrid
6
+ Project-URL: Documentation, https://dsgrid.github.io/dsgrid/
7
+ Project-URL: Homepage, https://www.nrel.gov/analysis/dsgrid
8
+ Author-email: Elaine Hale <elaine.hale@nrel.gov>, Lixi Liu <lixi.liu@nrel.gov>, Meghan Mooney <meghan.mooney@nrel.gov>, Daniel Thom <daniel.thom@nrel.gov>
9
+ Maintainer-email: Elaine Hale <elaine.hale@nrel.gov>
10
+ License: BSD 3-Clause License
11
+
12
+ Copyright (c) 2021, Alliance for Sustainable Energy, LLC
13
+ All rights reserved.
14
+
15
+ Redistribution and use in source and binary forms, with or without
16
+ modification, are permitted provided that the following conditions are met:
17
+
18
+ 1. Redistributions of source code must retain the above copyright notice, this
19
+ list of conditions and the following disclaimer.
20
+
21
+ 2. Redistributions in binary form must reproduce the above copyright notice,
22
+ this list of conditions and the following disclaimer in the documentation
23
+ and/or other materials provided with the distribution.
24
+
25
+ 3. Neither the name of the copyright holder nor the names of its
26
+ contributors may be used to endorse or promote products derived from
27
+ this software without specific prior written permission.
28
+
29
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
30
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
32
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
33
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
36
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
37
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
+ License-File: LICENSE
40
+ Keywords: dsgrid
41
+ Classifier: Development Status :: 3 - Alpha
42
+ Classifier: Intended Audience :: Science/Research
43
+ Classifier: License :: OSI Approved :: BSD License
44
+ Classifier: Natural Language :: English
45
+ Classifier: Programming Language :: Python :: 3.11
46
+ Requires-Python: >=3.11
47
+ Requires-Dist: chronify~=0.3.1
48
+ Requires-Dist: click<9,>=8.2
49
+ Requires-Dist: dash
50
+ Requires-Dist: dash-bootstrap-components
51
+ Requires-Dist: duckdb<2,>=1
52
+ Requires-Dist: fastapi
53
+ Requires-Dist: json5
54
+ Requires-Dist: networkx
55
+ Requires-Dist: pandas
56
+ Requires-Dist: prettytable
57
+ Requires-Dist: pyarrow
58
+ Requires-Dist: pydantic~=2.11.6
59
+ Requires-Dist: requests
60
+ Requires-Dist: rich-click
61
+ Requires-Dist: semver
62
+ Requires-Dist: sqlalchemy<3,>=2
63
+ Requires-Dist: tzdata
64
+ Requires-Dist: uvicorn
65
+ Provides-Extra: dev
66
+ Requires-Dist: devtools; extra == 'dev'
67
+ Requires-Dist: flake8; extra == 'dev'
68
+ Requires-Dist: httpx; extra == 'dev'
69
+ Requires-Dist: mypy; extra == 'dev'
70
+ Requires-Dist: pre-commit; extra == 'dev'
71
+ Requires-Dist: pyarrow; extra == 'dev'
72
+ Requires-Dist: pytest; extra == 'dev'
73
+ Requires-Dist: pytest-cov; extra == 'dev'
74
+ Provides-Extra: doc
75
+ Requires-Dist: autodoc-pydantic[erdantic]~=2.0; extra == 'doc'
76
+ Requires-Dist: furo; extra == 'doc'
77
+ Requires-Dist: ghp-import; extra == 'doc'
78
+ Requires-Dist: numpydoc; extra == 'doc'
79
+ Requires-Dist: pandas-stubs; extra == 'doc'
80
+ Requires-Dist: ruff; extra == 'doc'
81
+ Requires-Dist: sphinx-argparse~=0.4.0; extra == 'doc'
82
+ Requires-Dist: sphinx-click~=5.0; extra == 'doc'
83
+ Requires-Dist: sphinx-copybutton~=0.5.2; extra == 'doc'
84
+ Requires-Dist: sphinx-tabs~=3.4; extra == 'doc'
85
+ Requires-Dist: sphinxcontrib-programoutput; extra == 'doc'
86
+ Requires-Dist: sphinx~=7.2; extra == 'doc'
87
+ Provides-Extra: release
88
+ Requires-Dist: setuptools; extra == 'release'
89
+ Requires-Dist: twine; extra == 'release'
90
+ Requires-Dist: wheel; extra == 'release'
91
+ Provides-Extra: spark
92
+ Requires-Dist: chronify[spark]; extra == 'spark'
93
+ Requires-Dist: pyspark==4.0.0; extra == 'spark'
94
+ Requires-Dist: thrift; extra == 'spark'
95
+ Requires-Dist: thrift-sasl; extra == 'spark'
96
+ Description-Content-Type: text/markdown
97
+
98
+ # dsgrid
99
+ [![Documentation](https://img.shields.io/badge/docs-ready-blue.svg)](https://dsgrid.github.io/dsgrid)
100
+ [![codecov](https://codecov.io/gh/dsgrid/dsgrid/branch/main/graph/badge.svg?token=W0441C9XAL)](https://codecov.io/gh/dsgrid/dsgrid)
101
+
102
+ Python API for contributing to and accessing demand-side grid model (dsgrid) projects and datasets.
103
+
104
+ ⚠️ **dsgrid is under active development and does not yet have a formal package release.** Details listed here are subject to change. Please reach out to the dsgrid coordination team with any questions or other feedback. ⚠️
105
+
106
+ [Install](#install) | [Usage](#usage) | [Uninstall](#uninstall)
107
+
108
+ ## Install
109
+
110
+ [Virtual environment](#virtual-environment) | [Dependencies](#dependencies) | [from PIPY/pip](#from-pipypip) | [from pip+git](#from-pipgit) | [from cloned repository](#from-cloned-repository)
111
+
112
+ ### Virtual environment
113
+
114
+ Create a virtual environment in which to install dsgrid. Anaconda or miniconda is recommended.
115
+
116
+ ```
117
+ conda create -n dsgrid python=3.10
118
+ conda activate dsgrid
119
+ ```
120
+
121
+ ### Dependencies
122
+
123
+ dsgrid uses [Apache Spark](#https://spark.apache.org/) to manage big data. There are no separate installation steps for Apache Spark beyond installing the dsgrid package and installing:
124
+
125
+ ```
126
+ pip install git+https://github.com/apache/kyuubi.git#egg=pyhive&subdirectory=python
127
+ ```
128
+
129
+ Otherwise installing the pyspark Python dependency handles it.
130
+
131
+ However, you should be aware that Apache Spark's Microsoft Windows support is poor and essentially limited to local mode. That is, if you use dsgrid on a Windows machine you should not attempt to install a full version of Spark nor expect to run on a Spark cluster. As such, we recommend limiting dsgrid use on Windows to browsing the registry, registering and submitting small- to medium-sized datasets, or development work with small test projects. Full dsgrid functionality with large projects requires additional computational resources, e.g., high performance or cloud computing, typically on a Linux operating system.
132
+
133
+ #### Additional Notes
134
+ - If pyspark complains about not finding Python, you may need to locate your python executable file (python.exe on Windows), copy it, and rename the copy to python3 (python3.exe on Windows)
135
+
136
+ Spark requires Java 8 or later with the `JAVA_HOME` environment variable set to the Java installation directory.
137
+
138
+ On Linux you can install OpenJDK with conda:
139
+ ```
140
+ conda install openjdk
141
+ ```
142
+
143
+ Windows install instructions are below.
144
+
145
+ #### Windows
146
+
147
+ To install Apache Spark on Windows, follow [these instructions](https://towardsdatascience.com/installing-apache-pyspark-on-windows-10-f5f0c506bea1).
148
+
149
+ ### From PIPY/pip
150
+
151
+ *Not yet available*
152
+
153
+ ### From pip+git
154
+
155
+ **With ssh keys:**
156
+ ```
157
+ pip install git+ssh://git@github.com/dsgrid/dsgrid.git@main
158
+
159
+ # or
160
+
161
+ pip install git+ssh://git@github.com/dsgrid/dsgrid.git@develop
162
+ ```
163
+
164
+ **From http:**
165
+ ```
166
+ pip install git+https://github.com/dsgrid/dsgrid.git@main
167
+
168
+ # or
169
+
170
+ pip install git+https://github.com/dsgrid/dsgrid.git@develop
171
+ ```
172
+
173
+ ### From Cloned Repository
174
+
175
+ First, clone the repository and change into the `dsgrid` directory. For example:
176
+
177
+ ```
178
+ cd ~ # or other directory where you put repositories
179
+ git clone git@github.com:dsgrid/dsgrid.git # or the http address
180
+ cd dsgrid
181
+ ```
182
+
183
+ Then install the pacakge using the pip `-e` flag to directly use the files in the
184
+ cloned repository.
185
+
186
+ **Users:**
187
+ ```
188
+ pip install -e .
189
+ ```
190
+
191
+ **Developers:**
192
+ ```
193
+ pip install -e '.[dev]'
194
+ ```
195
+
196
+ ## Usage
197
+
198
+ dsgrid is primarily a command-line interface (CLI) tool. To see the available commands:
199
+ ```
200
+ dsgrid --help
201
+ ```
202
+
203
+ ## Uninstall
204
+
205
+ ```
206
+ pip uninstall dsgrid
207
+ ```
208
+
209
+ If you are using a conda environment
210
+ ```
211
+ conda deactivate
212
+ ```
213
+
214
+ ## Software Record
215
+
216
+ dsgrid is developed under NREL Software Record SWR-21-52, "demand-side grid model".
@@ -0,0 +1,152 @@
1
+ dsgrid/__init__.py,sha256=3oqN5z_-Y1OEkE8imVAQt0PVVGJuwRPt8fEebzeECiA,654
2
+ dsgrid/chronify.py,sha256=B0qsNXQmXpKqmEaJt94aQvJi8mFLTzQYYnaASg7hx5g,637
3
+ dsgrid/common.py,sha256=a5IVmOKk1Qa7xacEDYYUGvCvxNJsjTAdpbVkuJwjcV4,956
4
+ dsgrid/data_models.py,sha256=bFhwT67bBGhAEvXL5S62HjwxGIv3M6hEZINA-d8mNlU,4655
5
+ dsgrid/dsgrid_rc.py,sha256=FeCyF6JlloPsE0LmV3v4Qn_mDzYaPfVrdVnGlTS15iU,2921
6
+ dsgrid/exceptions.py,sha256=8fQcSUM0nTMi65ixMsB8PzPz1RRCh9V6pLCc2-NahPA,2551
7
+ dsgrid/loggers.py,sha256=GwZhCfrC9RnPAUF_vnYVOTeKsqdQ3ADZCSYjw9fB9pU,4302
8
+ dsgrid/project.py,sha256=w8exbAbu18zMMyFl3Ek05wKPwsYMjclL4gxuVUlNAtg,18112
9
+ dsgrid/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ dsgrid/api/api_manager.py,sha256=bXLF7PhpU16hmm6iD1i4-_Xp_bg2uUeE1BPgN8YiW2w,6334
11
+ dsgrid/api/app.py,sha256=sZMiYjN0NslVylpnskhi1nTPAKIuu8TVU4OxxM3OIck,15786
12
+ dsgrid/api/models.py,sha256=s3aXPj5hnWotI4U5kdVK5YTybbYKmuMXPlDN6cmnFJc,1668
13
+ dsgrid/api/response_models.py,sha256=IaHoEyn1BMygAuBjx98qkf5aiXMFtUDrQRgK6Kf2MKI,3169
14
+ dsgrid/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ dsgrid/apps/registration_gui.py,sha256=8uo0tfcSuKyG7w2AExrG3797tu-86M8Hjxp6IqlxEDA,17530
16
+ dsgrid/apps/project_viewer/app.py,sha256=LwSB-OXwVvIteODI4yXg45XNyS6iZGnWxoav0R_OlCs,6570
17
+ dsgrid/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ dsgrid/cli/common.py,sha256=6lmdDbKItS4p5MBgGSIf-3aWjbgyH1HDSi2rDetu9nM,3453
19
+ dsgrid/cli/config.py,sha256=Z8ToQuPIPei2cEDMarZu3kWYGyO26XUKC4hzLNfTR0M,4511
20
+ dsgrid/cli/download.py,sha256=ryOmhAHhROke7FQDubCTAfVXD6mLzcQnAsP0c79JJuA,219
21
+ dsgrid/cli/dsgrid.py,sha256=GXShodGonaiH4qDK4qTyESDoqXYW10_s4VE_p1GRn80,3952
22
+ dsgrid/cli/dsgrid_admin.py,sha256=Yx3uw4QRTOMxWY9Oi14U17UBK72Lc-K2aMlgEGitg6M,10267
23
+ dsgrid/cli/install_notebooks.py,sha256=kQT63vGNeL3NDo3illdgwZ_cCn-3mWwBIcDrDvOCY0U,1619
24
+ dsgrid/cli/query.py,sha256=RMyxJHhGaueXFCUqyaqPNSVPa7wMKvH89Gn-Xrcn6eA,20679
25
+ dsgrid/cli/registry.py,sha256=uPiACPRO-pCQYY-lXOkkD_r-zn2LkkeFduCJnY5KOiw,48807
26
+ dsgrid/cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ dsgrid/cloud/cloud_storage_interface.py,sha256=D0HPab_Px3Z8_Lc31kkA7qWWU6EgV_78fZ3VAotkKwI,4283
28
+ dsgrid/cloud/factory.py,sha256=a5Tl5I9wz3kTOEeQzwkD8GFY_Cvr2BBrwLx1ZhRoQ5o,981
29
+ dsgrid/cloud/fake_storage_interface.py,sha256=og2FnwbeI-ZNqPT2NVhQjL5L_0e8JQaGT3qkT-VR9b4,852
30
+ dsgrid/cloud/s3_storage_interface.py,sha256=x21vdLHZJmSY62vP18qT_bZJT19I729zzq6s4kyk20Q,6417
31
+ dsgrid/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ dsgrid/config/annual_time_dimension_config.py,sha256=rh1jvbqYAZRiJxVWoVoHKNuDGEYPPInwI5ivhOOW4_4,6709
33
+ dsgrid/config/common.py,sha256=7uqDwqd1o7CNnjVevJ4v-krBZMG0FeI73Uc_5VboUaM,4189
34
+ dsgrid/config/config_base.py,sha256=9medF70g18hRUzqME2XbjVwI-x0sXtyR1ilbVpux2Hc,3853
35
+ dsgrid/config/dataset_config.py,sha256=7TLcWAuo_mube81dq53fTur-_kgrwzKz3wNh3Qq8Ans,25142
36
+ dsgrid/config/dataset_schema_handler_factory.py,sha256=WvdQR-glCAEygWHHRG0dZOWJSS_uEQnMITRG2u-dz0E,1705
37
+ dsgrid/config/date_time_dimension_config.py,sha256=b9mIpX2R5Se0D-jCQeQi3wjbYu6Oog6T2igOe63a1o0,4264
38
+ dsgrid/config/dimension_config.py,sha256=k6apR9bm2AqZZkIIfTYcABk3P7CbmL7T6SHZCobfjCs,1234
39
+ dsgrid/config/dimension_config_factory.py,sha256=PsFWiq_vV7lJ6WCc_wVITN_i4KSjVbugsKlRrnpzX3A,2515
40
+ dsgrid/config/dimension_mapping_base.py,sha256=pOGo95ue6x1F8MYfItIfVXrfYyAAdol6cO7PxEdJ_IY,15166
41
+ dsgrid/config/dimension_mappings_config.py,sha256=y22Eut5MNAGcaqdvDgLmc3V1Gwlujoz30WNjiqJqEFg,1261
42
+ dsgrid/config/dimensions.py,sha256=SZMR3JYSp4SozDxWHWHY3wc13zlzpKp4lkHhubPgg8A,27615
43
+ dsgrid/config/dimensions_config.py,sha256=KEgSOl1TI-25k1NHxe5y9V8Z5cOWqEl9q4yXNnArRv0,1986
44
+ dsgrid/config/index_time_dimension_config.py,sha256=1y50YAUOljcSdu_MXxoIM8ogONFf5CWAHDKoqEbiuf0,2478
45
+ dsgrid/config/input_dataset_requirements.py,sha256=a8RNOdIqqgpRfRMJPhZanni4mPNd4I8zeyl1ZdT2HHM,1052
46
+ dsgrid/config/mapping_tables.py,sha256=FMR9N9dFe9_9DeCi-0p9D57s3hPJtwv6nN93THNOocE,6394
47
+ dsgrid/config/noop_time_dimension_config.py,sha256=OI-A2drmyJRIE1JSGfSSEkuMDydgwH6arM5slcBMbS0,1035
48
+ dsgrid/config/project_config.py,sha256=Dp0_yNf4fGiXY_YXoAGKjJ9EQMv8Ewhp3-73qX_HhvA,60513
49
+ dsgrid/config/registration_models.py,sha256=uo-TyOjaO8inywtNc-t3z6pRCOXgOe6joYva5Y3h5DI,7488
50
+ dsgrid/config/representative_period_time_dimension_config.py,sha256=WMwtC1fR4AqH0-lO36YVXxx-axp64G0fsUlssHAhuXc,6896
51
+ dsgrid/config/simple_models.py,sha256=mJPuJIYY-hSuH8eZUm-8KWqDqaMo-lJPTY67MMUkrvE,1584
52
+ dsgrid/config/supplemental_dimension.py,sha256=RCW7ny_K0rTwhAtiOrpQ7v4X4kvulSwV3cdOMLNveT4,846
53
+ dsgrid/config/time_dimension_base_config.py,sha256=JNgM7xtH2E1BlopWToKxCjoolMPCGQIBMqfrveTW_OM,5720
54
+ dsgrid/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ dsgrid/dataset/dataset.py,sha256=yloY1f7lSi3fiWzCphs7VMPUZtJF3dsHljS_f-zIW1c,3698
56
+ dsgrid/dataset/dataset_expression_handler.py,sha256=AayDUifKU6FVDMMeRTvn_DVXRSOxuzLw2bGs5kRkZrw,3006
57
+ dsgrid/dataset/dataset_mapping_manager.py,sha256=qVATNd-9t1g77Q87kTY4ldJb3bGVWJMhZTicAYr_CqE,4881
58
+ dsgrid/dataset/dataset_schema_handler_base.py,sha256=1PNsMmFLcF4gni--BGjOgQtSmHHcHnBfgq-8o9hcGJs,38309
59
+ dsgrid/dataset/dataset_schema_handler_one_table.py,sha256=IkYpb8cRkAXe93bKPBai6HLOV7nUhpDWd0HwzxrQ31Q,8822
60
+ dsgrid/dataset/dataset_schema_handler_standard.py,sha256=OGQ7mHLx-WtwqCDjyxVV8EMVycPIKOEUVdtnLznsM8M,12980
61
+ dsgrid/dataset/growth_rates.py,sha256=r5kp-k4DMlHtgDpAvYed5ETUEO2mNkHxePxOZ8bZD78,4548
62
+ dsgrid/dataset/models.py,sha256=pmhkvehQosHbX0l3cjdLfxXwVQd_5gkKy-UmHxb5B8Q,1321
63
+ dsgrid/dataset/table_format_handler_base.py,sha256=0embeuXn1RdDn70wv8eFdwNfYJ7CR3IXh35i_0GjTEc,11012
64
+ dsgrid/dataset/table_format_handler_factory.py,sha256=iCXPAd01ZGIJounPpcEFz7a_mwnjKxh8xijyf_CCvLo,585
65
+ dsgrid/dataset/unpivoted_table.py,sha256=U3CeLstCbmDCDt7UdEvocXR2NvqlhLDafgHlXSNRx-4,4767
66
+ dsgrid/dimension/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ dsgrid/dimension/base_models.py,sha256=oxom7hWw0PWi-PXzDMBG0hSTQjcQPv5C9zS_hfvIe0g,6665
68
+ dsgrid/dimension/dimension_filters.py,sha256=jCtM3qTTaxJtIZVUcOkT7kyY5KT4pVtX02zqRYN6exc,10017
69
+ dsgrid/dimension/standard.py,sha256=c_etqKWLVqgAcjBbRUM-CEnSu5Td5C3ZIJqRbohAseM,4538
70
+ dsgrid/dimension/time.py,sha256=Q5_mfHR6c9igSGJcSOI9UuzofnoAYBnnLL16ReL6uzs,18440
71
+ dsgrid/dimension/time_utils.py,sha256=aRkBMVFEuj9KExvWt9eu7IV7a4YspyMalcN61N9Uv7c,2458
72
+ dsgrid/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ dsgrid/filesystem/cloud_filesystem.py,sha256=7Ekoo9w0vNDkXC6mL9RPJqJCRzOJOyiI6uNc0OFs7GE,804
74
+ dsgrid/filesystem/factory.py,sha256=TDCg2cRpY0VH6ml7zwLB2qK2Jzi_1K2UT0HG90oV2oQ,732
75
+ dsgrid/filesystem/filesystem_interface.py,sha256=TN_Tw27MhLREm7zO1qOOfh35Q09jzqqoNTRZiD7Ux8s,2979
76
+ dsgrid/filesystem/local_filesystem.py,sha256=jrEEOIVDVvnd6UE_yG5_mdZIOSSl_tTPkyNGmXcepCs,2258
77
+ dsgrid/filesystem/s3_filesystem.py,sha256=3KzcGMqHLHWnD0J6mh1MLH893YREJdF_KZkIjdesbZE,3863
78
+ dsgrid/notebooks/connect_to_dsgrid_registry.ipynb,sha256=rPHaQBjvrE1lELcxR3Ix4Zb1VN_Yhl3ixBB7XzVHzoY,27357
79
+ dsgrid/notebooks/registration.ipynb,sha256=l4pbA2S8RQ5KZfsLEoQXioDGI2pwTeCx7bzokGnkgxI,963
80
+ dsgrid/notebooks/start_notebook.sh,sha256=whB6RcNjtbcOtlRb8tYzluJlc__T4ETy4BmlyZQdJbs,418
81
+ dsgrid/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ dsgrid/query/dataset_mapping_plan.py,sha256=t646l-D5s88OQyZOQE4u-fiJJGY9sZ71ncIu6qMf5PY,5579
83
+ dsgrid/query/derived_dataset.py,sha256=sdsl5Qh_-hQosVztGz6K1Ga15vjyVulBRmurSnDXyiI,15653
84
+ dsgrid/query/models.py,sha256=_t5M9gWi-jhrS0Sez5lSuECVmd_4JNUXhVQ1alqn758,27354
85
+ dsgrid/query/query_context.py,sha256=o7_ROCecn9fmUK-WNlBXZW0-QiOnwSZPyAgWDe0KMv0,11794
86
+ dsgrid/query/query_submitter.py,sha256=gSMRZapNdZhMjOyEnRNzxBDYaBkGQyjpgbdnvYQXlNQ,37263
87
+ dsgrid/query/report_factory.py,sha256=opMDph58cFNNzXSGE_OzyoGb-PUhZa3vtwqcm2ng4vA,519
88
+ dsgrid/query/report_peak_load.py,sha256=GUTVB6j8vMrT5GxHyuHhnzMGAawWZJDZSCjIXihRkcc,2675
89
+ dsgrid/query/reports_base.py,sha256=6qdvDVU0x3BGfl5cmB9ddCZhTDAq5ZBUxT2zcJ3qnF0,590
90
+ dsgrid/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ dsgrid/registry/bulk_register.py,sha256=EXcLMqEYQfodYl5tT_0rP3Dzd9_VAdImPK7gbCmvTeA,6264
92
+ dsgrid/registry/common.py,sha256=tP2Twt_dcbq_6ucQ8C3AjRT3R2_49KHF5-u86UhNZeg,10159
93
+ dsgrid/registry/config_update_checker_base.py,sha256=W0K04bIkSjCLASnnMEBqDk9PDgoTws_DUCY4g6r5yuc,2045
94
+ dsgrid/registry/data_store_factory.py,sha256=DU1kmr3j8imlVRQG4KFuEiMz6XYykgGVNclG7zxQH3w,1085
95
+ dsgrid/registry/data_store_interface.py,sha256=6DUpWqoLc8MS6FJRONzEA6TbzTjMQYIII6lM7NYa72Q,2279
96
+ dsgrid/registry/dataset_config_generator.py,sha256=juS4WtYGrIOS7F_8U0MoSvf8_m7-dh1G0PIdDWNkfto,5853
97
+ dsgrid/registry/dataset_registry_manager.py,sha256=KFSaMMJQuqH5uigC4gOQK6x51hKBe8m0M_Q5Z4rDcco,27667
98
+ dsgrid/registry/dataset_update_checker.py,sha256=BlwQ5QF-ADVfWHN9-fOoDwHvYCnjT4A-DFvEHMsRec4,320
99
+ dsgrid/registry/dimension_mapping_registry_manager.py,sha256=U9SZM-Ont8ZnLk-B4LO_eEEKoKYkhc5jrwxnDo40USA,22580
100
+ dsgrid/registry/dimension_mapping_update_checker.py,sha256=nZUvFZYoX52yy5SgT_bnMFleE0iXpN2sn_Vp53--X2E,339
101
+ dsgrid/registry/dimension_registry_manager.py,sha256=IubOqstyiEC9nnInV67BvuvMQOzRK7hDnKc-ABRntKM,15083
102
+ dsgrid/registry/dimension_update_checker.py,sha256=WeaX0uG478tkAhlXeBp3HS1iqyS5smapw1xqPHEm4SU,324
103
+ dsgrid/registry/duckdb_data_store.py,sha256=ZL-WvO7m0kbl_yVhVOJEMNvSh2OJhdV50YEpjQmyBLQ,7425
104
+ dsgrid/registry/filesystem_data_store.py,sha256=VUiw2gBuPkCsdcYIF5ZDI__TfuEDhTyOPn18uBwNhSQ,6138
105
+ dsgrid/registry/filter_registry_manager.py,sha256=-pWkSVVzrtnNO5SamANuaQqDfe3U7ptdLW-EgLEFhpI,5779
106
+ dsgrid/registry/project_config_generator.py,sha256=1nYzxDrYZ33JM2nbn3NyyTsv89QPccPMqAz5DWiMLBw,1845
107
+ dsgrid/registry/project_registry_manager.py,sha256=tOoLQ9ohs7eN6J5NuE3QRmgjxaByxoEkIdxDGtsSbnE,68621
108
+ dsgrid/registry/project_update_checker.py,sha256=5K4eB0bksT70n-Y-f88p7RWuTqL1Rdjo3ADF-gz-Gnc,1902
109
+ dsgrid/registry/registration_context.py,sha256=tCYmiqe_JcADGjM4ohPC7LQPXEY2N62UFYuMkqdwMsU,7612
110
+ dsgrid/registry/registry_auto_updater.py,sha256=M1LPgUeq5A-VKVdNHTm0tT47OFK86UsotabUfi0UW00,13452
111
+ dsgrid/registry/registry_database.py,sha256=NBpuk7NfeOYT6A3tf5sj3BxQuhjAUUhy3s6djoSTf28,25373
112
+ dsgrid/registry/registry_interface.py,sha256=XwFCIwg1l88tIjBa-h9UuobUTvRV75zb1EUd0LJz1wc,17066
113
+ dsgrid/registry/registry_manager.py,sha256=J9t0509IcgsUfY3VziWuAwBiU4aeLlQKlMHAFfIcueY,20550
114
+ dsgrid/registry/registry_manager_base.py,sha256=cHu43sr-U36Sv3i77JPce-HJhjjR25fkPyQqNu2LeTo,10831
115
+ dsgrid/registry/versioning.py,sha256=uMGoLOx7-UBJmxg5v3W1mz2hEjzOSPBFBmx2MXA8_JU,3863
116
+ dsgrid/spark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ dsgrid/spark/functions.py,sha256=mW8pQhAfEp08DyGvbMjpA9_7N-rvQHutQ3oaQ_5cyt4,18234
118
+ dsgrid/spark/types.py,sha256=iFO6blizEx1sZmTGvFJjAxTi8bATjJbWrbZztlcU4dM,1310
119
+ dsgrid/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
+ dsgrid/tests/common.py,sha256=quxZgpRFTgF9BMMib_aXM1yeAeEfMljRSAQW1xho4Xs,5056
121
+ dsgrid/tests/make_us_data_registry.py,sha256=SNl60-u9GeDB_XC48ZKlcKZSaQ84Mq3JN27O_AMnKj4,6548
122
+ dsgrid/tests/register_derived_datasets.py,sha256=jHlwaHj-_ZeyLmP8jCqC3vp3Hp1CFt2P6jN06GwKEfA,3484
123
+ dsgrid/tests/utils.py,sha256=fl-Wron50DQR2LGEhuuNC12b7DCdAkxZ-QVe9-jIJUs,823
124
+ dsgrid/time/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
+ dsgrid/time/time_conversions.py,sha256=118I0JVKMDy7KeRxopxS60eaNTdYztU7t50upZQYNoE,1742
126
+ dsgrid/time/types.py,sha256=OI1hddqcMZmwPPZF9vS0OVD7V8v4QdH5q54ybcscOWM,1366
127
+ dsgrid/units/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ dsgrid/units/constants.py,sha256=_rYJ7Mk8kEtGGi86R1wmdGkH5wAaCGLKgej76GkeGb0,2444
129
+ dsgrid/units/convert.py,sha256=IYFnJ9CBv76jD9nRMOxJKio7sJPCzN6N2POqcqvlgHA,2532
130
+ dsgrid/units/energy.py,sha256=JBrLlqPAkhYmAmDXVDJ8KT_GISDFSl9-gOwmFdnX4tA,5285
131
+ dsgrid/units/power.py,sha256=s2EOiPGPpcLOXVs56zt5oa9slt-riTn9DYugQv9nTmo,2922
132
+ dsgrid/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
+ dsgrid/utils/dataset.py,sha256=mhZckhGF3h6k4DEC1srS6cd5LCRa2ImL84Qm8kxVZOI,22656
134
+ dsgrid/utils/files.py,sha256=p4LAdQyzd25eX4yH71bDBVeneL2Du7KrqiuBcLk2UvY,4007
135
+ dsgrid/utils/filters.py,sha256=yACGt6IgEPEqwRH9pICQE5IPsb2TYv8IURj9fftiqW4,3996
136
+ dsgrid/utils/id_remappings.py,sha256=eCVO328Kl0bUITqy2BpJTNqE1hA6SXg7oAV2Yazx72U,3537
137
+ dsgrid/utils/run_command.py,sha256=i4TOhbjXJ_sEVaTuKndz-LboISyyMeF9RRFs0ql3804,1922
138
+ dsgrid/utils/scratch_dir_context.py,sha256=h5O5X7MzInqlrXyjTFkT7klLJI3SwbjO9liKSYpt9A0,1974
139
+ dsgrid/utils/spark.py,sha256=RGsEtddc8jbQGBY-WIvgNIPFOnADbt7BGW83LscNNec,30866
140
+ dsgrid/utils/spark_partition.py,sha256=lttNp2XtOFljyNzjL6pIwKfX4kawgK-VsGu4X_GjguM,3192
141
+ dsgrid/utils/timing.py,sha256=wmZGBQUUCCoHYXAk3nzccIZPnW9tsT1ZAxMw_H2852g,6006
142
+ dsgrid/utils/utilities.py,sha256=k27bqfzwDo_l4k8NFtovXWmwioQjMMiJMEmh0cvmiY0,4446
143
+ dsgrid/utils/versioning.py,sha256=ydV8e2_U8LQjj3kM1QGJazEnl-mUnI_aRfGhC0OG7oE,698
144
+ dsgrid/utils/py_expression_eval/LICENSE,sha256=wPwCqGrisXnEcpaUxSO79C2mdOUTbtjhLjyy8mVW6p8,1046
145
+ dsgrid/utils/py_expression_eval/README.md,sha256=hW5cK6s1oOnTdcCkzsnOaVoJLaZYD-moscrGox246B4,462
146
+ dsgrid/utils/py_expression_eval/__init__.py,sha256=KJjzSZ9oTG-ufcD6jH0D9Fl4K94y9mWB894odidwPm4,26856
147
+ dsgrid/utils/py_expression_eval/tests.py,sha256=ubbElk1T-VQOmr5d81UMngDBsjjlajC-5jC4bbOXGyM,14403
148
+ dsgrid_toolkit-0.2.0.dist-info/METADATA,sha256=sCPJelGN7ZRI1fGUR1VHTfJWpQgmjgYY_a7A5UeKXXA,8182
149
+ dsgrid_toolkit-0.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
150
+ dsgrid_toolkit-0.2.0.dist-info/entry_points.txt,sha256=XuEe_RIHvdR4fhe79FmjzmQI3BUdHC_eiLUzI3A6nmU,130
151
+ dsgrid_toolkit-0.2.0.dist-info/licenses/LICENSE,sha256=f_67ZhyUUCefqDokvVa0rY5QatKGiOTgTTY2iMLwXHM,1544
152
+ dsgrid_toolkit-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ dsgrid = dsgrid.cli.dsgrid:cli
3
+ dsgrid-admin = dsgrid.cli.dsgrid_admin:cli
4
+ dsgrid-cli.py = dsgrid.cli.dsgrid:cli
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2021, Alliance for Sustainable Energy, LLC
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.