kauabarros-24 commited on
Commit
af171b5
·
1 Parent(s): 43056e4

CHORE: Create simple web page

Browse files
data/features_10m.csv DELETED
@@ -1 +0,0 @@
1
- ,Price,ret_1m,ret_2m,ret_3m,ret_4m,ret_5m,ma6,ma12,close/ma6,close/ma12
 
 
data/features_120m.csv DELETED
@@ -1 +0,0 @@
1
- ,Price,ret_1m,ret_2m,ret_3m,ret_4m,ret_5m,ma6,ma12,close/ma6,close/ma12
 
 
data/features_24m.csv DELETED
@@ -1 +0,0 @@
1
- ,Price,ret_1m,ret_2m,ret_3m,ret_4m,ret_5m,ma6,ma12,close/ma6,close/ma12
 
 
data/features_60m.csv DELETED
@@ -1 +0,0 @@
1
- ,Price,ret_1m,ret_2m,ret_3m,ret_4m,ret_5m,ma6,ma12,close/ma6,close/ma12
 
 
data/raw_PETR4_SA.csv CHANGED
The diff for this file is too large to render. See raw diff
 
data/target_10m.csv DELETED
@@ -1 +0,0 @@
1
- ,target
 
 
data/target_120m.csv DELETED
@@ -1 +0,0 @@
1
- ,target
 
 
data/target_24m.csv DELETED
@@ -1 +0,0 @@
1
- ,target
 
 
data/target_60m.csv DELETED
@@ -1 +0,0 @@
1
- ,target
 
 
pdm.lock CHANGED
@@ -5,151 +5,11 @@
5
  groups = ["default", "dev"]
6
  strategy = ["inherit_metadata"]
7
  lock_version = "4.5.0"
8
- content_hash = "sha256:4bccb14c1ce61614409ddc495e84604556ede911071b107135efb37a9b5ffb45"
9
 
10
  [[metadata.targets]]
11
  requires_python = "==3.12.*"
12
 
