Closed johnfelipe closed 7 months ago
Install with pip:
pip install investorzilla
Then, create a folder to put your investorzilla.yaml that you’ll have to create by yourself.
Then simply run “investorzilla” into that folder.
Check and tell me the result.
I need to update the readme. Installation process is much easier now.
cd investorzilla/
cp /root/investorzilla/config_examples/investorzilla.yaml /root/investorzilla/investorzilla/investorzilla.yaml
streamlit run streamlit_ui.py
i do that and show me all this log:
2023-12-11 12:32:18,730|INFO|investorzilla.datacache.DataCache|No cache for kind=BCBMarketIndex and id=IPCA
2023-12-11 12:32:18,730|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__BCBMarketIndex
[SQL:
SELECT *
FROM DataCache__BCBMarketIndex
WHERE
__DataCache_id = 'IPCA' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__BCBMarketIndex
WHERE __DataCache_id = 'IPCA'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,739|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=SPY
2023-12-11 12:32:18,740|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = 'SPY' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = 'SPY'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,741|INFO|investorzilla.datacache.DataCache|No cache for kind=BCBMarketIndex and id=SELIC
2023-12-11 12:32:18,743|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__BCBMarketIndex
[SQL:
SELECT *
FROM DataCache__BCBMarketIndex
WHERE
__DataCache_id = 'SELIC' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__BCBMarketIndex
WHERE __DataCache_id = 'SELIC'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,742|INFO|investorzilla.datacache.DataCache|No cache for kind=BCBMarketIndex and id=IGPM
2023-12-11 12:32:18,744|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__BCBMarketIndex
[SQL:
SELECT *
FROM DataCache__BCBMarketIndex
WHERE
__DataCache_id = 'IGPM' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__BCBMarketIndex
WHERE __DataCache_id = 'IGPM'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,744|INFO|investorzilla.datacache.DataCache|No cache for kind=BCBMarketIndex and id=INPC
2023-12-11 12:32:18,745|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__BCBMarketIndex
[SQL:
SELECT *
FROM DataCache__BCBMarketIndex
WHERE
__DataCache_id = 'INPC' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__BCBMarketIndex
WHERE __DataCache_id = 'INPC'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,746|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=^BVSP
2023-12-11 12:32:18,746|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = '^BVSP' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = '^BVSP'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,748|INFO|investorzilla.datacache.DataCache|No cache for kind=BCBMarketIndex and id=CDI
2023-12-11 12:32:18,749|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__BCBMarketIndex
[SQL:
SELECT *
FROM DataCache__BCBMarketIndex
WHERE
__DataCache_id = 'CDI' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__BCBMarketIndex
WHERE __DataCache_id = 'CDI'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:18,750|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=IVV
2023-12-11 12:32:18,754|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = 'IVV' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = 'IVV'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:20,661|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBMarketIndex, id=IGPM, time=2023-12-11 12:32:20.660668+00:00
2023-12-11 12:32:20,768|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=VOO
2023-12-11 12:32:20,768|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = 'VOO' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = 'VOO'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:20,852|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBMarketIndex, id=INPC, time=2023-12-11 12:32:20.851804+00:00
2023-12-11 12:32:20,872|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBMarketIndex, id=IPCA, time=2023-12-11 12:32:20.871999+00:00
2023-12-11 12:32:21,021|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=^GSPC
2023-12-11 12:32:21,021|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = '^GSPC' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = '^GSPC'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:21,039|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=^DJI
2023-12-11 12:32:21,040|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = '^DJI' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = '^DJI'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:29,491|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBMarketIndex, id=CDI, time=2023-12-11 12:32:29.490471+00:00
2023-12-11 12:32:29,933|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBMarketIndex, id=SELIC, time=2023-12-11 12:32:29.932705+00:00
2023-12-11 12:32:31,637|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=^IXIC
2023-12-11 12:32:31,643|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = '^IXIC' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = '^IXIC'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:32:32,098|INFO|investorzilla.datacache.DataCache|No cache for kind=YahooMarketIndex and id=QQQM
2023-12-11 12:32:32,098|INFO|investorzilla.datacache.DataCache|(sqlite3.OperationalError) no such table: DataCache__YahooMarketIndex
[SQL:
SELECT *
FROM DataCache__YahooMarketIndex
WHERE
__DataCache_id = 'QQQM' AND
__DataCache_time =
(
SELECT DISTINCT __DataCache_time
FROM DataCache__YahooMarketIndex
WHERE __DataCache_id = 'QQQM'
ORDER BY __DataCache_time DESC
LIMIT 1
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2023-12-11 12:36:54,231|INFO|investorzilla.datacache.DataCache|Set cache to kind=YahooMarketIndex, id=QQQM, time=2023-12-11 12:36:54.230849+00:00
2023-12-11 12:36:55,293|INFO|investorzilla.datacache.DataCache|Set cache to kind=YahooMarketIndex, id=^IXIC, time=2023-12-11 12:36:55.291659+00:00
2023-12-11 12:37:03,896|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBCurrencyConverter, id=USD, time=2023-12-11 12:37:03.895808+00:00
2023-12-11 12:37:10,187|INFO|investorzilla.datacache.DataCache|Set cache to kind=BCBCurrencyConverter, id=EUR, time=2023-12-11 12:37:10.186897+00:00
2023-12-11 12:41:06,559|INFO|investorzilla.datacache.DataCache|Set cache to kind=YahooMarketIndex, id=QQQ, time=2023-12-11 12:41:06.558714+00:00
2023-12-11 12:41:07.819 Uncaught app exception
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/streamlit/runtime/scriptrunner/script_runner.py", line 534, in _run_script
exec(code, module.__dict__)
File "/root/investorzilla/investorzilla/streamlit_ui.py", line 511, in <module>
StreamlitInvestorzillaApp(refresh=False)
File "/root/investorzilla/investorzilla/streamlit_ui.py", line 76, in __init__
streamlit.session_state.investor=investorzilla.Investor(
File "/usr/local/lib/python3.8/dist-packages/investorzilla/investor.py", line 49, in __init__
self.loadDomains(refresh)
File "/usr/local/lib/python3.8/dist-packages/investorzilla/investor.py", line 125, in loadDomains
part['obj']=task.result()
File "/usr/lib/python3.8/concurrent/futures/_base.py", line 437, in result
return self.__get_result()
File "/usr/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
raise self._exception
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.8/dist-packages/investorzilla/portfolios/google_sheets.py", line 95, in __init__
super().__init__(
File "/usr/local/lib/python3.8/dist-packages/investorzilla/portfolio.py", line 65, in __init__
self.balance
File "/usr/local/lib/python3.8/dist-packages/investorzilla/portfolio.py", line 165, in balance
return self.getProperty('balance')
File "/usr/local/lib/python3.8/dist-packages/investorzilla/portfolio.py", line 200, in getProperty
self.callRefreshData()
File "/usr/local/lib/python3.8/dist-packages/investorzilla/portfolio.py", line 248, in callRefreshData
self.refreshData()
File "/usr/local/lib/python3.8/dist-packages/investorzilla/portfolios/google_sheets.py", line 153, in refreshData
self.creds[self.sheetStructure['sheet']] = flow.run_local_server(port=0)
File "/root/.local/lib/python3.8/site-packages/google_auth_oauthlib/flow.py", line 444, in run_local_server
webbrowser.get(browser).open(auth_url, new=1, autoraise=True)
File "/usr/lib/python3.8/webbrowser.py", line 65, in get
raise Error("could not locate runnable browser")
webbrowser.Error: could not locate runnable browser
but still not working
You don´t need to run the streamlit
command.
Just run investorzilla
command from the same folder where your investorzilla.yaml
file lives.
The Google Sheets backend is good but obsolete because it demands you authenticate with Google everytime in a browser UI. This is what is failling.
Just to get you going, copy the example spreadsheet to your Google Drive and export as CSVs the ledger and balance sheets. Then adapt this example to your URLs.
I´m updating the README to explain this.
https://docs.google.com/spreadsheets/d/1U2SAvRuwcA74heo2dAeFvKuH5zFLowlCGdn4-tcVC9U/edit?usp=sharing
- type: !!python/name:investorzilla.portfolios.google_sheets.GoogleSheetsBalanceAndLedger ''
params:
sheetStructure:
# This Google Sheet is an example that should work out of the box
sheet: 1U2SAvRuwcA74heo2dAeFvKuH5zFLowlCGdn4-tcVC9U
is any line more to edit?
You´ll have trouble using the Google Sheets driver.
Publish each sheet as CSV and then use the URIBalanceOrLedger
driver.
Wait, I see the YAML example for this is not updated on the repo, let me update it and provide the link.
This new example should get you going with fake data on a Google Sheets.
Just put it on an empty folder and run investorzilla
from inside that folder.
can u send me a video pls, because i cant test your app, look my all process in this video:
https://drive.google.com/file/d/1agnEevOS2_AbMvDpShYyJEi01o2DGYQb/view?usp=sharing
help me asap
Here is a video of an installation from scratch and boot with example configuration.
https://www.youtube.com/watch?v=CrR-PoXhPQY
I also published this video on the project README.
You are helping me find documentation details that needed fix. Thank you for that.
witch version of python, i have ubuntu 22 with python 3.10 using env or can run in ubuntu 20 with python 3.8, i do this steps:
git clone https://github.com/avibrazil/investorzilla
cd investorzilla/
python3 -m venv env
source env/bin/activate
pip3 install investorzilla
cd investorzilla/
mkdir myportfolio
cp /root/investorzilla/config_examples/investorzilla.yaml /root/investorzilla/myportfolio/investorzilla.yaml
cd myportfolio
investorzilla
in ubuntu 22 with python 3.10
and still not works this is console log:
https://gist.github.com/johnfelipe/77d402930f01b9898320feff7db655e2
when finish console works show me this in webui:
with this:
OperationalError: (sqlite3.OperationalError) database is locked [SQL: INSERT INTO "DataCache__BCBCurrencyConverter" ("__DataCache_id", "__DataCache_time", "cotacaoCompra", "cotacaoVenda", time) VALUES (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?)] [parameters: ('USD', '2023-12-12 14:08:47.870044', 0.9, 1.0, '1994-07-01 17:46:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.9, 1.0, '1994-07-01 18:29:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.93, 0.94, '1994-07-04 10:52:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.95, 0.96, '1994-07-04 11:03:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.93, 0.94, '1994-07-04 14:07:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.935, 0.94, '1994-07-04 16:14:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.935, 0.94, '1994-07-05 10:08:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.93, 0.935, '1994-07-05 10:38:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.925, 0.93, '1994-07-05 11:58:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.91, 0.915, '1994-07-05 16:03:00.0' ... 4895 parameters truncated ... 'USD', '2023-12-12 14:08:47.870044', 0.907, 0.909, '1995-03-24 18:09:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.909, 0.911, '1995-03-27 09:36:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.907, 0.909, '1995-03-27 10:27:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.907, 0.909, '1995-03-27 12:53:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.908, 0.91, '1995-03-27 18:24:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.91, 0.912, '1995-03-28 09:35:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.912, 0.914, '1995-03-28 10:13:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.911, 0.913, '1995-03-28 11:06:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.911, 0.913, '1995-03-28 13:50:00.0', 'USD', '2023-12-12 14:08:47.870044', 0.909, 0.911, '1995-03-28 14:33:00.0')] (Background on this error at: https://sqlalche.me/e/20/e3q8)
Traceback:
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 534, in _run_script
exec(code, module.__dict__)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/streamlit_ui.py", line 511, in <module>
StreamlitInvestorzillaApp(refresh=False)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/streamlit_ui.py", line 76, in __init__
streamlit.session_state.investor=investorzilla.Investor(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/investor.py", line 49, in __init__
self.loadDomains(refresh)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/investor.py", line 125, in loadDomains
part['obj']=task.result()
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result
return self.__get_result()
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
raise self._exception
File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/currency/brasil_banco_central.py", line 21, in __init__
super().__init__(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/monetary_time_series.py", line 131, in __init__
super().__init__(kind, id, cache, refresh)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/monetary_time_series.py", line 28, in __init__
self.getData()
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/monetary_time_series.py", line 80, in getData
self.cacheUpdate(self.kind,self.id,self.cache)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/monetary_time_series.py", line 61, in cacheUpdate
cache.set(kind=kind, id=id, data=self.data)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/investorzilla/datacache.py", line 387, in set
d[[self.idCol,self.timeCol] + columns].to_sql(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
return func(*args, **kwargs)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/core/generic.py", line 3008, in to_sql
return sql.to_sql(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/io/sql.py", line 788, in to_sql
return pandas_sql.to_sql(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/io/sql.py", line 1958, in to_sql
total_inserted = sql_engine.insert_records(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/io/sql.py", line 1507, in insert_records
raise err
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/io/sql.py", line 1498, in insert_records
return table.insert(chunksize=chunksize, method=method)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/io/sql.py", line 1059, in insert
num_inserted = exec_insert(conn, keys, chunk_iter)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/pandas/io/sql.py", line 967, in _execute_insert_multi
result = conn.execute(stmt)
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1416, in execute
return meth(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1848, in _execute_context
return self._exec_single_context(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2343, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "/home/felipe/investorzilla/env/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
cursor.execute(statement, parameters)
and this is complete log in console:
https://gist.github.com/johnfelipe/22bb27a7f88bd2dc22fd54cbe7aca630
may be do it in notroot user?
no in an notroot user not works
felipe@template:~/investorzilla/myportfolio$ pip install investorzilla --user
Requirement already satisfied: investorzilla in /home/felipe/.local/lib/python3.10/site-packages (2.4.1)
Requirement already satisfied: pandas>=2 in /usr/local/lib/python3.10/dist-packages (from investorzilla) (2.1.4)
Requirement already satisfied: pyaml in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (23.9.7)
Requirement already satisfied: sqlalchemy in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (2.0.23)
Requirement already satisfied: streamlit in /usr/local/lib/python3.10/dist-packages (from investorzilla) (1.29.0)
Requirement already satisfied: google-auth-oauthlib in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (1.1.0)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from investorzilla) (2020.6.20)
Requirement already satisfied: pandas-datareader in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (0.10.0)
Requirement already satisfied: matplotlib in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (3.8.2)
Requirement already satisfied: google-auth-httplib2 in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (0.1.1)
Requirement already satisfied: google-api-python-client in /home/felipe/.local/lib/python3.10/site-packages (from investorzilla) (2.110.0)
Requirement already satisfied: pytz>=2020.1 in /usr/lib/python3/dist-packages (from pandas>=2->investorzilla) (2022.1)
Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->investorzilla) (2023.3)
Requirement already satisfied: numpy<2,>=1.22.4 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->investorzilla) (1.26.2)
Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->investorzilla) (2.8.2)
Requirement already satisfied: google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0.dev0,>=1.31.5 in /home/felipe/.local/lib/python3.10/site-packages (from google-api-python-client->investorzilla) (2.15.0)
Requirement already satisfied: httplib2<1.dev0,>=0.15.0 in /usr/lib/python3/dist-packages (from google-api-python-client->investorzilla) (0.20.2)
Requirement already satisfied: uritemplate<5,>=3.0.1 in /home/felipe/.local/lib/python3.10/site-packages (from google-api-python-client->investorzilla) (4.1.1)
Requirement already satisfied: google-auth<3.0.0.dev0,>=1.19.0 in /home/felipe/.local/lib/python3.10/site-packages (from google-api-python-client->investorzilla) (2.25.2)
Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/felipe/.local/lib/python3.10/site-packages (from google-auth-oauthlib->investorzilla) (1.3.1)
Requirement already satisfied: cycler>=0.10 in /home/felipe/.local/lib/python3.10/site-packages (from matplotlib->investorzilla) (0.12.1)
Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.10/dist-packages (from matplotlib->investorzilla) (10.1.0)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->investorzilla) (23.2)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/felipe/.local/lib/python3.10/site-packages (from matplotlib->investorzilla) (1.4.5)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib->investorzilla) (2.4.7)
Requirement already satisfied: contourpy>=1.0.1 in /home/felipe/.local/lib/python3.10/site-packages (from matplotlib->investorzilla) (1.2.0)
Requirement already satisfied: fonttools>=4.22.0 in /home/felipe/.local/lib/python3.10/site-packages (from matplotlib->investorzilla) (4.46.0)
Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from pandas-datareader->investorzilla) (2.31.0)
Requirement already satisfied: lxml in /home/felipe/.local/lib/python3.10/site-packages (from pandas-datareader->investorzilla) (4.9.3)
Requirement already satisfied: PyYAML in /usr/lib/python3/dist-packages (from pyaml->investorzilla) (5.4.1)
Requirement already satisfied: greenlet!=0.4.17 in /home/felipe/.local/lib/python3.10/site-packages (from sqlalchemy->investorzilla) (3.0.2)
Requirement already satisfied: typing-extensions>=4.2.0 in /usr/local/lib/python3.10/dist-packages (from sqlalchemy->investorzilla) (4.9.0)
Requirement already satisfied: click<9,>=7.0 in /usr/lib/python3/dist-packages (from streamlit->investorzilla) (8.0.3)
Requirement already satisfied: protobuf<5,>=3.20 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (4.25.1)
Requirement already satisfied: tornado<7,>=6.0.3 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (6.4)
Requirement already satisfied: toml<2,>=0.10.1 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (0.10.2)
Requirement already satisfied: blinker<2,>=1.0.0 in /usr/lib/python3/dist-packages (from streamlit->investorzilla) (1.4)
Requirement already satisfied: validators<1,>=0.2 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (0.22.0)
Requirement already satisfied: cachetools<6,>=4.0 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (5.3.2)
Requirement already satisfied: tzlocal<6,>=1.1 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (5.2)
Requirement already satisfied: tenacity<9,>=8.1.0 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (8.2.3)
Requirement already satisfied: gitpython!=3.1.19,<4,>=3.0.7 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (3.1.40)
Requirement already satisfied: watchdog>=2.1.5 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (3.0.0)
Requirement already satisfied: rich<14,>=10.14.0 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (13.7.0)
Requirement already satisfied: pydeck<1,>=0.8.0b4 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (0.8.1b0)
Requirement already satisfied: altair<6,>=4.0 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (5.2.0)
Requirement already satisfied: importlib-metadata<7,>=1.4 in /usr/lib/python3/dist-packages (from streamlit->investorzilla) (4.6.4)
Requirement already satisfied: pyarrow>=6.0 in /usr/local/lib/python3.10/dist-packages (from streamlit->investorzilla) (14.0.1)
Requirement already satisfied: jsonschema>=3.0 in /usr/lib/python3/dist-packages (from altair<6,>=4.0->streamlit->investorzilla) (3.2.0)
Requirement already satisfied: toolz in /usr/local/lib/python3.10/dist-packages (from altair<6,>=4.0->streamlit->investorzilla) (0.12.0)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from altair<6,>=4.0->streamlit->investorzilla) (3.0.0)
Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from gitpython!=3.1.19,<4,>=3.0.7->streamlit->investorzilla) (4.0.11)
Requirement already satisfied: googleapis-common-protos<2.0.dev0,>=1.56.2 in /home/felipe/.local/lib/python3.10/site-packages (from google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0.dev0,>=1.31.5->google-api-python-client->investorzilla) (1.62.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /home/felipe/.local/lib/python3.10/site-packages (from google-auth<3.0.0.dev0,>=1.19.0->google-api-python-client->investorzilla) (4.9)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/lib/python3/dist-packages (from google-auth<3.0.0.dev0,>=1.19.0->google-api-python-client->investorzilla) (0.2.1)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas>=2->investorzilla) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pandas-datareader->investorzilla) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3/dist-packages (from requests>=2.19.0->pandas-datareader->investorzilla) (3.3)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.19.0->pandas-datareader->investorzilla) (1.26.5)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib->investorzilla) (3.2.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich<14,>=10.14.0->streamlit->investorzilla) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich<14,>=10.14.0->streamlit->investorzilla) (2.17.2)
Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.10/dist-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit->investorzilla) (5.0.1)
Requirement already satisfied: MarkupSafe>=2.0.0rc2 in /usr/lib/python3/dist-packages (from jinja2->altair<6,>=4.0->streamlit->investorzilla) (2.0.1)
Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich<14,>=10.14.0->streamlit->investorzilla) (0.1.2)
Requirement already satisfied: pyasn1>=0.1.3 in /usr/lib/python3/dist-packages (from rsa<5,>=3.1.4->google-auth<3.0.0.dev0,>=1.19.0->google-api-python-client->investorzilla) (0.4.8)
felipe@template:~/investorzilla/myportfolio$ investorzilla
investorzilla: command not found
and i do it with env and not works to
su felipe
cd
git clone https://github.com/avibrazil/investorzilla
cd investorzilla/
python3 -m venv env
source env/bin/activate
pip3 install investorzilla
mkdir myportfolio
cp /home/felipe/investorzilla/config_examples/investorzilla.yaml /home/felipe/investorzilla/myportfolio/investorzilla.yaml
cd myportfolio
investorzilla
i will do it in ubuntu 20 with python 3.8...
doing in root user in ubuntu 20 with python 3.8 show me this logs:
https://gist.github.com/johnfelipe/05a02e80225cee5f89a4b943a49fd7a5
i think need to help me to solve that issues in pip3 install investorzilla --user
and using env in notroot user show this:
(env) felipe@felipe:~/tmp/myportfolio$ ls
env investorzilla.yaml
(env) felipe@felipe:~/tmp/myportfolio$ investorzilla
Traceback (most recent call last):
File "/home/felipe/tmp/myportfolio/env/bin/investorzilla", line 5, in <module>
from investorzilla.__main__ import main
File "/home/felipe/tmp/myportfolio/env/lib/python3.8/site-packages/investorzilla/__main__.py", line 49, in <module>
main()
File "/home/felipe/tmp/myportfolio/env/lib/python3.8/site-packages/investorzilla/__main__.py", line 20, in main
str(importlib.resources.files(investorzilla) / 'streamlit_ui.py'),
AttributeError: module 'importlib.resources' has no attribute 'files'
That’s because Python 3.8 is too old and doesn’t have this feature. I’m fixing dependencies to require Python 3.9 minimum.
this is all my steps in ubuntu 20
pls tell me how solve?