cevheri commited on
Commit
d7801d0
·
1 Parent(s): 66944b7

feat: bot will run async and scheduled

Browse files
Files changed (4) hide show
  1. Dockerfile +2 -1
  2. app.py +23 -0
  3. bot_telegram.py +0 -8
  4. requirements.freeze.txt +475 -0
Dockerfile CHANGED
@@ -21,4 +21,5 @@ ENV PORT=7860
21
  EXPOSE 7860
22
 
23
  # Start command for loop
24
- CMD ["sh", "-c", "python bot_telegram.py & tail -f /dev/null"]
 
 
21
  EXPOSE 7860
22
 
23
  # Start command for loop
24
+ # CMD ["sh", "-c", "python bot_telegram.py & tail -f /dev/null"]
25
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py CHANGED
@@ -1,7 +1,30 @@
1
  from fastapi import FastAPI
 
 
 
2
 
3
  app = FastAPI()
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  @app.get("/")
6
  def greet_json():
7
  return {"Hello": "World!"}
 
1
  from fastapi import FastAPI
2
+ import asyncio
3
+ from bot_telegram import TelegramBot, BOT_TOKEN, BASE_URL
4
+ import logging
5
 
6
  app = FastAPI()
7
 
8
+ async def run_telegram_bot():
9
+ """Run the Telegram bot in the background."""
10
+ logging.info("Starting bot loop...")
11
+ while True:
12
+ try:
13
+ bot = TelegramBot(
14
+ bot_token=BOT_TOKEN,
15
+ base_url=BASE_URL
16
+ )
17
+ bot.run()
18
+ except Exception as e:
19
+ logging.error(f"Bot error: {e}")
20
+ finally:
21
+ await asyncio.sleep(10)
22
+
23
+ @app.on_event("startup")
24
+ async def startup_event():
25
+ """Start the Telegram bot when the FastAPI application starts."""
26
+ asyncio.create_task(run_telegram_bot())
27
+
28
  @app.get("/")
29
  def greet_json():
30
  return {"Hello": "World!"}
bot_telegram.py CHANGED
@@ -250,11 +250,3 @@ class TelegramBot:
250
  logging.info("Starting Telegram bot...")
251
  self.app.run_polling()
252
 
253
-
254
- if __name__ == "__main__":
255
- bot = TelegramBot(
256
- bot_token=BOT_TOKEN,
257
- base_url=BASE_URL
258
- )
259
- bot.run()
260
-
 
250
  logging.info("Starting Telegram bot...")
251
  self.app.run_polling()
252
 
 
 
 
 
 
 
 
 