13
- [[package]]
14
- name = "anyio"
15
- version = "4.12.1"
16
- requires_python = ">=3.9"
17
- summary = "High-level concurrency and networking framework on top of asyncio or Trio"
18
- groups = ["default"]
19
- marker = "python_version == \"3.12\""
20
- dependencies = [
21
- "exceptiongroup>=1.0.2; python_version < \"3.11\"",
22
- "idna>=2.8",
23
- "typing-extensions>=4.5; python_version < \"3.13\"",
24
- ]
25
- files = [
26
- {file = "anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"},
27
- {file = "anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"},
28
- ]
29
-
30
- [[package]]
31
- name = "appnope"
32
- version = "0.1.4"
33
- requires_python = ">=3.6"
34
- summary = "Disable App Nap on macOS >= 10.9"
35
- groups = ["default"]
36
- marker = "platform_system == \"Darwin\" and python_version == \"3.12\""
37
- files = [
38
- {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
39
- {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
40
- ]
41
-
42
- [[package]]
43
- name = "argon2-cffi"
44
- version = "25.1.0"
45
- requires_python = ">=3.8"
46
- summary = "Argon2 for Python"
47
- groups = ["default"]
48
- marker = "python_version == \"3.12\""
49
- dependencies = [
50
- "argon2-cffi-bindings",
51
- ]
52
- files = [
53
- {file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741"},
54
- {file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1"},
55
- ]
56
-
57
- [[package]]
58
- name = "argon2-cffi-bindings"
59
- version = "25.1.0"
60
- requires_python = ">=3.9"
61
- summary = "Low-level CFFI bindings for Argon2"
62
- groups = ["default"]
63
- marker = "python_version == \"3.12\""
64
- dependencies = [
65
- "cffi>=1.0.1; python_version < \"3.14\"",
66
- "cffi>=2.0.0b1; python_version >= \"3.14\"",
67
- ]
68
- files = [
69
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500"},
70
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44"},
71
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0"},
72
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6"},
73
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a"},
74
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d"},
75
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99"},
76
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2"},
77
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98"},
78
- {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94"},
79
- {file = "argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d"},
80
- ]
81
-
82
- [[package]]
83
- name = "arrow"
84
- version = "1.4.0"
85
- requires_python = ">=3.8"
86
- summary = "Better dates & times for Python"
87
- groups = ["default"]
88
- marker = "python_version == \"3.12\""
89
- dependencies = [
90
- "backports-zoneinfo==0.2.1; python_version < \"3.9\"",
91
- "python-dateutil>=2.7.0",
92
- "tzdata; python_version >= \"3.9\"",
93
- ]
94
- files = [
95
- {file = "arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205"},
96
- {file = "arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7"},
97
- ]
98
-
99
- [[package]]
100
- name = "asttokens"
101
- version = "3.0.1"
102
- requires_python = ">=3.8"
103
- summary = "Annotate AST trees with source code positions"
104
- groups = ["default"]
105
- marker = "python_version == \"3.12\""
106
- files = [
107
- {file = "asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a"},
108
- {file = "asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7"},
109
- ]
110
-
111
- [[package]]
112
- name = "async-lru"
113
- version = "2.2.0"
114
- requires_python = ">=3.10"
115
- summary = "Simple LRU cache for asyncio"
116
- groups = ["default"]
117
- marker = "python_version == \"3.12\""
118
- dependencies = [
119
- "typing-extensions>=4.0.0; python_version < \"3.11\"",
120
- ]
121
- files = [
122
- {file = "async_lru-2.2.0-py3-none-any.whl", hash = "sha256:e2c1cf731eba202b59c5feedaef14ffd9d02ad0037fcda64938699f2c380eafe"},
123
- {file = "async_lru-2.2.0.tar.gz", hash = "sha256:80abae2a237dbc6c60861d621619af39f0d920aea306de34cb992c879e01370c"},
124
- ]
125
-
126
- [[package]]
127
- name = "attrs"
128
- version = "25.4.0"
129
- requires_python = ">=3.9"
130
- summary = "Classes Without Boilerplate"
131
- groups = ["default"]
132
- marker = "python_version == \"3.12\""
133
- files = [
134
- {file = "attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373"},
135
- {file = "attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11"},
136
- ]
137
-
138
- [[package]]
139
- name = "babel"
140
- version = "2.18.0"
141
- requires_python = ">=3.8"
142
- summary = "Internationalization utilities"
143
- groups = ["default"]
144
- marker = "python_version == \"3.12\""
145
- dependencies = [
146
- "pytz>=2015.7; python_version < \"3.9\"",
147
- ]
148
- files = [
149
- {file = "babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"},
150
- {file = "babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"},
151
- ]
152
-
153
  [[package]]
154
  name = "beautifulsoup4"
155
  version = "4.14.3"
@@ -166,65 +26,6 @@ files = [
166
  {file = "beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86"},
167
  ]
168
 
169
- [[package]]
170
- name = "black"
171
- version = "26.3.0"
172
- requires_python = ">=3.10"
173
- summary = "The uncompromising code formatter."
174
- groups = ["dev"]
175
- marker = "python_version == \"3.12\""
176
- dependencies = [
177
- "click>=8.0.0",
178
- "mypy-extensions>=0.4.3",
179
- "packaging>=22.0",
180
- "pathspec>=1.0.0",
181
- "platformdirs>=2",
182
- "pytokens~=0.4.0",
183
- "tomli>=1.1.0; python_version < \"3.11\"",
184
- "typing-extensions>=4.0.1; python_version < \"3.11\"",
185
- ]
186
- files = [
187
- {file = "black-26.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c2b1e5eec220b419e3591a0aaa6351bd3a9c01fe6291fbaf76d84308eb7a2ede"},
188
- {file = "black-26.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1bab64de70bccc992432bee56cdffbe004ceeaa07352127c386faa87e81f9261"},
189
- {file = "black-26.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b6c5f734290803b7b26493ffd734b02b72e6c90d82d45ac4d5b862b9bdf7720"},
190
- {file = "black-26.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7c767396af15b54e1a6aae99ddf241ae97e589f666b1d22c4b6618282a04e4ca"},
191
- {file = "black-26.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:765fd6ddd00f35c55250fdc6b790c272d54ac3f44da719cc42df428269b45980"},
192
- {file = "black-26.3.0-py3-none-any.whl", hash = "sha256:e825d6b121910dff6f04d7691f826d2449327e8e71c26254c030c4f3d2311985"},
193
- {file = "black-26.3.0.tar.gz", hash = "sha256:4d438dfdba1c807c6c7c63c4f15794dda0820d2222e7c4105042ac9ddfc5dd0b"},
194
- ]
195
-
196
- [[package]]
197
- name = "bleach"
198
- version = "6.3.0"
199
- requires_python = ">=3.10"
200
- summary = "An easy safelist-based HTML-sanitizing tool."
201
- groups = ["default"]
202
- marker = "python_version == \"3.12\""
203
- dependencies = [
204
- "webencodings",
205
- ]
206
- files = [
207
- {file = "bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6"},
208
- {file = "bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22"},
209
- ]
210
-
211
- [[package]]
212
- name = "bleach"
213
- version = "6.3.0"
214
- extras = ["css"]
215
- requires_python = ">=3.10"
216
- summary = "An easy safelist-based HTML-sanitizing tool."
217
- groups = ["default"]
218
- marker = "python_version == \"3.12\""
219
- dependencies = [
220
- "bleach==6.3.0",
221
- "tinycss2<1.5,>=1.1.0",
222
- ]
223
- files = [
224
- {file = "bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6"},
225
- {file = "bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22"},
226
- ]
227
-
228
  [[package]]
229
  name = "certifi"
230
  version = "2026.2.25"
@@ -291,45 +92,6 @@ files = [
291
  {file = "charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644"},
292
  ]
293
 
294
- [[package]]
295
- name = "click"
296
- version = "8.3.1"
297
- requires_python = ">=3.10"
298
- summary = "Composable command line interface toolkit"
299
- groups = ["dev"]
300
- marker = "python_version == \"3.12\""
301
- dependencies = [
302
- "colorama; platform_system == \"Windows\"",
303
- ]
304
- files = [
305
- {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"},
306
- {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"},
307
- ]
308
-
309
- [[package]]
310
- name = "colorama"
311
- version = "0.4.6"
312
- requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
313
- summary = "Cross-platform colored terminal text."
314
- groups = ["default", "dev"]
315
- marker = "sys_platform == \"win32\" and python_version == \"3.12\" or platform_system == \"Windows\" and python_version == \"3.12\""
316
- files = [
317
- {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
318
- {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
319
- ]
320
-
321
- [[package]]
322
- name = "comm"
323
- version = "0.2.3"
324
- requires_python = ">=3.8"
325
- summary = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
326
- groups = ["default"]
327
- marker = "python_version == \"3.12\""
328
- files = [
329
- {file = "comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417"},
330
- {file = "comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971"},
331
- ]
332
-
333
  [[package]]
334
  name = "contourpy"
335
  version = "1.3.3"
@@ -391,86 +153,6 @@ files = [
391
  {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"},
392
  ]
393
 
394
- [[package]]
395
- name = "debugpy"
396
- version = "1.8.20"
397
- requires_python = ">=3.8"
398
- summary = "An implementation of the Debug Adapter Protocol for Python"
399
- groups = ["default"]
400
- marker = "python_version == \"3.12\""
401
- files = [
402
- {file = "debugpy-1.8.20-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:4ae3135e2089905a916909ef31922b2d733d756f66d87345b3e5e52b7a55f13d"},
403
- {file = "debugpy-1.8.20-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:88f47850a4284b88bd2bfee1f26132147d5d504e4e86c22485dfa44b97e19b4b"},
404
- {file = "debugpy-1.8.20-cp312-cp312-win32.whl", hash = "sha256:4057ac68f892064e5f98209ab582abfee3b543fb55d2e87610ddc133a954d390"},
405
- {file = "debugpy-1.8.20-cp312-cp312-win_amd64.whl", hash = "sha256:a1a8f851e7cf171330679ef6997e9c579ef6dd33c9098458bd9986a0f4ca52e3"},
406
- {file = "debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7"},
407
- {file = "debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33"},
408
- ]
409
-
410
- [[package]]
411
- name = "decorator"
412
- version = "5.2.1"
413
- requires_python = ">=3.8"
414
- summary = "Decorators for Humans"
415
- groups = ["default"]
416
- marker = "python_version == \"3.12\""
417
- files = [
418
- {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"},
419
- {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"},
420
- ]
421
-
422
- [[package]]
423
- name = "defusedxml"
424
- version = "0.7.1"
425
- requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
426
- summary = "XML bomb protection for Python stdlib modules"
427
- groups = ["default"]
428
- marker = "python_version == \"3.12\""
429
- files = [
430
- {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
431
- {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
432
- ]
433
-
434
- [[package]]
435
- name = "executing"
436
- version = "2.2.1"
437
- requires_python = ">=3.8"
438
- summary = "Get the currently executing AST node of a frame, and other information"
439
- groups = ["default"]
440
- marker = "python_version == \"3.12\""
441
- files = [
442
- {file = "executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017"},
443
- {file = "executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4"},
444
- ]
445
-
446
- [[package]]
447
- name = "fastjsonschema"
448
- version = "2.21.2"
449
- summary = "Fastest Python implementation of JSON schema"
450
- groups = ["default"]
451
- marker = "python_version == \"3.12\""
452
- files = [
453
- {file = "fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463"},
454
- {file = "fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de"},
455
- ]
456
-
457
- [[package]]
458
- name = "flake8"
459
- version = "7.3.0"
460
- requires_python = ">=3.9"
461
- summary = "the modular source code checker: pep8 pyflakes and co"
462
- groups = ["dev"]
463
- marker = "python_version == \"3.12\""
464
- dependencies = [
465
- "mccabe<0.8.0,>=0.7.0",
466
- "pycodestyle<2.15.0,>=2.14.0",
467
- "pyflakes<3.5.0,>=3.4.0",
468
- ]
469
- files = [
470
- {file = "flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e"},
471
- {file = "flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872"},
472
- ]
473
-
474
  [[package]]
475
  name = "fonttools"
476
  version = "4.61.1"
@@ -491,21 +173,6 @@ files = [
491
  {file = "fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69"},
492
  ]
493
 
494
- [[package]]
495
- name = "fqdn"
496
- version = "1.5.1"
497
- requires_python = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
498
- summary = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
499
- groups = ["default"]
500
- marker = "python_version == \"3.12\""
501
- dependencies = [
502
- "cached-property>=1.3.0; python_version < \"3.8\"",
503
- ]
504
- files = [
505
- {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
506
- {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
507
- ]
508
-
509
  [[package]]
510
  name = "frozendict"
511
  version = "2.4.7"
@@ -518,52 +185,6 @@ files = [
518
  {file = "frozendict-2.4.7.tar.gz", hash = "sha256:e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd"},
519
  ]
520
 
521
- [[package]]
522
- name = "h11"
523
- version = "0.16.0"
524
- requires_python = ">=3.8"
525
- summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
526
- groups = ["default"]
527
- marker = "python_version == \"3.12\""
528
- files = [
529
- {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"},
530
- {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"},
531
- ]
532
-
533
- [[package]]
534
- name = "httpcore"
535
- version = "1.0.9"
536
- requires_python = ">=3.8"
537
- summary = "A minimal low-level HTTP client."
538
- groups = ["default"]
539
- marker = "python_version == \"3.12\""
540
- dependencies = [
541
- "certifi",
542
- "h11>=0.16",
543
- ]
544
- files = [
545
- {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"},
546
- {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"},
547
- ]
548
-
549
- [[package]]
550
- name = "httpx"
551
- version = "0.28.1"
552
- requires_python = ">=3.8"
553
- summary = "The next generation HTTP client."
554
- groups = ["default"]
555
- marker = "python_version == \"3.12\""
556
- dependencies = [
557
- "anyio",
558
- "certifi",
559
- "httpcore==1.*",
560
- "idna",
561
- ]
562
- files = [
563
- {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
564
- {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
565
- ]
566
-
567
  [[package]]
568
  name = "idna"
569
  version = "3.11"
@@ -577,787 +198,85 @@ files = [
577
  ]
578
 
579
  [[package]]
580
- name = "iniconfig"
581
- version = "2.3.0"
582
- requires_python = ">=3.10"
583
- summary = "brain-dead simple config-ini parsing"
584
- groups = ["dev"]
585
  marker = "python_version == \"3.12\""
586
  files = [
587
- {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"},
588
- {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"},
589
  ]
590
 
591
  [[package]]
592
- name = "ipykernel"
593
- version = "7.2.0"
594
  requires_python = ">=3.10"
595
- summary = "IPython Kernel for Jupyter"
596
  groups = ["default"]
597
  marker = "python_version == \"3.12\""
598
- dependencies = [
599
- "appnope>=0.1.2; platform_system == \"Darwin\"",
600
- "comm>=0.1.1",
601
- "debugpy>=1.6.5",
602
- "ipython>=7.23.1",
603
- "jupyter-client>=8.8.0",
604
- "jupyter-core!=6.0.*,>=5.1",
605
- "matplotlib-inline>=0.1",
606
- "nest-asyncio>=1.4",
607
- "packaging>=22",
608
- "psutil>=5.7",
609
- "pyzmq>=25",
610
- "tornado>=6.4.1",
611
- "traitlets>=5.4.0",
612
- ]
613
  files = [
614
- {file = "ipykernel-7.2.0-py3-none-any.whl", hash = "sha256:3bbd4420d2b3cc105cbdf3756bfc04500b1e52f090a90716851f3916c62e1661"},
615
- {file = "ipykernel-7.2.0.tar.gz", hash = "sha256:18ed160b6dee2cbb16e5f3575858bc19d8f1fe6046a9a680c708494ce31d909e"},
 
 
 
 
 
 
 
 
 
 
 
 
616
  ]
617
 
618
  [[package]]
619
- name = "ipython"
620
- version = "9.11.0"
621
- requires_python = ">=3.12"
622
- summary = "IPython: Productive Interactive Computing"
623
  groups = ["default"]
624
  marker = "python_version == \"3.12\""
625
  dependencies = [
626
- "colorama>=0.4.4; sys_platform == \"win32\"",
627
- "decorator>=5.1.0",
628
- "ipython-pygments-lexers>=1.0.0",
629
- "jedi>=0.18.2",
630
- "matplotlib-inline>=0.1.6",
631
- "pexpect>4.6; sys_platform != \"win32\" and sys_platform != \"emscripten\"",
632
- "prompt-toolkit<3.1.0,>=3.0.41",
633
- "pygments>=2.14.0",
634
- "stack-data>=0.6.0",
635
- "traitlets>=5.13.0",
636
  ]
637
  files = [
638
- {file = "ipython-9.11.0-py3-none-any.whl", hash = "sha256:6922d5bcf944c6e525a76a0a304451b60a2b6f875e86656d8bc2dfda5d710e19"},
639
- {file = "ipython-9.11.0.tar.gz", hash = "sha256:2a94bc4406b22ecc7e4cb95b98450f3ea493a76bec8896cda11b78d7752a6667"},
 
 
 
 
 
 
640
  ]
641
 
642
  [[package]]
643
- name = "ipython-pygments-lexers"
644
- version = "1.1.1"
645
- requires_python = ">=3.8"
646
- summary = "Defines a variety of Pygments lexers for highlighting IPython code."
647
  groups = ["default"]
648
  marker = "python_version == \"3.12\""
649
- dependencies = [
650
- "pygments",
651
- ]
652
  files = [
653
- {file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c"},
654
- {file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81"},
655
  ]
656
 
657
  [[package]]
658
- name = "ipywidgets"
659
- version = "8.1.8"
660
- requires_python = ">=3.7"
661
- summary = "Jupyter interactive widgets"
662
- groups = ["default"]
663
- marker = "python_version == \"3.12\""
664
- dependencies = [
665
- "comm>=0.1.3",
666
- "ipython>=6.1.0",
667
- "jupyterlab-widgets~=3.0.15",
668
- "traitlets>=4.3.1",
669
- "widgetsnbextension~=4.0.14",
670
- ]
671
- files = [
672
- {file = "ipywidgets-8.1.8-py3-none-any.whl", hash = "sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e"},
673
- {file = "ipywidgets-8.1.8.tar.gz", hash = "sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668"},
674
- ]
675
-
676
- [[package]]
677
- name = "isoduration"
678
- version = "20.11.0"
679
- requires_python = ">=3.7"
680
- summary = "Operations with ISO 8601 durations"
681
- groups = ["default"]
682
- marker = "python_version == \"3.12\""
683
- dependencies = [
684
- "arrow>=0.15.0",
685
- ]
686
- files = [
687
- {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
688
- {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
689
- ]
690
-
691
- [[package]]
692
- name = "jedi"
693
- version = "0.19.2"
694
- requires_python = ">=3.6"
695
- summary = "An autocompletion tool for Python that can be used for text editors."
696
- groups = ["default"]
697
- marker = "python_version == \"3.12\""
698
- dependencies = [
699
- "parso<0.9.0,>=0.8.4",
700
- ]
701
- files = [
702
- {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"},
703
- {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"},
704
- ]
705
-
706
- [[package]]
707
- name = "jinja2"
708
- version = "3.1.6"
709
- requires_python = ">=3.7"
710
- summary = "A very fast and expressive template engine."
711
- groups = ["default"]
712
- marker = "python_version == \"3.12\""
713
- dependencies = [
714
- "MarkupSafe>=2.0",
715
- ]
716
- files = [
717
- {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
718
- {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
719
- ]
720
-
721
- [[package]]
722
- name = "joblib"
723
- version = "1.5.3"
724
- requires_python = ">=3.9"
725
- summary = "Lightweight pipelining with Python functions"
726
- groups = ["default"]
727
- marker = "python_version == \"3.12\""
728
- files = [
729
- {file = "joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713"},
730
- {file = "joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3"},
731
- ]
732
-
733
- [[package]]
734
- name = "json5"
735
- version = "0.13.0"
736
- requires_python = ">=3.8.0"
737
- summary = "A Python implementation of the JSON5 data format."
738
- groups = ["default"]
739
- marker = "python_version == \"3.12\""
740
- files = [
741
- {file = "json5-0.13.0-py3-none-any.whl", hash = "sha256:9a08e1dd65f6a4d4c6fa82d216cf2477349ec2346a38fd70cc11d2557499fbcc"},
742
- {file = "json5-0.13.0.tar.gz", hash = "sha256:b1edf8d487721c0bf64d83c28e91280781f6e21f4a797d3261c7c828d4c165bf"},
743
- ]
744
-
745
- [[package]]
746
- name = "jsonpointer"
747
- version = "3.0.0"
748
- requires_python = ">=3.7"
749
- summary = "Identify specific nodes in a JSON document (RFC 6901) "
750
- groups = ["default"]
751
- marker = "python_version == \"3.12\""
752
- files = [
753
- {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"},
754
- {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"},
755
- ]
756
-
757
- [[package]]
758
- name = "jsonschema"
759
- version = "4.26.0"
760
- requires_python = ">=3.10"
761
- summary = "An implementation of JSON Schema validation for Python"
762
- groups = ["default"]
763
- marker = "python_version == \"3.12\""
764
- dependencies = [
765
- "attrs>=22.2.0",
766
- "jsonschema-specifications>=2023.03.6",
767
- "referencing>=0.28.4",
768
- "rpds-py>=0.25.0",
769
- ]
770
- files = [
771
- {file = "jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"},
772
- {file = "jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"},
773
- ]
774
-
775
- [[package]]
776
- name = "jsonschema-specifications"
777
- version = "2025.9.1"
778
- requires_python = ">=3.9"
779
- summary = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
780
- groups = ["default"]
781
- marker = "python_version == \"3.12\""
782
- dependencies = [
783
- "referencing>=0.31.0",
784
- ]
785
- files = [
786
- {file = "jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe"},
787
- {file = "jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"},
788
- ]
789
-
790
- [[package]]
791
- name = "jsonschema"
792
- version = "4.26.0"
793
- extras = ["format-nongpl"]
794
- requires_python = ">=3.10"
795
- summary = "An implementation of JSON Schema validation for Python"
796
- groups = ["default"]
797
- marker = "python_version == \"3.12\""
798
- dependencies = [
799
- "fqdn",
800
- "idna",
801
- "isoduration",
802
- "jsonpointer>1.13",
803
- "jsonschema==4.26.0",
804
- "rfc3339-validator",
805
- "rfc3986-validator>0.1.0",
806
- "rfc3987-syntax>=1.1.0",
807
- "uri-template",
808
- "webcolors>=24.6.0",
809
- ]
810
- files = [
811
- {file = "jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"},
812
- {file = "jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"},
813
- ]
814
-
815
- [[package]]
816
- name = "jupyter"
817
- version = "1.1.1"
818
- summary = "Jupyter metapackage. Install all the Jupyter components in one go."
819
- groups = ["default"]
820
- marker = "python_version == \"3.12\""
821
- dependencies = [
822
- "ipykernel",
823
- "ipywidgets",
824
- "jupyter-console",
825
- "jupyterlab",
826
- "nbconvert",
827
- "notebook",
828
- ]
829
- files = [
830
- {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"},
831
- {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"},
832
- ]
833
-
834
- [[package]]
835
- name = "jupyter-client"
836
- version = "8.8.0"
837
- requires_python = ">=3.10"
838
- summary = "Jupyter protocol implementation and client libraries"
839
- groups = ["default"]
840
- marker = "python_version == \"3.12\""
841
- dependencies = [
842
- "jupyter-core>=5.1",
843
- "python-dateutil>=2.8.2",
844
- "pyzmq>=25.0",
845
- "tornado>=6.4.1",
846
- "traitlets>=5.3",
847
- ]
848
- files = [
849
- {file = "jupyter_client-8.8.0-py3-none-any.whl", hash = "sha256:f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a"},
850
- {file = "jupyter_client-8.8.0.tar.gz", hash = "sha256:d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e"},
851
- ]
852
-
853
- [[package]]
854
- name = "jupyter-console"
855
- version = "6.6.3"
856
- requires_python = ">=3.7"
857
- summary = "Jupyter terminal console"
858
- groups = ["default"]
859
- marker = "python_version == \"3.12\""
860
- dependencies = [
861
- "ipykernel>=6.14",
862
- "ipython",
863
- "jupyter-client>=7.0.0",
864
- "jupyter-core!=5.0.*,>=4.12",
865
- "prompt-toolkit>=3.0.30",
866
- "pygments",
867
- "pyzmq>=17",
868
- "traitlets>=5.4",
869
- ]
870
- files = [
871
- {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
872
- {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
873
- ]
874
-
875
- [[package]]
876
- name = "jupyter-core"
877
- version = "5.9.1"
878
- requires_python = ">=3.10"
879
- summary = "Jupyter core package. A base package on which Jupyter projects rely."
880
- groups = ["default"]
881
- marker = "python_version == \"3.12\""
882
- dependencies = [
883
- "platformdirs>=2.5",
884
- "traitlets>=5.3",
885
- ]
886
- files = [
887
- {file = "jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407"},
888
- {file = "jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508"},
889
- ]
890
-
891
- [[package]]
892
- name = "jupyter-events"
893
- version = "0.12.0"
894
- requires_python = ">=3.9"
895
- summary = "Jupyter Event System library"
896
- groups = ["default"]
897
- marker = "python_version == \"3.12\""
898
- dependencies = [
899
- "jsonschema[format-nongpl]>=4.18.0",
900
- "packaging",
901
- "python-json-logger>=2.0.4",
902
- "pyyaml>=5.3",
903
- "referencing",
904
- "rfc3339-validator",
905
- "rfc3986-validator>=0.1.1",
906
- "traitlets>=5.3",
907
- ]
908
- files = [
909
- {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"},
910
- {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"},
911
- ]
912
-
913
- [[package]]
914
- name = "jupyter-lsp"
915
- version = "2.3.0"
916
- requires_python = ">=3.8"
917
- summary = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
918
- groups = ["default"]
919
- marker = "python_version == \"3.12\""
920
- dependencies = [
921
- "importlib-metadata>=4.8.3; python_version < \"3.10\"",
922
- "jupyter-server>=1.1.2",
923
- ]
924
- files = [
925
- {file = "jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f"},
926
- {file = "jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245"},
927
- ]
928
-
929
- [[package]]
930
- name = "jupyter-server"
931
- version = "2.17.0"
932
- requires_python = ">=3.9"
933
- summary = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
934
- groups = ["default"]
935
- marker = "python_version == \"3.12\""
936
- dependencies = [
937
- "anyio>=3.1.0",
938
- "argon2-cffi>=21.1",
939
- "jinja2>=3.0.3",
940
- "jupyter-client>=7.4.4",
941
- "jupyter-core!=5.0.*,>=4.12",
942
- "jupyter-events>=0.11.0",
943
- "jupyter-server-terminals>=0.4.4",
944
- "nbconvert>=6.4.4",
945
- "nbformat>=5.3.0",
946
- "overrides>=5.0; python_version < \"3.12\"",
947
- "packaging>=22.0",
948
- "prometheus-client>=0.9",
949
- "pywinpty>=2.0.1; os_name == \"nt\"",
950
- "pyzmq>=24",
951
- "send2trash>=1.8.2",
952
- "terminado>=0.8.3",
953
- "tornado>=6.2.0",
954
- "traitlets>=5.6.0",
955
- "websocket-client>=1.7",
956
- ]
957
- files = [
958
- {file = "jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f"},
959
- {file = "jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5"},
960
- ]
961
-
962
- [[package]]
963
- name = "jupyter-server-terminals"
964
- version = "0.5.4"
965
- requires_python = ">=3.8"
966
- summary = "A Jupyter Server Extension Providing Terminals."
967
- groups = ["default"]
968
- marker = "python_version == \"3.12\""
969
- dependencies = [
970
- "pywinpty>=2.0.3; os_name == \"nt\"",
971
- "terminado>=0.8.3",
972
- ]
973
- files = [
974
- {file = "jupyter_server_terminals-0.5.4-py3-none-any.whl", hash = "sha256:55be353fc74a80bc7f3b20e6be50a55a61cd525626f578dcb66a5708e2007d14"},
975
- {file = "jupyter_server_terminals-0.5.4.tar.gz", hash = "sha256:bbda128ed41d0be9020349f9f1f2a4ab9952a73ed5f5ac9f1419794761fb87f5"},
976
- ]
977
-
978
- [[package]]
979
- name = "jupyterlab"
980
- version = "4.5.5"
981
- requires_python = ">=3.9"
982
- summary = "JupyterLab computational environment"
983
- groups = ["default"]
984
- marker = "python_version == \"3.12\""
985
- dependencies = [
986
- "async-lru>=1.0.0",
987
- "httpx<1,>=0.25.0",
988
- "importlib-metadata>=4.8.3; python_version < \"3.10\"",
989
- "ipykernel!=6.30.0,>=6.5.0",
990
- "jinja2>=3.0.3",
991
- "jupyter-core",
992
- "jupyter-lsp>=2.0.0",
993
- "jupyter-server<3,>=2.4.0",
994
- "jupyterlab-server<3,>=2.28.0",
995
- "notebook-shim>=0.2",
996
- "packaging",
997
- "setuptools>=41.1.0",
998
- "tomli>=1.2.2; python_version < \"3.11\"",
999
- "tornado>=6.2.0",
1000
- "traitlets",
1001
- ]
1002
- files = [
1003
- {file = "jupyterlab-4.5.5-py3-none-any.whl", hash = "sha256:a35694a40a8e7f2e82f387472af24e61b22adcce87b5a8ab97a5d9c486202a6d"},
1004
- {file = "jupyterlab-4.5.5.tar.gz", hash = "sha256:eac620698c59eb810e1729909be418d9373d18137cac66637141abba613b3fda"},
1005
- ]
1006
-
1007
- [[package]]
1008
- name = "jupyterlab-pygments"
1009
- version = "0.3.0"
1010
- requires_python = ">=3.8"
1011
- summary = "Pygments theme using JupyterLab CSS variables"
1012
- groups = ["default"]
1013
- marker = "python_version == \"3.12\""
1014
- files = [
1015
- {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
1016
- {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
1017
- ]
1018
-
1019
- [[package]]
1020
- name = "jupyterlab-server"
1021
- version = "2.28.0"
1022
- requires_python = ">=3.8"
1023
- summary = "A set of server components for JupyterLab and JupyterLab like applications."
1024
- groups = ["default"]
1025
- marker = "python_version == \"3.12\""
1026
- dependencies = [
1027
- "babel>=2.10",
1028
- "importlib-metadata>=4.8.3; python_version < \"3.10\"",
1029
- "jinja2>=3.0.3",
1030
- "json5>=0.9.0",
1031
- "jsonschema>=4.18.0",
1032
- "jupyter-server<3,>=1.21",
1033
- "packaging>=21.3",
1034
- "requests>=2.31",
1035
- ]
1036
- files = [
1037
- {file = "jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968"},
1038
- {file = "jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c"},
1039
- ]
1040
-
1041
- [[package]]
1042
- name = "jupyterlab-widgets"
1043
- version = "3.0.16"
1044
- requires_python = ">=3.7"
1045
- summary = "Jupyter interactive widgets for JupyterLab"
1046
- groups = ["default"]
1047
- marker = "python_version == \"3.12\""
1048
- files = [
1049
- {file = "jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8"},
1050
- {file = "jupyterlab_widgets-3.0.16.tar.gz", hash = "sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0"},
1051
- ]
1052
-
1053
- [[package]]
1054
- name = "kiwisolver"
1055
- version = "1.4.9"
1056
- requires_python = ">=3.10"
1057
- summary = "A fast implementation of the Cassowary constraint solver"
1058
- groups = ["default"]
1059
- marker = "python_version == \"3.12\""
1060
- files = [
1061
- {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999"},
1062
- {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2"},
1063
- {file = "kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14"},
1064
- {file = "kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04"},
1065
- {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752"},
1066
- {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77"},
1067
- {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198"},
1068
- {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d"},
1069
- {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab"},
1070
- {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2"},
1071
- {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145"},
1072
- {file = "kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54"},
1073
- {file = "kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60"},
1074
- {file = "kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d"},
1075
- ]
1076
-
1077
- [[package]]
1078
- name = "lark"
1079
- version = "1.3.1"
1080
- requires_python = ">=3.8"
1081
- summary = "a modern parsing library"
1082
- groups = ["default"]
1083
- marker = "python_version == \"3.12\""
1084
- files = [
1085
- {file = "lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12"},
1086
- {file = "lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905"},
1087
- ]
1088
-
1089
- [[package]]
1090
- name = "lxml"
1091
- version = "6.0.2"
1092
- requires_python = ">=3.8"
1093
- summary = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
1094
- groups = ["default"]
1095
- marker = "python_version == \"3.12\""
1096
- files = [
1097
- {file = "lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456"},
1098
- {file = "lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924"},
1099
- {file = "lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f"},
1100
- {file = "lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534"},
1101
- {file = "lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564"},
1102
- {file = "lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f"},
1103
- {file = "lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0"},
1104
- {file = "lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192"},
1105
- {file = "lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0"},
1106
- {file = "lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092"},
1107
- {file = "lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f"},
1108
- {file = "lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8"},
1109
- {file = "lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f"},
1110
- {file = "lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6"},
1111
- {file = "lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322"},
1112
- {file = "lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849"},
1113
- {file = "lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f"},
1114
- {file = "lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6"},
1115
- {file = "lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62"},
1116
- ]
1117
-
1118
- [[package]]
1119
- name = "markupsafe"
1120
- version = "3.0.3"
1121
- requires_python = ">=3.9"
1122
- summary = "Safely add untrusted strings to HTML/XML markup."
1123
- groups = ["default"]
1124
- marker = "python_version == \"3.12\""
1125
- files = [
1126
- {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"},
1127
- {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"},
1128
- {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"},
1129
- {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"},
1130
- {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"},
1131
- {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"},
1132
- {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"},
1133
- {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"},
1134
- {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"},
1135
- {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"},
1136
- {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"},
1137
- {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"},
1138
- ]
1139
-
1140
- [[package]]
1141
- name = "matplotlib"
1142
- version = "3.10.8"
1143
- requires_python = ">=3.10"
1144
- summary = "Python plotting package"
1145
- groups = ["default"]
1146
- marker = "python_version == \"3.12\""
1147
- dependencies = [
1148
- "contourpy>=1.0.1",
1149
- "cycler>=0.10",
1150
- "fonttools>=4.22.0",
1151
- "kiwisolver>=1.3.1",
1152
- "numpy>=1.23",
1153
- "packaging>=20.0",
1154
- "pillow>=8",
1155
- "pyparsing>=3",
1156
- "python-dateutil>=2.7",
1157
- ]
1158
- files = [
1159
- {file = "matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a"},
1160
- {file = "matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58"},
1161
- {file = "matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04"},
1162
- {file = "matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f"},
1163
- {file = "matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466"},
1164
- {file = "matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf"},
1165
- {file = "matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b"},
1166
- {file = "matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3"},
1167
- ]
1168
-
1169
- [[package]]
1170
- name = "matplotlib-inline"
1171
- version = "0.2.1"
1172
- requires_python = ">=3.9"
1173
- summary = "Inline Matplotlib backend for Jupyter"
1174
- groups = ["default"]
1175
- marker = "python_version == \"3.12\""
1176
- dependencies = [
1177
- "traitlets",
1178
- ]
1179
- files = [
1180
- {file = "matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76"},
1181
- {file = "matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe"},
1182
- ]
1183
-
1184
- [[package]]
1185
- name = "mccabe"
1186
- version = "0.7.0"
1187
- requires_python = ">=3.6"
1188
- summary = "McCabe checker, plugin for flake8"
1189
- groups = ["dev"]
1190
- marker = "python_version == \"3.12\""
1191
- files = [
1192
- {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
1193
- {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
1194
- ]
1195
-
1196
- [[package]]
1197
- name = "mistune"
1198
- version = "3.2.0"
1199
- requires_python = ">=3.8"
1200
- summary = "A sane and fast Markdown parser with useful plugins and renderers"
1201
- groups = ["default"]
1202
- marker = "python_version == \"3.12\""
1203
- dependencies = [
1204
- "typing-extensions; python_version < \"3.11\"",
1205
- ]
1206
- files = [
1207
- {file = "mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1"},
1208
- {file = "mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a"},
1209
- ]
1210
-
1211
- [[package]]
1212
- name = "multitasking"
1213
- version = "0.0.12"
1214
- summary = "Non-blocking Python methods using decorators"
1215
- groups = ["default"]
1216
- marker = "python_version == \"3.12\""
1217
- files = [
1218
- {file = "multitasking-0.0.12.tar.gz", hash = "sha256:2fba2fa8ed8c4b85e227c5dd7dc41c7d658de3b6f247927316175a57349b84d1"},
1219
- ]
1220
-
1221
- [[package]]
1222
- name = "mypy-extensions"
1223
- version = "1.1.0"
1224
- requires_python = ">=3.8"
1225
- summary = "Type system extensions for programs checked with the mypy type checker."
1226
- groups = ["dev"]
1227
- marker = "python_version == \"3.12\""
1228
- files = [
1229
- {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"},
1230
- {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"},
1231
- ]
1232
-
1233
- [[package]]
1234
- name = "narwhals"
1235
- version = "2.17.0"
1236
- requires_python = ">=3.9"
1237
- summary = "Extremely lightweight compatibility layer between dataframe libraries"
1238
- groups = ["default"]
1239
- marker = "python_version == \"3.12\""
1240
- files = [
1241
- {file = "narwhals-2.17.0-py3-none-any.whl", hash = "sha256:2ac5307b7c2b275a7d66eeda906b8605e3d7a760951e188dcfff86e8ebe083dd"},
1242
- {file = "narwhals-2.17.0.tar.gz", hash = "sha256:ebd5bc95bcfa2f8e89a8ac09e2765a63055162837208e67b42d6eeb6651d5e67"},
1243
- ]
1244
-
1245
- [[package]]
1246
- name = "nbclient"
1247
- version = "0.10.4"
1248
- requires_python = ">=3.10.0"
1249
- summary = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
1250
- groups = ["default"]
1251
- marker = "python_version == \"3.12\""
1252
- dependencies = [
1253
- "jupyter-client>=6.1.12",
1254
- "jupyter-core!=5.0.*,>=4.12",
1255
- "nbformat>=5.1.3",
1256
- "traitlets>=5.4",
1257
- ]
1258
- files = [
1259
- {file = "nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440"},
1260
- {file = "nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9"},
1261
- ]
1262
-
1263
- [[package]]
1264
- name = "nbconvert"
1265
- version = "7.17.0"
1266
- requires_python = ">=3.9"
1267
- summary = "Convert Jupyter Notebooks (.ipynb files) to other formats."
1268
- groups = ["default"]
1269
- marker = "python_version == \"3.12\""
1270
- dependencies = [
1271
- "beautifulsoup4",
1272
- "bleach[css]!=5.0.0",
1273
- "defusedxml",
1274
- "importlib-metadata>=3.6; python_version < \"3.10\"",
1275
- "jinja2>=3.0",
1276
- "jupyter-core>=4.7",
1277
- "jupyterlab-pygments",
1278
- "markupsafe>=2.0",
1279
- "mistune<4,>=2.0.3",
1280
- "nbclient>=0.5.0",
1281
- "nbformat>=5.7",
1282
- "packaging",
1283
- "pandocfilters>=1.4.1",
1284
- "pygments>=2.4.1",
1285
- "traitlets>=5.1",
1286
- ]
1287
- files = [
1288
- {file = "nbconvert-7.17.0-py3-none-any.whl", hash = "sha256:4f99a63b337b9a23504347afdab24a11faa7d86b405e5c8f9881cd313336d518"},
1289
- {file = "nbconvert-7.17.0.tar.gz", hash = "sha256:1b2696f1b5be12309f6c7d707c24af604b87dfaf6d950794c7b07acab96dda78"},
1290
- ]
1291
-
1292
- [[package]]
1293
- name = "nbformat"
1294
- version = "5.10.4"
1295
- requires_python = ">=3.8"
1296
- summary = "The Jupyter Notebook format"
1297
- groups = ["default"]
1298
- marker = "python_version == \"3.12\""
1299
- dependencies = [
1300
- "fastjsonschema>=2.15",
1301
- "jsonschema>=2.6",
1302
- "jupyter-core!=5.0.*,>=4.12",
1303
- "traitlets>=5.1",
1304
- ]
1305
- files = [
1306
- {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"},
1307
- {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"},
1308
- ]
1309
-
1310
- [[package]]
1311
- name = "nest-asyncio"
1312
- version = "1.6.0"
1313
- requires_python = ">=3.5"
1314
- summary = "Patch asyncio to allow nested event loops"
1315
- groups = ["default"]
1316
- marker = "python_version == \"3.12\""
1317
- files = [
1318
- {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
1319
- {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
1320
- ]
1321
-
1322
- [[package]]
1323
- name = "notebook"
1324
- version = "7.5.4"
1325
- requires_python = ">=3.9"
1326
- summary = "Jupyter Notebook - A web-based notebook environment for interactive computing"
1327
- groups = ["default"]
1328
- marker = "python_version == \"3.12\""
1329
- dependencies = [
1330
- "jupyter-server<3,>=2.4.0",
1331
- "jupyterlab-server<3,>=2.28.0",
1332
- "jupyterlab<4.6,>=4.5.5",
1333
- "notebook-shim<0.3,>=0.2",
1334
- "tornado>=6.2.0",
1335
- ]
1336
- files = [
1337
- {file = "notebook-7.5.4-py3-none-any.whl", hash = "sha256:860e31782b3d3a25ca0819ff039f5cf77845d1bf30c78ef9528b88b25e0a9850"},
1338
- {file = "notebook-7.5.4.tar.gz", hash = "sha256:b928b2ba22cb63aa83df2e0e76fe3697950a0c1c4a41b84ebccf1972b1bb5771"},
1339
- ]
1340
-
1341
- [[package]]
1342
- name = "notebook-shim"
1343
- version = "0.2.4"
1344
- requires_python = ">=3.7"
1345
- summary = "A shim layer for notebook traits and config"
1346
- groups = ["default"]
1347
- marker = "python_version == \"3.12\""
1348
- dependencies = [
1349
- "jupyter-server<3,>=1.8",
1350
- ]
1351
- files = [
1352
- {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"},
1353
- {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"},
1354
- ]
1355
-
1356
- [[package]]
1357
- name = "numpy"
1358
- version = "2.4.2"
1359
- requires_python = ">=3.11"
1360
- summary = "Fundamental package for array computing in Python"
1361
  groups = ["default"]
1362
  marker = "python_version == \"3.12\""
1363
  files = [
@@ -1380,7 +299,7 @@ name = "packaging"
1380
  version = "26.0"
1381
  requires_python = ">=3.8"
1382
  summary = "Core utilities for Python packages"
1383
- groups = ["default", "dev"]
1384
  marker = "python_version == \"3.12\""
1385
  files = [
1386
  {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"},
@@ -1413,59 +332,6 @@ files = [
1413
  {file = "pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8"},
1414
  ]
1415
 
1416
- [[package]]
1417
- name = "pandas-datareader"
1418
- version = "0.10.0"
1419
- requires_python = ">=3.6"
1420
- summary = "Data readers extracted from the pandas codebase,should be compatible with recent pandas versions"
1421
- groups = ["default"]
1422
- marker = "python_version == \"3.12\""
1423
- dependencies = [
1424
- "lxml",
1425
- "pandas>=0.23",
1426
- "requests>=2.19.0",
1427
- ]
1428
- files = [
1429
- {file = "pandas-datareader-0.10.0.tar.gz", hash = "sha256:9fc3c63d39bc0c10c2683f1c6d503ff625020383e38f6cbe14134826b454d5a6"},
1430
- {file = "pandas_datareader-0.10.0-py3-none-any.whl", hash = "sha256:0b95ff3635bc3ee1a6073521b557ab0e3c39d219f4a3b720b6b0bc6e8cdb4bb7"},
1431
- ]
1432
-
1433
- [[package]]
1434
- name = "pandocfilters"
1435
- version = "1.5.1"
1436
- requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
1437
- summary = "Utilities for writing pandoc filters in python"
1438
- groups = ["default"]
1439
- marker = "python_version == \"3.12\""
1440
- files = [
1441
- {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
1442
- {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
1443
- ]
1444
-
1445
- [[package]]
1446
- name = "parso"
1447
- version = "0.8.6"
1448
- requires_python = ">=3.6"
1449
- summary = "A Python Parser"
1450
- groups = ["default"]
1451
- marker = "python_version == \"3.12\""
1452
- files = [
1453
- {file = "parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff"},
1454
- {file = "parso-0.8.6.tar.gz", hash = "sha256:2b9a0332696df97d454fa67b81618fd69c35a7b90327cbe6ba5c92d2c68a7bfd"},
1455
- ]
1456
-
1457
- [[package]]
1458
- name = "pathspec"
1459
- version = "1.0.4"
1460
- requires_python = ">=3.9"
1461
- summary = "Utility library for gitignore style pattern matching of file paths."
1462
- groups = ["dev"]
1463
- marker = "python_version == \"3.12\""
1464
- files = [
1465
- {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"},
1466
- {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"},
1467
- ]
1468
-
1469
  [[package]]
1470
  name = "patsy"
1471
  version = "1.0.2"
@@ -1484,26 +350,12 @@ files = [
1484
  [[package]]
1485
  name = "peewee"
1486
  version = "4.0.1"
1487
- summary = "a little orm"
1488
- groups = ["default"]
1489
- marker = "python_version == \"3.12\""
1490
- files = [
1491
- {file = "peewee-4.0.1-py3-none-any.whl", hash = "sha256:10afaa02c9f6d0f2dfe0f5b9007075c985eb141ab740a8831e37be2a61b3595c"},
1492
- {file = "peewee-4.0.1.tar.gz", hash = "sha256:beb1a173a52952a4d69197ca36408166740b2ced339c0e8159617c3fa1e1c4da"},
1493
- ]
1494
-
1495
- [[package]]
1496
- name = "pexpect"
1497
- version = "4.9.0"
1498
- summary = "Pexpect allows easy control of interactive console applications."
1499
  groups = ["default"]
1500
- marker = "(sys_platform != \"win32\" and sys_platform != \"emscripten\") and python_version == \"3.12\""
1501
- dependencies = [
1502
- "ptyprocess>=0.5",
1503
- ]
1504
  files = [
1505
- {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
1506
- {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
1507
  ]
1508
 
1509
  [[package]]
@@ -1533,68 +385,13 @@ name = "platformdirs"
1533
  version = "4.9.4"
1534
  requires_python = ">=3.10"
1535
  summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
1536
- groups = ["default", "dev"]
1537
  marker = "python_version == \"3.12\""
1538
  files = [
1539
  {file = "platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868"},
1540
  {file = "platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934"},
1541
  ]
1542
 
1543
- [[package]]
1544
- name = "plotly"
1545
- version = "6.6.0"
1546
- requires_python = ">=3.8"
1547
- summary = "An open-source interactive data visualization library for Python"
1548
- groups = ["default"]
1549
- marker = "python_version == \"3.12\""
1550
- dependencies = [
1551
- "narwhals>=1.15.1",
1552
- "packaging",
1553
- ]
1554
- files = [
1555
- {file = "plotly-6.6.0-py3-none-any.whl", hash = "sha256:8d6daf0f87412e0c0bfe72e809d615217ab57cc715899a1e5145135a7800d1d0"},
1556
- {file = "plotly-6.6.0.tar.gz", hash = "sha256:b897f15f3b02028d69f755f236be890ba950d0a42d7dfc619b44e2d8cea8748c"},
1557
- ]
1558
-
1559
- [[package]]
1560
- name = "pluggy"
1561
- version = "1.6.0"
1562
- requires_python = ">=3.9"
1563
- summary = "plugin and hook calling mechanisms for python"
1564
- groups = ["dev"]
1565
- marker = "python_version == \"3.12\""
1566
- files = [
1567
- {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"},
1568
- {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"},
1569
- ]
1570
-
1571
- [[package]]
1572
- name = "prometheus-client"
1573
- version = "0.24.1"
1574
- requires_python = ">=3.9"
1575
- summary = "Python client for the Prometheus monitoring system."
1576
- groups = ["default"]
1577
- marker = "python_version == \"3.12\""
1578
- files = [
1579
- {file = "prometheus_client-0.24.1-py3-none-any.whl", hash = "sha256:150db128af71a5c2482b36e588fc8a6b95e498750da4b17065947c16070f4055"},
1580
- {file = "prometheus_client-0.24.1.tar.gz", hash = "sha256:7e0ced7fbbd40f7b84962d5d2ab6f17ef88a72504dcf7c0b40737b43b2a461f9"},
1581
- ]
1582
-
1583
- [[package]]
1584
- name = "prompt-toolkit"
1585
- version = "3.0.52"
1586
- requires_python = ">=3.8"
1587
- summary = "Library for building powerful interactive command lines in Python"
1588
- groups = ["default"]
1589
- marker = "python_version == \"3.12\""
1590
- dependencies = [
1591
- "wcwidth",
1592
- ]
1593
- files = [
1594
- {file = "prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955"},
1595
- {file = "prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855"},
1596
- ]
1597
-
1598
  [[package]]
1599
  name = "protobuf"
1600
  version = "7.34.0"
@@ -1613,59 +410,6 @@ files = [
1613
  {file = "protobuf-7.34.0.tar.gz", hash = "sha256:3871a3df67c710aaf7bb8d214cc997342e63ceebd940c8c7fc65c9b3d697591a"},
1614
  ]
1615
 
1616
- [[package]]
1617
- name = "psutil"
1618
- version = "7.2.2"
1619
- requires_python = ">=3.6"
1620
- summary = "Cross-platform lib for process and system monitoring."
1621
- groups = ["default"]
1622
- marker = "python_version == \"3.12\""
1623
- files = [
1624
- {file = "psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486"},
1625
- {file = "psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979"},
1626
- {file = "psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9"},
1627
- {file = "psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e"},
1628
- {file = "psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8"},
1629
- {file = "psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc"},
1630
- {file = "psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988"},
1631
- {file = "psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee"},
1632
- {file = "psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372"},
1633
- ]
1634
-
1635
- [[package]]
1636
- name = "ptyprocess"
1637
- version = "0.7.0"
1638
- summary = "Run a subprocess in a pseudo terminal"
1639
- groups = ["default"]
1640
- marker = "(sys_platform != \"win32\" and sys_platform != \"emscripten\") and python_version == \"3.12\" or os_name != \"nt\" and python_version == \"3.12\""
1641
- files = [
1642
- {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
1643
- {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
1644
- ]
1645
-
1646
- [[package]]
1647
- name = "pure-eval"
1648
- version = "0.2.3"
1649
- summary = "Safely evaluate AST nodes without side effects"
1650
- groups = ["default"]
1651
- marker = "python_version == \"3.12\""
1652
- files = [
1653
- {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"},
1654
- {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"},
1655
- ]
1656
-
1657
- [[package]]
1658
- name = "pycodestyle"
1659
- version = "2.14.0"
1660
- requires_python = ">=3.9"
1661
- summary = "Python style guide checker"
1662
- groups = ["dev"]
1663
- marker = "python_version == \"3.12\""
1664
- files = [
1665
- {file = "pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d"},
1666
- {file = "pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783"},
1667
- ]
1668
-
1669
  [[package]]
1670
  name = "pycparser"
1671
  version = "3.0"
@@ -1678,30 +422,6 @@ files = [
1678
  {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"},
1679
  ]
1680
 
1681
- [[package]]
1682
- name = "pyflakes"
1683
- version = "3.4.0"
1684
- requires_python = ">=3.9"
1685
- summary = "passive checker of Python programs"
1686
- groups = ["dev"]
1687
- marker = "python_version == \"3.12\""
1688
- files = [
1689
- {file = "pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f"},
1690
- {file = "pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58"},
1691
- ]
1692
-
1693
- [[package]]
1694
- name = "pygments"
1695
- version = "2.19.2"
1696
- requires_python = ">=3.8"
1697
- summary = "Pygments is a syntax highlighting package written in Python."
1698
- groups = ["default", "dev"]
1699
- marker = "python_version == \"3.12\""
1700
- files = [
1701
- {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"},
1702
- {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"},
1703
- ]
1704
-
1705
  [[package]]
1706
  name = "pyparsing"
1707
  version = "3.3.2"
@@ -1714,27 +434,6 @@ files = [
1714
  {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"},
1715
  ]
1716
 
1717
- [[package]]
1718
- name = "pytest"
1719
- version = "9.0.2"
1720
- requires_python = ">=3.10"
1721
- summary = "pytest: simple powerful testing with Python"
1722
- groups = ["dev"]
1723
- marker = "python_version == \"3.12\""
1724
- dependencies = [
1725
- "colorama>=0.4; sys_platform == \"win32\"",
1726
- "exceptiongroup>=1; python_version < \"3.11\"",
1727
- "iniconfig>=1.0.1",
1728
- "packaging>=22",
1729
- "pluggy<2,>=1.5",
1730
- "pygments>=2.7.2",
1731
- "tomli>=1; python_version < \"3.11\"",
1732
- ]
1733
- files = [
1734
- {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"},
1735
- {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"},
1736
- ]
1737
-
1738
  [[package]]
1739
  name = "python-dateutil"
1740
  version = "2.9.0.post0"
@@ -1750,38 +449,6 @@ files = [
1750
  {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
1751
  ]
1752
 
1753
- [[package]]
1754
- name = "python-json-logger"
1755
- version = "4.0.0"
1756
- requires_python = ">=3.8"
1757
- summary = "JSON Log Formatter for the Python Logging Package"
1758
- groups = ["default"]
1759
- marker = "python_version == \"3.12\""
1760
- dependencies = [
1761
- "typing-extensions; python_version < \"3.10\"",
1762
- ]
1763
- files = [
1764
- {file = "python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2"},
1765
- {file = "python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f"},
1766
- ]
1767
-
1768
- [[package]]
1769
- name = "pytokens"
1770
- version = "0.4.1"
1771
- requires_python = ">=3.8"
1772
- summary = "A Fast, spec compliant Python 3.14+ tokenizer that runs on older Pythons."
1773
- groups = ["dev"]
1774
- marker = "python_version == \"3.12\""
1775
- files = [
1776
- {file = "pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:140709331e846b728475786df8aeb27d24f48cbcf7bcd449f8de75cae7a45083"},
1777
- {file = "pytokens-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d6c4268598f762bc8e91f5dbf2ab2f61f7b95bdc07953b602db879b3c8c18e1"},
1778
- {file = "pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24afde1f53d95348b5a0eb19488661147285ca4dd7ed752bbc3e1c6242a304d1"},
1779
- {file = "pytokens-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5ad948d085ed6c16413eb5fec6b3e02fa00dc29a2534f088d3302c47eb59adf9"},
1780
- {file = "pytokens-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68"},
1781
- {file = "pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de"},
1782
- {file = "pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a"},
1783
- ]
1784
-
1785
  [[package]]
1786
  name = "pytz"
1787
  version = "2026.1.post1"
@@ -1793,81 +460,6 @@ files = [
1793
  {file = "pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1"},
1794
  ]
1795
 
1796
- [[package]]
1797
- name = "pywinpty"
1798
- version = "3.0.3"
1799
- requires_python = ">=3.9"
1800
- summary = "Pseudo terminal support for Windows from Python."
1801
- groups = ["default"]
1802
- marker = "os_name == \"nt\" and python_version == \"3.12\""
1803
- files = [
1804
- {file = "pywinpty-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:c9081df0e49ffa86d15db4a6ba61530630e48707f987df42c9d3313537e81fc0"},
1805
- {file = "pywinpty-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:15e79d870e18b678fb8a5a6105fd38496b55697c66e6fc0378236026bc4d59e9"},
1806
- {file = "pywinpty-3.0.3.tar.gz", hash = "sha256:523441dc34d231fb361b4b00f8c99d3f16de02f5005fd544a0183112bcc22412"},
1807
- ]
1808
-
1809
- [[package]]
1810
- name = "pyyaml"
1811
- version = "6.0.3"
1812
- requires_python = ">=3.8"
1813
- summary = "YAML parser and emitter for Python"
1814
- groups = ["default"]
1815
- marker = "python_version == \"3.12\""
1816
- files = [
1817
- {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"},
1818
- {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"},
1819
- {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"},
1820
- {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"},
1821
- {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"},
1822
- {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"},
1823
- {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"},
1824
- {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"},
1825
- {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"},
1826
- {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"},
1827
- {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"},
1828
- ]
1829
-
1830
- [[package]]
1831
- name = "pyzmq"
1832
- version = "27.1.0"
1833
- requires_python = ">=3.8"
1834
- summary = "Python bindings for 0MQ"
1835
- groups = ["default"]
1836
- marker = "python_version == \"3.12\""
1837
- dependencies = [
1838
- "cffi; implementation_name == \"pypy\"",
1839
- ]
1840
- files = [
1841
- {file = "pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc"},
1842
- {file = "pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113"},
1843
- {file = "pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233"},
1844
- {file = "pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31"},
1845
- {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28"},
1846
- {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856"},
1847
- {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496"},
1848
- {file = "pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd"},
1849
- {file = "pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf"},
1850
- {file = "pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f"},
1851
- {file = "pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540"},
1852
- ]
1853
-
1854
- [[package]]
1855
- name = "referencing"
1856
- version = "0.37.0"
1857
- requires_python = ">=3.10"
1858
- summary = "JSON Referencing + Python"
1859
- groups = ["default"]
1860
- marker = "python_version == \"3.12\""
1861
- dependencies = [
1862
- "attrs>=22.2.0",
1863
- "rpds-py>=0.7.0",
1864
- "typing-extensions>=4.4.0; python_version < \"3.13\"",
1865
- ]
1866
- files = [
1867
- {file = "referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231"},
1868
- {file = "referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"},
1869
- ]
1870
-
1871
  [[package]]
1872
  name = "requests"
1873
  version = "2.32.5"
@@ -1886,74 +478,6 @@ files = [
1886
  {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
1887
  ]
1888
 
1889
- [[package]]
1890
- name = "rfc3339-validator"
1891
- version = "0.1.4"
1892
- requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
1893
- summary = "A pure python RFC3339 validator"
1894
- groups = ["default"]
1895
- marker = "python_version == \"3.12\""
1896
- dependencies = [
1897
- "six",
1898
- ]
1899
- files = [
1900
- {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
1901
- {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
1902
- ]
1903
-
1904
- [[package]]
1905
- name = "rfc3986-validator"
1906
- version = "0.1.1"
1907
- requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
1908
- summary = "Pure python rfc3986 validator"
1909
- groups = ["default"]
1910
- marker = "python_version == \"3.12\""
1911
- files = [
1912
- {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
1913
- {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
1914
- ]
1915
-
1916
- [[package]]
1917
- name = "rfc3987-syntax"
1918
- version = "1.1.0"
1919
- requires_python = ">=3.9"
1920
- summary = "Helper functions to syntactically validate strings according to RFC 3987."
1921
- groups = ["default"]
1922
- marker = "python_version == \"3.12\""
1923
- dependencies = [
1924
- "lark>=1.2.2",
1925
- ]
1926
- files = [
1927
- {file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f"},
1928
- {file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d"},
1929
- ]
1930
-
1931
- [[package]]
1932
- name = "rpds-py"
1933
- version = "0.30.0"
1934
- requires_python = ">=3.10"
1935
- summary = "Python bindings to Rust's persistent data structures (rpds)"
1936
- groups = ["default"]
1937
- marker = "python_version == \"3.12\""
1938
- files = [
1939
- {file = "rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad"},
1940
- {file = "rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05"},
1941
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28"},
1942
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd"},
1943
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f"},
1944
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1"},
1945
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23"},
1946
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6"},
1947
- {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51"},
1948
- {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5"},
1949
- {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e"},
1950
- {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394"},
1951
- {file = "rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf"},
1952
- {file = "rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b"},
1953
- {file = "rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e"},
1954
- {file = "rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84"},
1955
- ]
1956
-
1957
  [[package]]
1958
  name = "scikit-learn"
1959
  version = "1.8.0"
@@ -2018,30 +542,6 @@ files = [
2018
  {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"},
2019
  ]
2020
 
2021
- [[package]]
2022
- name = "send2trash"
2023
- version = "2.1.0"
2024
- requires_python = ">=3.8"
2025
- summary = "Send file to trash natively under Mac OS X, Windows and Linux"
2026
- groups = ["default"]
2027
- marker = "python_version == \"3.12\""
2028
- files = [
2029
- {file = "send2trash-2.1.0-py3-none-any.whl", hash = "sha256:0da2f112e6d6bb22de6aa6daa7e144831a4febf2a87261451c4ad849fe9a873c"},
2030
- {file = "send2trash-2.1.0.tar.gz", hash = "sha256:1c72b39f09457db3c05ce1d19158c2cbef4c32b8bedd02c155e49282b7ea7459"},
2031
- ]
2032
-
2033
- [[package]]
2034
- name = "setuptools"
2035
- version = "82.0.0"
2036
- requires_python = ">=3.9"
2037
- summary = "Easily download, build, install, upgrade, and uninstall Python packages"
2038
- groups = ["default"]
2039
- marker = "python_version == \"3.12\""
2040
- files = [
2041
- {file = "setuptools-82.0.0-py3-none-any.whl", hash = "sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0"},
2042
- {file = "setuptools-82.0.0.tar.gz", hash = "sha256:22e0a2d69474c6ae4feb01951cb69d515ed23728cf96d05513d36e42b62b37cb"},
2043
- ]
2044
-
2045
  [[package]]
2046
  name = "six"
2047
  version = "1.17.0"
@@ -2066,22 +566,6 @@ files = [
2066
  {file = "soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349"},
2067
  ]
2068
 
2069
- [[package]]
2070
- name = "stack-data"
2071
- version = "0.6.3"
2072
- summary = "Extract data from python stack frames and tracebacks for informative displays"
2073
- groups = ["default"]
2074
- marker = "python_version == \"3.12\""
2075
- dependencies = [
2076
- "asttokens>=2.1.0",
2077
- "executing>=1.2.0",
2078
- "pure-eval",
2079
- ]
2080
- files = [
2081
- {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
2082
- {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
2083
- ]
2084
-
2085
  [[package]]
2086
  name = "statsmodels"
2087
  version = "0.14.6"
@@ -2106,23 +590,6 @@ files = [
2106
  {file = "statsmodels-0.14.6.tar.gz", hash = "sha256:4d17873d3e607d398b85126cd4ed7aad89e4e9d89fc744cdab1af3189a996c2a"},
2107
  ]
2108
 
2109
- [[package]]
2110
- name = "terminado"
2111
- version = "0.18.1"
2112
- requires_python = ">=3.8"
2113
- summary = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
2114
- groups = ["default"]
2115
- marker = "python_version == \"3.12\""
2116
- dependencies = [
2117
- "ptyprocess; os_name != \"nt\"",
2118
- "pywinpty>=1.1.0; os_name == \"nt\"",
2119
- "tornado>=6.1.0",
2120
- ]
2121
- files = [
2122
- {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"},
2123
- {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"},
2124
- ]
2125
-
2126
  [[package]]
2127
  name = "threadpoolctl"
2128
  version = "3.6.0"
@@ -2135,55 +602,6 @@ files = [
2135
  {file = "threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e"},
2136
  ]
2137
 
2138
- [[package]]
2139
- name = "tinycss2"
2140
- version = "1.4.0"
2141
- requires_python = ">=3.8"
2142
- summary = "A tiny CSS parser"
2143
- groups = ["default"]
2144
- marker = "python_version == \"3.12\""
2145
- dependencies = [
2146
- "webencodings>=0.4",
2147
- ]
2148
- files = [
2149
- {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"},
2150
- {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"},
2151
- ]
2152
-
2153
- [[package]]
2154
- name = "tornado"
2155
- version = "6.5.4"
2156
- requires_python = ">=3.9"
2157
- summary = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
2158
- groups = ["default"]
2159
- marker = "python_version == \"3.12\""
2160
- files = [
2161
- {file = "tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9"},
2162
- {file = "tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843"},
2163
- {file = "tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17"},
2164
- {file = "tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335"},
2165
- {file = "tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f"},
2166
- {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84"},
2167
- {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f"},
2168
- {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8"},
2169
- {file = "tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1"},
2170
- {file = "tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc"},
2171
- {file = "tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1"},
2172
- {file = "tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7"},
2173
- ]
2174
-
2175
- [[package]]
2176
- name = "traitlets"
2177
- version = "5.14.3"
2178
- requires_python = ">=3.8"
2179
- summary = "Traitlets Python configuration system"
2180
- groups = ["default"]
2181
- marker = "python_version == \"3.12\""
2182
- files = [
2183
- {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"},
2184
- {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"},
2185
- ]
2186
-
2187
  [[package]]
2188
  name = "typing-extensions"
2189
  version = "4.15.0"
@@ -2202,24 +620,12 @@ version = "2025.3"
2202
  requires_python = ">=2"
2203
  summary = "Provider of IANA time zone data"
2204
  groups = ["default"]
2205
- marker = "python_version == \"3.12\""
2206
  files = [
2207
  {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"},
2208
  {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"},
2209
  ]
2210
 
2211
- [[package]]
2212
- name = "uri-template"
2213
- version = "1.3.0"
2214
- requires_python = ">=3.7"
2215
- summary = "RFC 6570 URI Template Processor"
2216
- groups = ["default"]
2217
- marker = "python_version == \"3.12\""
2218
- files = [
2219
- {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
2220
- {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
2221
- ]
2222
-
2223
  [[package]]
2224
  name = "urllib3"
2225
  version = "2.6.3"
@@ -2232,53 +638,6 @@ files = [
2232
  {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"},
2233
  ]
2234
 
2235
- [[package]]
2236
- name = "wcwidth"
2237
- version = "0.6.0"
2238
- requires_python = ">=3.8"
2239
- summary = "Measures the displayed width of unicode strings in a terminal"
2240
- groups = ["default"]
2241
- marker = "python_version == \"3.12\""
2242
- files = [
2243
- {file = "wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad"},
2244
- {file = "wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159"},
2245
- ]
2246
-
2247
- [[package]]
2248
- name = "webcolors"
2249
- version = "25.10.0"
2250
- requires_python = ">=3.10"
2251
- summary = "A library for working with the color formats defined by HTML and CSS."
2252
- groups = ["default"]
2253
- marker = "python_version == \"3.12\""
2254
- files = [
2255
- {file = "webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d"},
2256
- {file = "webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf"},
2257
- ]
2258
-
2259
- [[package]]
2260
- name = "webencodings"
2261
- version = "0.5.1"
2262
- summary = "Character encoding aliases for legacy web content"
2263
- groups = ["default"]
2264
- marker = "python_version == \"3.12\""
2265
- files = [
2266
- {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
2267
- {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
2268
- ]
2269
-
2270
- [[package]]
2271
- name = "websocket-client"
2272
- version = "1.9.0"
2273
- requires_python = ">=3.9"
2274
- summary = "WebSocket client for Python with low level API options"
2275
- groups = ["default"]
2276
- marker = "python_version == \"3.12\""
2277
- files = [
2278
- {file = "websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef"},
2279
- {file = "websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98"},
2280
- ]
2281
-
2282
  [[package]]
2283
  name = "websockets"
2284
  version = "16.0"
@@ -2300,18 +659,6 @@ files = [
2300
  {file = "websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5"},
2301
  ]
2302
 
2303
- [[package]]
2304
- name = "widgetsnbextension"
2305
- version = "4.0.15"
2306
- requires_python = ">=3.7"
2307
- summary = "Jupyter interactive widgets for Jupyter Notebook"
2308
- groups = ["default"]
2309
- marker = "python_version == \"3.12\""
2310
- files = [
2311
- {file = "widgetsnbextension-4.0.15-py3-none-any.whl", hash = "sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366"},
2312
- {file = "widgetsnbextension-4.0.15.tar.gz", hash = "sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9"},
2313
- ]
2314
-
2315
  [[package]]
2316
  name = "yfinance"
2317
  version = "1.2.0"
 
5
  groups = ["default", "dev"]
6
  strategy = ["inherit_metadata"]
7
  lock_version = "4.5.0"
8
+ content_hash = "sha256:d94860299b339959b58c7f3570ae0211eb3d2862fa64fd4be86e30ffab45975b"
9
 
10
  [[metadata.targets]]
11
  requires_python = "==3.12.*"
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  [[package]]
14
  name = "beautifulsoup4"
15
  version = "4.14.3"
 
26
  {file = "beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86"},
27
  ]
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  [[package]]
30
  name = "certifi"
31
  version = "2026.2.25"
 
92
  {file = "charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644"},
93
  ]
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  [[package]]
96
  name = "contourpy"
97
  version = "1.3.3"
 
153
  {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"},
154
  ]
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  [[package]]
157
  name = "fonttools"
158
  version = "4.61.1"
 
173
  {file = "fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69"},
174
  ]
175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  [[package]]
177
  name = "frozendict"
178
  version = "2.4.7"
 
185
  {file = "frozendict-2.4.7.tar.gz", hash = "sha256:e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd"},
186
  ]
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  [[package]]
189
  name = "idna"
190
  version = "3.11"
 
198
  ]
199
 
200
  [[package]]
201
+ name = "joblib"
202
+ version = "1.5.3"
203
+ requires_python = ">=3.9"
204
+ summary = "Lightweight pipelining with Python functions"
205
+ groups = ["default"]
206
  marker = "python_version == \"3.12\""
207
  files = [
208
+ {file = "joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713"},
209
+ {file = "joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3"},
210
  ]
211
 
212
  [[package]]
213
+ name = "kiwisolver"
214
+ version = "1.4.9"
215
  requires_python = ">=3.10"
216
+ summary = "A fast implementation of the Cassowary constraint solver"
217
  groups = ["default"]
218
  marker = "python_version == \"3.12\""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  files = [
220
+ {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999"},
221
+ {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2"},
222
+ {file = "kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14"},
223
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04"},
224
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752"},
225
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77"},
226
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198"},
227
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d"},
228
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab"},
229
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2"},
230
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145"},
231
+ {file = "kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54"},
232
+ {file = "kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60"},
233
+ {file = "kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d"},
234
  ]
235
 
236
  [[package]]
237
+ name = "matplotlib"
238
+ version = "3.10.8"
239
+ requires_python = ">=3.10"
240
+ summary = "Python plotting package"
241
  groups = ["default"]
242
  marker = "python_version == \"3.12\""
243
  dependencies = [
244
+ "contourpy>=1.0.1",
245
+ "cycler>=0.10",
246
+ "fonttools>=4.22.0",
247
+ "kiwisolver>=1.3.1",
248
+ "numpy>=1.23",
249
+ "packaging>=20.0",
250
+ "pillow>=8",
251
+ "pyparsing>=3",
252
+ "python-dateutil>=2.7",
 
253
  ]
254
  files = [
255
+ {file = "matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a"},
256
+ {file = "matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58"},
257
+ {file = "matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04"},
258
+ {file = "matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f"},
259
+ {file = "matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466"},
260
+ {file = "matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf"},
261
+ {file = "matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b"},
262
+ {file = "matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3"},
263
  ]
264
 
265
  [[package]]
266
+ name = "multitasking"
267
+ version = "0.0.12"
268
+ summary = "Non-blocking Python methods using decorators"
 
269
  groups = ["default"]
270
  marker = "python_version == \"3.12\""
 
 
 
271
  files = [
272
+ {file = "multitasking-0.0.12.tar.gz", hash = "sha256:2fba2fa8ed8c4b85e227c5dd7dc41c7d658de3b6f247927316175a57349b84d1"},
 
273
  ]
274
 
275
  [[package]]
276
+ name = "numpy"
277
+ version = "2.4.2"
278
+ requires_python = ">=3.11"
279
+ summary = "Fundamental package for array computing in Python"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  groups = ["default"]
281
  marker = "python_version == \"3.12\""
282
  files = [
 
299
  version = "26.0"
300
  requires_python = ">=3.8"
301
  summary = "Core utilities for Python packages"
302
+ groups = ["default"]
303
  marker = "python_version == \"3.12\""
304
  files = [
305
  {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"},
 
332
  {file = "pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8"},
333
  ]
334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  [[package]]
336
  name = "patsy"
337
  version = "1.0.2"
 
350
  [[package]]
351
  name = "peewee"
352
  version = "4.0.1"
353
+ summary = "a little orm"
 
 
 
 
 
 
 
 
 
 
 
354
  groups = ["default"]
355
+ marker = "python_version == \"3.12\""
 
 
 
356
  files = [
357
+ {file = "peewee-4.0.1-py3-none-any.whl", hash = "sha256:10afaa02c9f6d0f2dfe0f5b9007075c985eb141ab740a8831e37be2a61b3595c"},
358
+ {file = "peewee-4.0.1.tar.gz", hash = "sha256:beb1a173a52952a4d69197ca36408166740b2ced339c0e8159617c3fa1e1c4da"},
359
  ]
360
 
361
  [[package]]
 
385
  version = "4.9.4"
386
  requires_python = ">=3.10"
387
  summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
388
+ groups = ["default"]
389
  marker = "python_version == \"3.12\""
390
  files = [
391
  {file = "platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868"},
392
  {file = "platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934"},
393
  ]
394
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395
  [[package]]
396
  name = "protobuf"
397
  version = "7.34.0"
 
410
  {file = "protobuf-7.34.0.tar.gz", hash = "sha256:3871a3df67c710aaf7bb8d214cc997342e63ceebd940c8c7fc65c9b3d697591a"},
411
  ]
412
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
  [[package]]
414
  name = "pycparser"
415
  version = "3.0"
 
422
  {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"},
423
  ]
424
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  [[package]]
426
  name = "pyparsing"
427
  version = "3.3.2"
 
434
  {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"},
435
  ]
436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  [[package]]
438
  name = "python-dateutil"
439
  version = "2.9.0.post0"
 
449
  {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
450
  ]
451
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
452
  [[package]]
453
  name = "pytz"
454
  version = "2026.1.post1"
 
460
  {file = "pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1"},
461
  ]
462
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
463
  [[package]]
464
  name = "requests"
465
  version = "2.32.5"
 
478
  {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
479
  ]
480
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
481
  [[package]]
482
  name = "scikit-learn"
483
  version = "1.8.0"
 
542
  {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"},
543
  ]
544
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
545
  [[package]]
546
  name = "six"
547
  version = "1.17.0"
 
566
  {file = "soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349"},
567
  ]
568
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
569
  [[package]]
570
  name = "statsmodels"
571
  version = "0.14.6"
 
590
  {file = "statsmodels-0.14.6.tar.gz", hash = "sha256:4d17873d3e607d398b85126cd4ed7aad89e4e9d89fc744cdab1af3189a996c2a"},
591
  ]
592
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
593
  [[package]]
594
  name = "threadpoolctl"
595
  version = "3.6.0"
 
602
  {file = "threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e"},
603
  ]
604
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
605
  [[package]]
606
  name = "typing-extensions"
607
  version = "4.15.0"
 
620
  requires_python = ">=2"
621
  summary = "Provider of IANA time zone data"
622
  groups = ["default"]
623
+ marker = "(sys_platform == \"emscripten\" or sys_platform == \"win32\") and python_version == \"3.12\""
624
  files = [
625
  {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"},
626
  {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"},
627
  ]
628
 
 
 
 
 
 
 
 
 
 
 
 
 
629
  [[package]]
630
  name = "urllib3"
631
  version = "2.6.3"
 
638
  {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"},
639
  ]
640
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
641
  [[package]]
642
  name = "websockets"
643
  version = "16.0"
 
659
  {file = "websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5"},
660
  ]
661
 
 
 
 
 
 
 
 
 
 
 
 
 
662
  [[package]]
663
  name = "yfinance"
664
  version = "1.2.0"
pyproject.toml CHANGED
@@ -6,7 +6,7 @@ authors = [
6
  {name = "kauabarros-24", email = "martinsbarroskaua@gmail.com"},
7
  ]
8
  dependencies = [
9
- "pandas>=2.0.0",
10
  "numpy>=1.24.0",
11
  "scipy>=1.10.0",
12
  "statsmodels>=0.14.0",
 
6
  {name = "kauabarros-24", email = "martinsbarroskaua@gmail.com"},
7
  ]
8
  dependencies = [
9
+ "pandas>=3.0.1",
10
  "numpy>=1.24.0",
11
  "scipy>=1.10.0",
12
  "statsmodels>=0.14.0",
src/feature_engineering.py CHANGED
@@ -2,48 +2,116 @@ import pandas as pd
2
  import numpy as np
3
  import os
4
 
 
5
  def load_data(ticker, data_dir='data'):
 
 
 
 
6
  ticker_clean = ticker.replace('.', '_')
7
  filename = f"raw_{ticker_clean}.csv"
8
  path = os.path.join(data_dir, filename)
9
- df = pd.read_csv(path)
10
- if 'Date' in df.columns:
11
- df.set_index('Date', inplace=True)
12
- elif 'Unnamed: 0' in df.columns:
13
- df.set_index('Unnamed: 0', inplace=True)
 
 
 
 
14
  df.index = pd.to_datetime(df.index, errors='coerce')
15
- df = df.dropna()
 
 
 
 
 
 
 
 
 
16
  return df
17
 
18
- def resample_monthly(df_daily):
19
- monthly = df_daily.resample('ME').last()
20
- return monthly
21
 
22
- def create_features_and_target(df_monthly, horizon_months):
23
- df = df_monthly.copy()
 
 
 
 
24
  close = df["Close"]
25
- for lag in [1, 2, 3, 4, 5]:
26
- df[f"ret_{lag}m"] = close.pct_change(lag).shift(1)
27
- df['ma6'] = close.rolling(6).mean()
28
- df['ma12'] = close.rolling(12).mean()
29
- df['close/ma6'] = close / df['ma6']
30
- df['close/ma12'] = close / df['ma12']
31
- future_close = close.shift(-horizon_months)
32
- df['target'] = (future_close > close).astype(int)
 
 
 
 
 
 
 
 
 
 
33
  df.dropna(inplace=True)
 
 
 
34
  return df
35
 
36
- def prepare_data_for_all_horizons(ticker, horizons=[10, 24, 60, 120]):
37
- os.makedirs('data', exist_ok=True)
38
- df_daily = load_data(ticker)
39
- print(f"Dados carregados: {len(df_daily)} linhas")
40
- df_monthly = resample_monthly(df_daily)
41
- print(f"Dados mensais: {len(df_monthly)} linhas")
 
 
 
 
 
 
 
42
  for h in horizons:
43
- df_h = create_features_and_target(df_monthly, h)
44
- feature_cols = [col for col in df_h.columns if col not in ['target', 'Close', 'Open', 'High', 'Low', 'Volume']]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  X = df_h[feature_cols]
46
- y = df_h['target']
47
- X.to_csv(f"data/features_{h}m.csv")
48
- y.to_csv(f"data/target_{h}m.csv", header=['target'])
49
- print(f"Horizonte {h} meses: {X.shape[0]} amostras salvas.")
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  import numpy as np
3
  import os
4
 
5
+
6
  def load_data(ticker, data_dir='data'):
7
+
8
+ print("=================================")
9
+ print("Iniciando carregamento de dados")
10
+
11
  ticker_clean = ticker.replace('.', '_')
12
  filename = f"raw_{ticker_clean}.csv"
13
  path = os.path.join(data_dir, filename)
14
+
15
+ print(f"Carregando arquivo: {path}")
16
+
17
+ if not os.path.exists(path):
18
+ raise FileNotFoundError(f"Arquivo não encontrado: {path}")
19
+
20
+ df = pd.read_csv(path, index_col=0)
21
+
22
+ print("Convertendo índice para datetime...")
23
  df.index = pd.to_datetime(df.index, errors='coerce')
24
+
25
+ print("Removendo datas inválidas...")
26
+ df = df[~df.index.isna()]
27
+
28
+ if "Close" not in df.columns:
29
+ print("Colunas disponíveis:", df.columns)
30
+ raise ValueError("Coluna 'Close' não encontrada")
31
+
32
+ print("Dataset carregado:", df.shape)
33
+
34
  return df
35
 
 
 
 
36
 
37
+ def create_features_and_target(df, horizon_days):
38
+
39
+ print(f"Criando features para horizonte {horizon_days} dias")
40
+
41
+ df = df.copy()
42
+
43
  close = df["Close"]
44
+
45
+ # retornos passados
46
+ for lag in [5, 10, 20, 50]:
47
+ df[f"ret_{lag}d"] = close.pct_change(lag).shift(1)
48
+
49
+ # médias móveis
50
+ df["ma20"] = close.rolling(20).mean()
51
+ df["ma50"] = close.rolling(50).mean()
52
+
53
+ # relação preço/média
54
+ df["close_ma20_ratio"] = close / df["ma20"]
55
+ df["close_ma50_ratio"] = close / df["ma50"]
56
+
57
+ # target futuro
58
+ future_close = close.shift(-horizon_days)
59
+
60
+ df["target"] = (future_close > close).astype(int)
61
+
62
  df.dropna(inplace=True)
63
+
64
+ print("Features criadas:", df.shape)
65
+
66
  return df
67
 
68
+
69
+ def prepare_data_for_all_horizons(ticker, horizons=[30, 90, 180, 360]):
70
+
71
+ print("=================================")
72
+ print(f"Preparando dados para {ticker}")
73
+ print("=================================")
74
+
75
+ os.makedirs("data", exist_ok=True)
76
+
77
+ df = load_data(ticker)
78
+
79
+ print("Total de dados:", len(df))
80
+
81
  for h in horizons:
82
+
83
+ print("---------------------------------")
84
+ print(f"Horizonte: {h} dias")
85
+
86
+ df_h = create_features_and_target(df, h)
87
+
88
+ feature_cols = [
89
+ col for col in df_h.columns
90
+ if col not in [
91
+ "target",
92
+ "Close",
93
+ "Open",
94
+ "High",
95
+ "Low",
96
+ "Volume",
97
+ "Adj Close"
98
+ ]
99
+ ]
100
+
101
  X = df_h[feature_cols]
102
+ y = df_h["target"]
103
+
104
+ X_path = f"data/features_{h}d.csv"
105
+ y_path = f"data/target_{h}d.csv"
106
+
107
+ X.to_csv(X_path)
108
+ y.to_csv(y_path, header=["target"])
109
+
110
+ print("Features salvas:", X_path)
111
+ print("Target salvo:", y_path)
112
+ print("Amostras:", X.shape[0])
113
+
114
+
115
+ if __name__ == "__main__":
116
+
117
+ prepare_data_for_all_horizons("PETR4.SA")
src/model_training.py CHANGED
@@ -5,44 +5,105 @@ from sklearn.ensemble import RandomForestClassifier
5
  from sklearn.metrics import accuracy_score, classification_report
6
  import joblib
7
  import os
 
 
 
8
 
9
  def load_features_target(horizon):
 
10
  X = pd.read_csv(f"data/features_{horizon}m.csv", index_col=0)
11
  y = pd.read_csv(f"data/target_{horizon}m.csv", index_col=0).squeeze()
 
12
  return X, y
13
 
 
14
  def temporal_train_split(X, y, test_size=0.2):
15
  n = len(X)
 
 
 
 
16
  split_idx = int(n * (1 - test_size))
17
- X_train, X_test = X.iloc[:split_idx], X.iloc[split_idx:]
18
- y_train, y_test = y.iloc[:split_idx], y.iloc[split_idx:]
 
 
 
 
 
19
  return X_train, X_test, y_train, y_test
20
 
 
21
  def train_model(horizon, model_type='random_forest', save_model=True):
 
22
  X, y = load_features_target(horizon)
23
- X_train, X_test, y_train, y_test = temporal_train_split(X, y, test_size=0.2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  if model_type == 'logistic':
25
  model = LogisticRegression(max_iter=1000, random_state=42)
26
  else:
27
- model = RandomForestClassifier(n_estimators=100, random_state=42)
 
 
 
 
 
 
28
  model.fit(X_train, y_train)
 
 
 
 
 
29
  y_pred = model.predict(X_test)
 
30
  acc = accuracy_score(y_test, y_pred)
31
- report = classification_report(y_test, y_pred, target_names=['Queda', 'Sobe'])
32
- print(f"\nHorizonte: {horizon} meses - {model_type}")
33
  print(f"Acurácia: {acc:.4f}")
 
 
 
 
 
 
 
34
  print(report)
 
35
  if save_model:
36
- os.makedirs('models', exist_ok=True)
37
- joblib.dump(model, f"models/{model_type}_{horizon}m.pkl")
38
- print(f"Modelo salvo em models/{model_type}_{horizon}m.pkl")
39
- return model, acc, report
 
 
 
 
 
 
40
 
41
  def train_all_horizons():
 
42
  horizons = [10, 24, 60, 120]
43
- print("Treinando Random Forest...")
 
 
44
  for h in horizons:
45
  train_model(h, 'random_forest')
46
- print("\nTreinando Regressão Logística...")
 
 
47
  for h in horizons:
48
- train_model(h, 'logistic')
 
5
  from sklearn.metrics import accuracy_score, classification_report
6
  import joblib
7
  import os
8
+ import logging
9
+
10
+
11
 
12
  def load_features_target(horizon):
13
+ print(f"{horizon} - HORIZON")
14
  X = pd.read_csv(f"data/features_{horizon}m.csv", index_col=0)
15
  y = pd.read_csv(f"data/target_{horizon}m.csv", index_col=0).squeeze()
16
+ print(f"Tô aqui: {X, y}")
17
  return X, y
18
 
19
+
20
  def temporal_train_split(X, y, test_size=0.2):
21
  n = len(X)
22
+
23
+ if n == 0:
24
+ return None, None, None, None
25
+
26
  split_idx = int(n * (1 - test_size))
27
+
28
+ X_train = X.iloc[:split_idx]
29
+ X_test = X.iloc[split_idx:]
30
+
31
+ y_train = y.iloc[:split_idx]
32
+ y_test = y.iloc[split_idx:]
33
+
34
  return X_train, X_test, y_train, y_test
35
 
36
+
37
  def train_model(horizon, model_type='random_forest', save_model=True):
38
+
39
  X, y = load_features_target(horizon)
40
+
41
+ print(f"\n========== Horizonte {horizon} ==========")
42
+ print("Shape X:", X.shape)
43
+ print("Shape y:", y.shape)
44
+
45
+ if len(X) == 0:
46
+ print("❌ Dataset vazio. Pulando treino.")
47
+ return None
48
+
49
+ X_train, X_test, y_train, y_test = temporal_train_split(X, y)
50
+
51
+ if X_train is None or len(X_train) == 0:
52
+ print("❌ Sem dados de treino.")
53
+ return None
54
+
55
  if model_type == 'logistic':
56
  model = LogisticRegression(max_iter=1000, random_state=42)
57
  else:
58
+ model = RandomForestClassifier(
59
+ n_estimators=100,
60
+ random_state=42
61
+ )
62
+
63
+ print("Treinando modelo...")
64
+
65
  model.fit(X_train, y_train)
66
+
67
+ if len(X_test) == 0:
68
+ print("⚠️ Sem dados de teste. Modelo treinado mas sem avaliação.")
69
+ return model
70
+
71
  y_pred = model.predict(X_test)
72
+
73
  acc = accuracy_score(y_test, y_pred)
74
+
 
75
  print(f"Acurácia: {acc:.4f}")
76
+
77
+ report = classification_report(
78
+ y_test,
79
+ y_pred,
80
+ target_names=['Queda', 'Sobe']
81
+ )
82
+
83
  print(report)
84
+
85
  if save_model:
86
+ os.makedirs("models", exist_ok=True)
87
+
88
+ path = f"models/{model_type}_{horizon}m.pkl"
89
+
90
+ joblib.dump(model, path)
91
+
92
+ print("Modelo salvo em:", path)
93
+
94
+ return model
95
+
96
 
97
  def train_all_horizons():
98
+
99
  horizons = [10, 24, 60, 120]
100
+
101
+ print("\n===== Random Forest =====")
102
+
103
  for h in horizons:
104
  train_model(h, 'random_forest')
105
+
106
+ print("\n===== Logistic Regression =====")
107
+
108
  for h in horizons:
109
+ train_model(h, 'logistic')