requirements.freeze.txt ADDED
@@ -0,0 +1,475 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ accelerate==1.3.0
2
+ aiobotocore @ file:///croot/aiobotocore_1714464387507/work
3
+ aiohappyeyeballs @ file:///croot/aiohappyeyeballs_1725434011349/work
4
+ aiohttp @ file:///croot/aiohttp_1725527756643/work
5
+ aioitertools @ file:///tmp/build/80754af9/aioitertools_1607109665762/work
6
+ aiosignal @ file:///tmp/build/80754af9/aiosignal_1637843061372/work
7
+ alabaster @ file:///croot/alabaster_1718201490751/work
8
+ altair @ file:///work/perseverance-python-buildout/croot/altair_1698866618831/work
9
+ anaconda-anon-usage @ file:///croot/anaconda-anon-usage_1710965072196/work
10
+ anaconda-catalogs @ file:///work/perseverance-python-buildout/croot/anaconda-catalogs_1701755653155/work
11
+ anaconda-client @ file:///croot/anaconda-client_1708640631824/work
12
+ anaconda-cloud-auth @ file:///croot/anaconda-cloud-auth_1713991386423/work
13
+ anaconda-navigator @ file:///croot/anaconda-navigator_1727709691943/work
14
+ anaconda-project @ file:///croot/anaconda-project_1706049196717/work
15
+ annotated-types @ file:///croot/annotated-types_1709542908624/work
16
+ anyio @ file:///croot/anyio_1706220167567/work
17
+ appdirs==1.4.4
18
+ archspec @ file:///croot/archspec_1709217642129/work
19
+ argon2-cffi @ file:///opt/conda/conda-bld/argon2-cffi_1645000214183/work
20
+ argon2-cffi-bindings @ file:///work/perseverance-python-buildout/croot/argon2-cffi-bindings_1698877183685/work
21
+ arrow @ file:///work/perseverance-python-buildout/croot/arrow_1698877225835/work
22
+ asgiref==3.8.1
23
+ astroid @ file:///work/perseverance-python-buildout/croot/astroid_1698851155125/work
24
+ astropy @ file:///croot/astropy_1726174598094/work
25
+ astropy-iers-data @ file:///croot/astropy-iers-data_1726000528288/work
26
+ asttokens @ file:///opt/conda/conda-bld/asttokens_1646925590279/work
27
+ async-lru @ file:///work/perseverance-python-buildout/croot/async-lru_1701732681408/work
28
+ atomicwrites==1.4.0
29
+ attrs @ file:///work/perseverance-python-buildout/croot/attrs_1698845858439/work
30
+ Automat @ file:///tmp/build/80754af9/automat_1600298431173/work
31
+ autopep8 @ file:///croot/autopep8_1708962882016/work
32
+ Babel @ file:///work/perseverance-python-buildout/croot/babel_1698863996602/work
33
+ backoff==2.2.1
34
+ bcrypt==4.2.1
35
+ beautifulsoup4 @ file:///croot/beautifulsoup4-split_1718029820055/work
36
+ binaryornot @ file:///tmp/build/80754af9/binaryornot_1617751525010/work
37
+ black @ file:///croot/black_1725573853246/work
38
+ bleach @ file:///opt/conda/conda-bld/bleach_1641577558959/work
39
+ blessed==1.20.0
40
+ blinker @ file:///work/perseverance-python-buildout/croot/blinker_1698846408677/work
41
+ bokeh @ file:///croot/bokeh_1727914487135/work
42
+ boltons @ file:///work/perseverance-python-buildout/croot/boltons_1698851177130/work
43
+ botocore @ file:///croot/botocore_1714460531862/work
44
+ Bottleneck @ file:///croot/bottleneck_1709069899917/work
45
+ Brotli @ file:///croot/brotli-split_1714483155106/work
46
+ build==1.2.2.post1
47
+ CacheControl==0.14.2
48
+ cachetools @ file:///croot/cachetools_1713977085444/work
49
+ certifi @ file:///croot/certifi_1725551672989/work/certifi
50
+ cffi @ file:///croot/cffi_1726856441404/work
51
+ chardet @ file:///work/perseverance-python-buildout/croot/chardet_1698867756032/work
52
+ charset-normalizer @ file:///croot/charset-normalizer_1721748349566/work
53
+ chroma-hnswlib==0.7.3
54
+ chromadb==0.4.24
55
+ cleo==2.1.0
56
+ click @ file:///work/perseverance-python-buildout/croot/click_1698845879718/work
57
+ cloudpickle @ file:///croot/cloudpickle_1721657346512/work
58
+ colorama @ file:///work/perseverance-python-buildout/croot/colorama_1698847155966/work
59
+ colorcet @ file:///croot/colorcet_1709758348067/work
60
+ coloredlogs==15.0.1
61
+ comm @ file:///croot/comm_1709322850197/work
62
+ conda @ file:///croot/conda_1729193882500/work
63
+ conda-build @ file:///croot/conda-build_1726839912356/work
64
+ conda-content-trust @ file:///croot/conda-content-trust_1714483159009/work
65
+ conda-libmamba-solver @ file:///croot/conda-libmamba-solver_1727775630457/work/src
66
+ conda-pack @ file:///croot/conda-pack_1710258022278/work
67
+ conda-package-handling @ file:///croot/conda-package-handling_1718138267740/work
68
+ conda-repo-cli @ file:///croot/conda-repo-cli_1727366904598/work
69
+ conda-token @ file:///croot/conda-token_1718995751285/work
70
+ conda_index @ file:///croot/conda-index_1719338209492/work
71
+ conda_package_streaming @ file:///croot/conda-package-streaming_1718136078615/work
72
+ constantly @ file:///croot/constantly_1703165600746/work
73
+ contourpy @ file:///work/perseverance-python-buildout/croot/contourpy_1701756524386/work
74
+ cookiecutter @ file:///croot/cookiecutter_1711059812130/work
75
+ cpm-kernels==1.0.11
76
+ crashtest==0.4.1
77
+ cryptography @ file:///croot/cryptography_1724940562255/work
78
+ cssselect @ file:///croot/cssselect_1707339882883/work
79
+ cycler @ file:///tmp/build/80754af9/cycler_1637851556182/work
80
+ cytoolz @ file:///croot/cytoolz_1701723583781/work
81
+ dask @ file:///croot/dask-core_1725461349163/work
82
+ dask-expr @ file:///croot/dask-expr_1725522981173/work
83
+ datashader @ file:///croot/datashader_1720533861326/work
84
+ debugpy @ file:///work/perseverance-python-buildout/croot/debugpy_1698884710808/work
85
+ decorator @ file:///opt/conda/conda-bld/decorator_1643638310831/work
86
+ defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work
87
+ Deprecated==1.2.15
88
+ diff-match-patch @ file:///Users/ktietz/demo/mc3/conda-bld/diff-match-patch_1630511840874/work
89
+ dill @ file:///croot/dill_1715094664823/work
90
+ distlib==0.3.9
91
+ distributed @ file:///croot/distributed_1725523003979/work
92
+ distro @ file:///croot/distro_1714488253808/work
93
+ docstring-parser==0.15
94
+ docstring-to-markdown @ file:///work/perseverance-python-buildout/croot/docstring-to-markdown_1698864372211/work
95
+ docutils @ file:///work/perseverance-python-buildout/croot/docutils_1698846509640/work
96
+ dulwich==0.22.7
97
+ durationpy==0.9
98
+ editor==1.6.6
99
+ einops==0.8.0
100
+ et-xmlfile @ file:///work/perseverance-python-buildout/croot/et_xmlfile_1698868193149/work
101
+ executing @ file:///opt/conda/conda-bld/executing_1646925071911/work
102
+ fastapi==0.115.7
103
+ fastjsonschema==2.21.1
104
+ filelock @ file:///work/perseverance-python-buildout/croot/filelock_1701733993137/work
105
+ flake8 @ file:///croot/flake8_1708965256870/work
106
+ Flask @ file:///croot/flask_1716545870149/work
107
+ flatbuffers==25.1.21
108
+ fonttools @ file:///croot/fonttools_1713551344105/work
109
+ frozendict @ file:///croot/frozendict_1713194832637/work
110
+ frozenlist @ file:///work/perseverance-python-buildout/croot/frozenlist_1698886842990/work
111
+ fsspec @ file:///croot/fsspec_1724855583730/work
112
+ gensim @ file:///croot/gensim_1725057941774/work
113
+ gitdb @ file:///tmp/build/80754af9/gitdb_1617117951232/work
114
+ GitPython @ file:///croot/gitpython_1720455034730/work
115
+ google-ai-generativelanguage==0.6.15
116
+ google-api-core==2.24.0
117
+ google-api-python-client==2.159.0
118
+ google-auth==2.38.0
119
+ google-auth-httplib2==0.2.0
120
+ google-generativeai==0.8.4
121
+ googleapis-common-protos==1.66.0
122
+ greenlet @ file:///croot/greenlet_1702059959679/work
123
+ grpcio==1.69.0
124
+ grpcio-status==1.69.0
125
+ h11 @ file:///croot/h11_1706652277403/work
126
+ h5py @ file:///croot/h5py_1715094721489/work
127
+ HeapDict @ file:///Users/ktietz/demo/mc3/conda-bld/heapdict_1630598515714/work
128
+ holoviews @ file:///croot/holoviews_1720533861358/work
129
+ httpcore @ file:///croot/httpcore_1706728464539/work
130
+ httplib2==0.22.0
131
+ httptools==0.6.4
132
+ httpx @ file:///croot/httpx_1723474802858/work
133
+ huggingface-hub==0.27.1
134
+ humanfriendly==10.0
135
+ hvplot @ file:///croot/hvplot_1727775570677/work
136
+ hyperlink @ file:///tmp/build/80754af9/hyperlink_1610130746837/work
137
+ idna @ file:///croot/idna_1714398848350/work
138
+ imagecodecs @ file:///work/perseverance-python-buildout/croot/imagecodecs_1698851963060/work
139
+ imageio @ file:///croot/imageio_1707247282708/work
140
+ imagesize @ file:///work/perseverance-python-buildout/croot/imagesize_1698864514488/work
141
+ imbalanced-learn @ file:///croot/imbalanced-learn_1718132237102/work
142
+ importlib-metadata @ file:///croot/importlib_metadata-suite_1704813515092/work
143
+ importlib_resources==6.5.2
144
+ incremental @ file:///croot/incremental_1708639938299/work
145
+ inflection @ file:///work/perseverance-python-buildout/croot/inflection_1698869084799/work
146
+ iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
147
+ inquirer==3.2.5
148
+ installer==0.7.0
149
+ instructor==0.6.8
150
+ intake @ file:///croot/intake_1726109551815/work
151
+ intervaltree @ file:///Users/ktietz/demo/mc3/conda-bld/intervaltree_1630511889664/work
152
+ ipykernel @ file:///croot/ipykernel_1705933831282/work
153
+ ipython @ file:///croot/ipython_1726064227985/work
154
+ ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work
155
+ ipywidgets @ file:///croot/ipywidgets_1710961502038/work
156
+ isort @ file:///croot/isort_1718289883491/work
157
+ itemadapter @ file:///tmp/build/80754af9/itemadapter_1626442940632/work
158
+ itemloaders @ file:///croot/itemloaders_1708639918324/work
159
+ itsdangerous @ file:///croot/itsdangerous_1716533337253/work
160
+ jaraco.classes @ file:///tmp/build/80754af9/jaraco.classes_1620983179379/work
161
+ jaraco.context==6.0.1
162
+ jaraco.functools==4.1.0
163
+ jedi @ file:///croot/jedi_1721058342488/work
164
+ jeepney @ file:///tmp/build/80754af9/jeepney_1627537048313/work
165
+ jellyfish @ file:///work/perseverance-python-buildout/croot/jellyfish_1698888203179/work
166
+ Jinja2 @ file:///croot/jinja2_1716993405101/work
167
+ jiter==0.8.2
168
+ jmespath @ file:///work/perseverance-python-buildout/croot/jmespath_1701734034266/work
169
+ joblib @ file:///croot/joblib_1718217211762/work
170
+ json5 @ file:///tmp/build/80754af9/json5_1624432770122/work
171
+ jsonpatch @ file:///croot/jsonpatch_1714483231291/work
172
+ jsonpointer==2.1
173
+ jsonschema @ file:///croot/jsonschema_1728486696720/work
174
+ jsonschema-specifications @ file:///work/perseverance-python-buildout/croot/jsonschema-specifications_1701731664072/work
175
+ jupyter @ file:///croot/jupyter_1709837193779/work
176
+ jupyter-console @ file:///work/perseverance-python-buildout/croot/jupyter_console_1707343324117/work
177
+ jupyter-events @ file:///croot/jupyter_events_1718738097486/work
178
+ jupyter-lsp @ file:///work/perseverance-python-buildout/croot/jupyter-lsp-meta_1707343107456/work
179
+ jupyter_client @ file:///work/perseverance-python-buildout/croot/jupyter_client_1701731788627/work
180
+ jupyter_core @ file:///croot/jupyter_core_1718818295206/work
181
+ jupyter_server @ file:///croot/jupyter_server_1718827083372/work
182
+ jupyter_server_terminals @ file:///work/perseverance-python-buildout/croot/jupyter_server_terminals_1701732095362/work
183
+ jupyterlab @ file:///croot/jupyterlab_1725895214311/work
184
+ jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work
185
+ jupyterlab-widgets @ file:///tmp/build/80754af9/jupyterlab_widgets_1609884341231/work
186
+ jupyterlab_server @ file:///croot/jupyterlab_server_1725865349919/work
187
+ keyring==25.6.0
188
+ kiwisolver @ file:///work/perseverance-python-buildout/croot/kiwisolver_1698847502605/work
189
+ kubernetes==31.0.0
190
+ langchain==0.3.15
191
+ langchain-core==0.3.31
192
+ langchain-llm==0.4.15
193
+ langchain-text-splitters==0.3.5
194
+ langsmith==0.3.1
195
+ lazy-object-proxy @ file:///croot/lazy-object-proxy_1712908712693/work
196
+ lazy_loader @ file:///croot/lazy_loader_1718176737906/work
197
+ lckr_jupyterlab_variableinspector @ file:///work/perseverance-python-buildout/croot/jupyterlab-variableinspector_1709066217947/work
198
+ libarchive-c @ file:///croot/python-libarchive-c_1726069797193/work
199
+ libmambapy @ file:///croot/mamba-split_1714483352891/work/libmambapy
200
+ linkify-it-py @ file:///work/perseverance-python-buildout/croot/linkify-it-py_1698889355052/work
201
+ llvmlite @ file:///croot/llvmlite_1720455102465/work
202
+ lmdb @ file:///work/perseverance-python-buildout/croot/python-lmdb_1698865572354/work
203
+ locket @ file:///work/perseverance-python-buildout/croot/locket_1698847555568/work
204
+ loguru==0.7.3
205
+ lxml @ file:///croot/lxml_1715289006750/work
206
+ lz4 @ file:///work/perseverance-python-buildout/croot/lz4_1698895161487/work
207
+ Markdown @ file:///work/perseverance-python-buildout/croot/markdown_1698870813381/work
208
+ markdown-it-py @ file:///work/perseverance-python-buildout/croot/markdown-it-py_1698846045803/work
209
+ MarkupSafe @ file:///work/perseverance-python-buildout/croot/markupsafe_1707342994941/work
210
+ matplotlib==3.9.2
211
+ matplotlib-inline @ file:///work/perseverance-python-buildout/croot/matplotlib-inline_1698864771271/work
212
+ mccabe @ file:///opt/conda/conda-bld/mccabe_1644221741721/work
213
+ mdit-py-plugins @ file:///work/perseverance-python-buildout/croot/mdit-py-plugins_1698895393342/work
214
+ mdurl @ file:///work/perseverance-python-buildout/croot/mdurl_1698845653285/work
215
+ menuinst @ file:///croot/menuinst_1723567589013/work
216
+ mistune @ file:///work/perseverance-python-buildout/croot/mistune_1698895588147/work
217
+ mkl-service==2.4.0
218
+ mkl_fft @ file:///croot/mkl_fft_1725370245198/work
219
+ mkl_random @ file:///croot/mkl_random_1725370241878/work
220
+ mmh3==5.0.1
221
+ monotonic==1.6
222
+ more-itertools @ file:///croot/more-itertools_1727185441804/work
223
+ mpmath @ file:///work/perseverance-python-buildout/croot/mpmath_1698864994882/work
224
+ msgpack @ file:///work/perseverance-python-buildout/croot/msgpack-python_1698846122235/work
225
+ multidict @ file:///croot/multidict_1701096859099/work
226
+ multipledispatch @ file:///work/perseverance-python-buildout/croot/multipledispatch_1698846147141/work
227
+ mypy @ file:///croot/mypy-split_1725573876658/work
228
+ mypy-extensions @ file:///work/perseverance-python-buildout/croot/mypy_extensions_1698863276135/work
229
+ navigator-updater @ file:///croot/navigator-updater_1718030385782/work
230
+ nbclient @ file:///work/perseverance-python-buildout/croot/nbclient_1701731912506/work
231
+ nbconvert @ file:///croot/nbconvert_1728049414448/work
232
+ nbformat @ file:///croot/nbformat_1728049424075/work
233
+ nest-asyncio @ file:///croot/nest-asyncio_1708532673751/work
234
+ networkx @ file:///croot/networkx_1720002482208/work
235
+ nltk @ file:///croot/nltk_1724427688180/work
236
+ notebook @ file:///croot/notebook_1727197365392/work
237
+ notebook_shim @ file:///work/perseverance-python-buildout/croot/notebook-shim_1707343174853/work
238
+ numba @ file:///croot/numba_1720540961817/work
239
+ numexpr @ file:///work/perseverance-python-buildout/croot/numexpr_1698871031164/work
240
+ numpy @ file:///croot/numpy_and_numpy_base_1708638617955/work/dist/numpy-1.26.4-cp312-cp312-linux_x86_64.whl#sha256=1d700f51d8b4fa684d858c9e3b56b1656bc5c82b6b79ff08d4e3b491c430059f
241
+ numpydoc @ file:///croot/numpydoc_1718279157024/work
242
+ nvidia-cublas-cu12==12.4.5.8
243
+ nvidia-cuda-cupti-cu12==12.4.127
244
+ nvidia-cuda-nvrtc-cu12==12.4.127
245
+ nvidia-cuda-runtime-cu12==12.4.127
246
+ nvidia-cudnn-cu12==9.1.0.70
247
+ nvidia-cufft-cu12==11.2.1.3
248
+ nvidia-curand-cu12==10.3.5.147
249
+ nvidia-cusolver-cu12==11.6.1.9
250
+ nvidia-cusparse-cu12==12.3.1.170
251
+ nvidia-nccl-cu12==2.21.5
252
+ nvidia-nvjitlink-cu12==12.4.127
253
+ nvidia-nvtx-cu12==12.4.127
254
+ oauthlib==3.2.2
255
+ ollama==0.4.7
256
+ onnxruntime==1.20.1
257
+ openai==1.60.0
258
+ openpyxl @ file:///croot/openpyxl_1721752957391/work
259
+ opentelemetry-api==1.29.0
260
+ opentelemetry-exporter-otlp-proto-common==1.29.0
261
+ opentelemetry-exporter-otlp-proto-grpc==1.29.0
262
+ opentelemetry-instrumentation==0.50b0
263
+ opentelemetry-instrumentation-asgi==0.50b0
264
+ opentelemetry-instrumentation-fastapi==0.50b0
265
+ opentelemetry-proto==1.29.0
266
+ opentelemetry-sdk==1.29.0
267
+ opentelemetry-semantic-conventions==0.50b0
268
+ opentelemetry-util-http==0.50b0
269
+ orjson==3.10.15
270
+ overrides @ file:///work/perseverance-python-buildout/croot/overrides_1701732220415/work
271
+ packaging @ file:///croot/packaging_1720101850331/work
272
+ pandas @ file:///croot/pandas_1718308974269/work/dist/pandas-2.2.2-cp312-cp312-linux_x86_64.whl#sha256=92c518f7e09edd50b5caa5862636c51d6a29391803f3ada62f68aa52f27d8f92
273
+ pandocfilters @ file:///opt/conda/conda-bld/pandocfilters_1643405455980/work
274
+ panel @ file:///croot/panel_1728066367874/work
275
+ param @ file:///croot/param_1719347913870/work
276
+ parsel @ file:///croot/parsel_1707503445438/work
277
+ parso @ file:///opt/conda/conda-bld/parso_1641458642106/work
278
+ partd @ file:///work/perseverance-python-buildout/croot/partd_1698863295708/work
279
+ pathspec @ file:///work/perseverance-python-buildout/croot/pathspec_1698805478393/work
280
+ patsy @ file:///croot/patsy_1718378176128/work
281
+ peft==0.14.0
282
+ pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work
283
+ pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work
284
+ pillow @ file:///croot/pillow_1721059439630/work
285
+ pkce @ file:///work/perseverance-python-buildout/croot/pkce_1698863336124/work
286
+ pkginfo==1.12.0
287
+ platformdirs @ file:///work/perseverance-python-buildout/croot/platformdirs_1701732573265/work
288
+ plotly @ file:///croot/plotly_1726245554316/work
289
+ pluggy @ file:///work/perseverance-python-buildout/croot/pluggy_1698805497733/work
290
+ ply @ file:///work/perseverance-python-buildout/croot/ply_1698846188635/work
291
+ poetry==2.0.1
292
+ poetry-core==2.0.1
293
+ posthog==3.9.2
294
+ prometheus-client @ file:///work/perseverance-python-buildout/croot/prometheus_client_1698865353814/work
295
+ prompt-toolkit @ file:///croot/prompt-toolkit_1704404351921/work
296
+ Protego @ file:///tmp/build/80754af9/protego_1598657180827/work
297
+ proto-plus==1.25.0
298
+ protobuf==5.29.3
299
+ psutil==5.9.8
300
+ ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
301
+ pulsar-client==3.5.0
302
+ pure-eval @ file:///opt/conda/conda-bld/pure_eval_1646925070566/work
303
+ py-cpuinfo @ file:///work/perseverance-python-buildout/croot/py-cpuinfo_1698865397566/work
304
+ pyarrow @ file:///croot/pyarrow_1721664224170/work/python
305
+ pyasn1 @ file:///Users/ktietz/demo/mc3/conda-bld/pyasn1_1629708007385/work
306
+ pyasn1-modules==0.2.8
307
+ pycodestyle @ file:///croot/pycodestyle_1701910164456/work
308
+ pycosat @ file:///croot/pycosat_1714510623388/work
309
+ pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
310
+ pyct @ file:///work/perseverance-python-buildout/croot/pyct_1698871492339/work
311
+ pycurl @ file:///croot/pycurl_1725370229412/work
312
+ pydantic==2.10.6
313
+ pydantic_core==2.27.2
314
+ pydeck @ file:///croot/pydeck_1706194064552/work
315
+ PyDispatcher @ file:///work/perseverance-python-buildout/croot/pydispatcher_1698871512960/work
316
+ pydocstyle @ file:///work/perseverance-python-buildout/croot/pydocstyle_1698865417470/work
317
+ pyerfa @ file:///croot/pyerfa_1717700762709/work
318
+ pyflakes @ file:///croot/pyflakes_1708962956225/work
319
+ pygame==2.6.1
320
+ Pygments @ file:///work/perseverance-python-buildout/croot/pygments_1698846270603/work
321
+ PyJWT @ file:///croot/pyjwt_1715094751094/work
322
+ pylint @ file:///work/perseverance-python-buildout/croot/pylint_1698865458204/work
323
+ pylint-venv @ file:///croot/pylint-venv_1709837612550/work
324
+ pyls-spyder==0.4.0
325
+ pyodbc @ file:///croot/pyodbc_1725560222485/work
326
+ pyOpenSSL @ file:///croot/pyopenssl_1723651579422/work
327
+ pyparsing @ file:///croot/pyparsing_1725041624202/work
328
+ pyperclip==1.8.2
329
+ PyPika==0.48.9
330
+ pyproject_hooks==1.2.0
331
+ PyQt5==5.15.10
332
+ PyQt5-sip @ file:///work/perseverance-python-buildout/croot/pyqt-split_1698847927472/work/pyqt_sip
333
+ PyQtWebEngine==5.15.6
334
+ PySocks @ file:///work/perseverance-python-buildout/croot/pysocks_1698845478203/work
335
+ pytest @ file:///croot/pytest_1717793244625/work
336
+ python-dateutil @ file:///croot/python-dateutil_1716495738603/work
337
+ python-dotenv @ file:///work/perseverance-python-buildout/croot/python-dotenv_1698846722824/work
338
+ python-json-logger @ file:///work/perseverance-python-buildout/croot/python-json-logger_1698873656334/work
339
+ python-lsp-black @ file:///croot/python-lsp-black_1709232897954/work
340
+ python-lsp-jsonrpc @ file:///croot/python-lsp-jsonrpc_1708962872556/work
341
+ python-lsp-server @ file:///croot/python-lsp-server_1708971736441/work
342
+ python-slugify @ file:///tmp/build/80754af9/python-slugify_1620405669636/work
343
+ python-telegram-bot==21.11.1
344
+ pytoolconfig @ file:///croot/pytoolconfig_1701728692402/work
345
+ pytz @ file:///croot/pytz_1713974312559/work
346
+ pyviz_comms @ file:///croot/pyviz_comms_1711136832766/work
347
+ PyWavelets @ file:///croot/pywavelets_1725657945951/work
348
+ pyxdg @ file:///tmp/build/80754af9/pyxdg_1603822279816/work
349
+ PyYAML @ file:///work/perseverance-python-buildout/croot/pyyaml_1698849903511/work
350
+ pyzmq @ file:///croot/pyzmq_1705605076900/work
351
+ QDarkStyle @ file:///croot/qdarkstyle_1709231003551/work
352
+ qstylizer @ file:///work/perseverance-python-buildout/croot/qstylizer_1698900556042/work/dist/qstylizer-0.2.2-py2.py3-none-any.whl#sha256=6d40f32007acd9673a44b9d879388ca3e09a68f0342daa31cab082bc596303c8
353
+ QtAwesome @ file:///croot/qtawesome_1726169351455/work
354
+ qtconsole @ file:///croot/qtconsole_1709231153903/work
355
+ QtPy @ file:///work/perseverance-python-buildout/croot/qtpy_1701733558435/work
356
+ queuelib @ file:///work/perseverance-python-buildout/croot/queuelib_1698873899800/work
357
+ RapidFuzz==3.11.0
358
+ readchar==4.2.1
359
+ referencing @ file:///work/perseverance-python-buildout/croot/referencing_1701731622327/work
360
+ regex @ file:///croot/regex_1726669635272/work
361
+ requests @ file:///croot/requests_1721410876868/work
362
+ requests-file @ file:///Users/ktietz/demo/mc3/conda-bld/requests-file_1629455781986/work
363
+ requests-oauthlib==2.0.0
364
+ requests-toolbelt @ file:///work/perseverance-python-buildout/croot/requests-toolbelt_1698846872000/work
365
+ rfc3339-validator @ file:///work/perseverance-python-buildout/croot/rfc3339-validator_1698873973408/work
366
+ rfc3986-validator @ file:///work/perseverance-python-buildout/croot/rfc3986-validator_1698874010100/work
367
+ rich @ file:///croot/rich_1720637495510/work
368
+ rope @ file:///croot/rope_1708963153974/work
369
+ rpds-py @ file:///work/perseverance-python-buildout/croot/rpds-py_1698982686240/work
370
+ rsa==4.9
371
+ Rtree @ file:///work/perseverance-python-buildout/croot/rtree_1698900851071/work
372
+ ruamel-yaml-conda @ file:///work/perseverance-python-buildout/croot/ruamel_yaml_1698874047131/work
373
+ ruamel.yaml @ file:///croot/ruamel.yaml_1727980156079/work
374
+ ruamel.yaml.clib @ file:///croot/ruamel.yaml.clib_1727769819935/work
375
+ runs==1.2.2
376
+ s3fs @ file:///croot/s3fs_1724924097918/work
377
+ safetensors==0.5.2
378
+ scikit-image @ file:///croot/scikit-image_1726737398091/work
379
+ scikit-learn @ file:///croot/scikit-learn_1721921875708/work
380
+ scipy @ file:///croot/scipy_1717521478074/work/dist/scipy-1.13.1-cp312-cp312-linux_x86_64.whl#sha256=a60c1bdf983ee297b25e41830d00cc2af50f00bcb47e55578703fef1594ec56e
381
+ Scrapy @ file:///croot/scrapy_1708714682090/work
382
+ seaborn @ file:///croot/seaborn_1718302919398/work
383
+ SecretStorage @ file:///work/perseverance-python-buildout/croot/secretstorage_1698846935813/work
384
+ semver @ file:///croot/semver_1709243621175/work
385
+ Send2Trash @ file:///work/perseverance-python-buildout/croot/send2trash_1701732325573/work
386
+ sentencepiece==0.2.0
387
+ service-identity @ file:///Users/ktietz/demo/mc3/conda-bld/service_identity_1629460757137/work
388
+ setuptools==68.2.2
389
+ shellingham==1.5.4
390
+ sip @ file:///work/perseverance-python-buildout/croot/sip_1698846977033/work
391
+ six @ file:///tmp/build/80754af9/six_1644875935023/work
392
+ smart-open @ file:///work/perseverance-python-buildout/croot/smart_open_1698863627550/work
393
+ smmap @ file:///tmp/build/80754af9/smmap_1611694433573/work
394
+ sniffio @ file:///croot/sniffio_1705431295498/work
395
+ snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1637937080595/work
396
+ sortedcontainers @ file:///tmp/build/80754af9/sortedcontainers_1623949099177/work
397
+ soupsieve @ file:///work/perseverance-python-buildout/croot/soupsieve_1698866207280/work
398
+ Sphinx @ file:///croot/sphinx_1718275386998/work
399
+ sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work
400
+ sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work
401
+ sphinxcontrib-htmlhelp @ file:///tmp/build/80754af9/sphinxcontrib-htmlhelp_1623945626792/work
402
+ sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work
403
+ sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work
404
+ sphinxcontrib-serializinghtml @ file:///croot/sphinxcontrib-serializinghtml_1718201486943/work
405
+ spyder @ file:///croot/spyder_1727197262862/work
406
+ spyder-kernels @ file:///croot/spyder-kernels_1707937713588/work
407
+ SQLAlchemy @ file:///croot/sqlalchemy_1725885050993/work
408
+ stack-data @ file:///opt/conda/conda-bld/stack_data_1646927590127/work
409
+ starlette==0.45.2
410
+ statsmodels @ file:///croot/statsmodels_1718381181899/work
411
+ streamlit @ file:///croot/streamlit_1724335162935/work
412
+ sympy==1.13.1
413
+ tables @ file:///croot/pytables_1725380772899/work
414
+ tabulate @ file:///work/perseverance-python-buildout/croot/tabulate_1701748610754/work
415
+ tblib @ file:///Users/ktietz/demo/mc3/conda-bld/tblib_1629402031467/work
416
+ tenacity @ file:///croot/tenacity_1721222508356/work
417
+ termax==0.1.4
418
+ terminado @ file:///work/perseverance-python-buildout/croot/terminado_1698874934826/work
419
+ text-unidecode @ file:///Users/ktietz/demo/mc3/conda-bld/text-unidecode_1629401354553/work
420
+ textdistance @ file:///tmp/build/80754af9/textdistance_1612461398012/work
421
+ threadpoolctl @ file:///croot/threadpoolctl_1719407800858/work
422
+ three-merge @ file:///tmp/build/80754af9/three-merge_1607553261110/work
423
+ tifffile @ file:///work/perseverance-python-buildout/croot/tifffile_1698866341575/work
424
+ tiktoken==0.8.0
425
+ tinycss2 @ file:///work/perseverance-python-buildout/croot/tinycss2_1698875051986/work
426
+ tldextract @ file:///croot/tldextract_1723064386918/work
427
+ tokenizers==0.21.0
428
+ toml @ file:///tmp/build/80754af9/toml_1616166611790/work
429
+ tomli @ file:///work/perseverance-python-buildout/croot/tomli_1698805555176/work
430
+ tomlkit==0.13.2
431
+ toolz @ file:///work/perseverance-python-buildout/croot/toolz_1698846367152/work
432
+ torch==2.5.1
433
+ tornado @ file:///croot/tornado_1718740109488/work
434
+ tqdm @ file:///croot/tqdm_1724853939799/work
435
+ traitlets @ file:///croot/traitlets_1718227057033/work
436
+ transformers==4.48.1
437
+ transformers-stream-generator==0.0.5
438
+ triton==3.1.0
439
+ trove-classifiers==2025.1.15.22
440
+ truststore @ file:///work/perseverance-python-buildout/croot/truststore_1701735771625/work
441
+ Twisted @ file:///croot/twisted_1708702809815/work
442
+ typer==0.9.4
443
+ typing_extensions==4.12.2
444
+ tzdata @ file:///croot/python-tzdata_1690578112552/work
445
+ uc-micro-py @ file:///work/perseverance-python-buildout/croot/uc-micro-py_1698875458503/work
446
+ ujson @ file:///croot/ujson_1717597529825/work
447
+ unicodedata2 @ file:///croot/unicodedata2_1713212950228/work
448
+ Unidecode @ file:///croot/unidecode_1724790039185/work
449
+ uritemplate==4.1.1
450
+ urllib3 @ file:///croot/urllib3_1727769808118/work
451
+ uvicorn==0.34.0
452
+ uvloop==0.21.0
453
+ virtualenv==20.29.1
454
+ w3lib @ file:///Users/ktietz/demo/mc3/conda-bld/w3lib_1629359764703/work
455
+ watchdog @ file:///croot/watchdog_1717166512516/work
456
+ watchfiles==1.0.4
457
+ wcwidth @ file:///Users/ktietz/demo/mc3/conda-bld/wcwidth_1629357192024/work
458
+ webencodings @ file:///work/perseverance-python-buildout/croot/webencodings_1698866454420/work
459
+ websocket-client @ file:///croot/websocket-client_1715878298792/work
460
+ websockets==14.2
461
+ Werkzeug @ file:///croot/werkzeug_1716533313107/work
462
+ whatthepatch @ file:///work/perseverance-python-buildout/croot/whatthepatch_1698866493803/work
463
+ wheel==0.44.0
464
+ widgetsnbextension @ file:///croot/widgetsnbextension_1710960037596/work
465
+ wrapt @ file:///work/perseverance-python-buildout/croot/wrapt_1698851040578/work
466
+ wurlitzer @ file:///work/perseverance-python-buildout/croot/wurlitzer_1698906481008/work
467
+ xarray @ file:///work/perseverance-python-buildout/croot/xarray_1698851063735/work
468
+ xmod==1.8.1
469
+ xyzservices @ file:///work/perseverance-python-buildout/croot/xyzservices_1698866513675/work
470
+ yapf @ file:///croot/yapf_1708964320665/work
471
+ yarl @ file:///croot/yarl_1725976495189/work
472
+ zict @ file:///work/perseverance-python-buildout/croot/zict_1698876364831/work
473
+ zipp @ file:///work/perseverance-python-buildout/croot/zipp_1707367835224/work
474
+ zope.interface @ file:///work/perseverance-python-buildout/croot/zope.interface_1698866533743/work
475
+ zstandard @ file:///croot/zstandard_1728569189425/work