Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: 'type' object is not subscriptable #100

Open
iDoka opened this issue Feb 1, 2022 · 2 comments
Open

TypeError: 'type' object is not subscriptable #100

iDoka opened this issue Feb 1, 2022 · 2 comments

Comments

@iDoka
Copy link

iDoka commented Feb 1, 2022

Приветствую!
В первую очередь спасибо за разработку.

Мой сетап:
OS: CentOS 7 64bit
Python 3.6.8

Пытаюсь запустить на последнем коммите из ветки мастер:

$ python3 -m poptimizer
Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/doka/proj/2022/poptimizer/poptimizer/__main__.py", line 6, in <module>
    from poptimizer import config
  File "/home/doka/proj/2022/poptimizer/poptimizer/config.py", line 9, in <module>
    from poptimizer.shared.log import get_handlers
  File "/home/doka/proj/2022/poptimizer/poptimizer/shared/log.py", line 48, in <module>
    ) -> list[Handler]:
TypeError: 'type' object is not subscriptable

pytest жалуется на аналогичную проблему:

$ pytest poptimizer -v --cov=poptimizer --cov-report=term-missing --cov-report=xml --setup-show
================================================================================================================================== test session starts ===================================================================================================================================
platform linux -- Python 3.6.8, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- /home/doka/proj/2022/poptimizer/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /home/doka/proj/2022/poptimizer
plugins: asyncio-0.16.0, cov-3.0.0, mock-3.6.1
collected 0 items / 1 error                                                                                                                                                                                                                                                              
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/adapters/gateways/cpi.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/app/viewers.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/factory.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/cbr.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/cpi.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/dividends.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/indexes.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/quotes.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/trading_dates.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/data/domain/tables/usd.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/dl/features/turnover.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/dl/model.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/evolve/evolve.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/evolve/population.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/portfolio/portfolio.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/shared/adapters.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/shared/connections.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")
/home/doka/proj/2022/poptimizer/.venv/lib64/python3.6/site-packages/coverage/report.py:81: CoverageWarning: Couldn't parse Python file '/home/doka/proj/2022/poptimizer/poptimizer/store/database.py' (couldnt-parse)
  coverage._warn(msg, slug="couldnt-parse")

========================================================================================================================================= ERRORS =========================================================================================================================================
_____________________________________________________________________________________________________________________________ ERROR collecting test session ______________________________________________________________________________________________________________________________
/usr/lib64/python3.6/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:994: in _gcd_import
    ???
<frozen importlib._bootstrap>:971: in _find_and_load
    ???
<frozen importlib._bootstrap>:941: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:219: in _call_with_frames_removed
    ???
<frozen importlib._bootstrap>:994: in _gcd_import
    ???
<frozen importlib._bootstrap>:971: in _find_and_load
    ???
<frozen importlib._bootstrap>:941: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:219: in _call_with_frames_removed
    ???
<frozen importlib._bootstrap>:994: in _gcd_import
    ???
<frozen importlib._bootstrap>:971: in _find_and_load
    ???
<frozen importlib._bootstrap>:955: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:665: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:678: in exec_module
    ???
<frozen importlib._bootstrap>:219: in _call_with_frames_removed
    ???
poptimizer/reports/__init__.py:2: in <module>
    from poptimizer.reports.pdf import report
poptimizer/reports/pdf.py:5: in <module>
    from poptimizer.config import REPORTS_PATH, POptimizerError
poptimizer/config.py:9: in <module>
    from poptimizer.shared.log import get_handlers
poptimizer/shared/log.py:48: in <module>
    ) -> list[Handler]:
E   TypeError: 'type' object is not subscriptable

----------- coverage: platform linux, python 3.6.8-final-0 -----------
Name                                                  Stmts   Miss Branch BrPart  Cover   Missing
-------------------------------------------------------------------------------------------------
poptimizer/__init__.py                                    0      0      0      0   100%
poptimizer/__main__.py                                   20     20      0      0     0%   2-36
poptimizer/config.py                                     36     29      4      0    18%   12-65
poptimizer/conftest.py                                    8      3      0      0    62%   11-13
poptimizer/data/__init__.py                               0      0      0      0   100%
poptimizer/data/adapters/__init__.py                      0      0      0      0   100%
poptimizer/data/adapters/gateways/__init__.py             0      0      0      0   100%
poptimizer/data/adapters/gateways/bcs.py                 53     53     14      0     0%   2-83
poptimizer/data/adapters/gateways/cbr.py                 28     28      4      0     0%   2-57
poptimizer/data/adapters/gateways/close_reestry.py       52     52     14      0     0%   2-91
poptimizer/data/adapters/gateways/conomy.py              54     54      4      0     0%   2-105
poptimizer/data/adapters/gateways/dividends.py           24     24      8      0     0%   2-50
poptimizer/data/adapters/gateways/dohod.py               24     24      2      0     0%   2-50
poptimizer/data/adapters/gateways/finrange.py            38     38      4      0     0%   2-71
poptimizer/data/adapters/gateways/gateways.py            17     17      8      0     0%   2-39
poptimizer/data/adapters/gateways/invest_mint.py         54     54     12      0     0%   2-111
poptimizer/data/adapters/gateways/moex.py                56     56     14      0     0%   2-173
poptimizer/data/adapters/gateways/moex_status.py         25     25      4      0     0%   2-58
poptimizer/data/adapters/gateways/nasdaq.py              35     35      4      0     0%   2-72
poptimizer/data/adapters/gateways/smart_lab.py           19     19      2      0     0%   2-48
poptimizer/data/adapters/gateways/street_insider.py      25     25      2      0     0%   2-52
poptimizer/data/adapters/html/__init__.py                 0      0      0      0   100%
poptimizer/data/adapters/html/cell_parser.py             46     46     10      0     0%   2-64
poptimizer/data/adapters/html/chromium.py                28     28      6      0     0%   2-56
poptimizer/data/adapters/html/description.py             27     27     10      0     0%   2-56
poptimizer/data/adapters/html/parser.py                  52     52     13      0     0%   2-87
poptimizer/data/adapters/odm.py                          49     49     10      0     0%   2-107
poptimizer/data/app/__init__.py                           0      0      0      0   100%
poptimizer/data/app/bootstrap.py                         19     19      2      0     0%   2-47
poptimizer/data/domain/__init__.py                        0      0      0      0   100%
poptimizer/data/domain/events.py                         31     31     12      0     0%   2-64
poptimizer/data/domain/handlers.py                       51     51     12      0     0%   2-123
poptimizer/data/domain/tables/__init__.py                 0      0      0      0   100%
poptimizer/data/domain/tables/base.py                    64     64     24      0     0%   2-123
poptimizer/data/domain/tables/securities.py              39     39     10      0     0%   2-86
poptimizer/data/ports.py                                 12     12      0      0     0%   2-15
poptimizer/data/views/__init__.py                         0      0      0      0   100%
poptimizer/data/views/crop/__init__.py                    0      0      0      0   100%
poptimizer/data/views/crop/div.py                        17     17      2      0     0%   2-43
poptimizer/data/views/crop/not_div.py                    17     17      2      0     0%   2-37
poptimizer/data/views/div_status.py                      58     58     14      0     0%   2-124
poptimizer/data/views/go.py                               8      8      0      0     0%   2-13
poptimizer/data/views/indexes.py                         28     28      0      0     0%   2-65
poptimizer/data/views/listing.py                         24     24      0      0     0%   2-52
poptimizer/data/views/quotes.py                          34     34      8      0     0%   2-107
poptimizer/dl/__init__.py                                 4      4      0      0     0%   2-5
poptimizer/dl/data_loader.py                             38     38     12      0     0%   2-86
poptimizer/dl/features/__init__.py                       18     18      0      0     0%   2-19
poptimizer/dl/features/data_params.py                    79     79     12      0     0%   2-170
poptimizer/dl/features/day_of_period.py                  14     14      2      0     0%   2-29
poptimizer/dl/features/day_of_year.py                    16     16      2      0     0%   2-32
poptimizer/dl/features/dividends.py                      16     16      2      0     0%   2-28
poptimizer/dl/features/feature.py                        18     18      4      0     0%   2-40
poptimizer/dl/features/high.py                           20     20      2      0     0%   2-37
poptimizer/dl/features/imoex.py                          19     19      2      0     0%   2-38
poptimizer/dl/features/label.py                          28     28      2      0     0%   2-41
poptimizer/dl/features/low.py                            20     20      2      0     0%   2-37
poptimizer/dl/features/mcftrr.py                         19     19      2      0     0%   2-37
poptimizer/dl/features/meogtrr.py                        19     19      2      0     0%   2-33
poptimizer/dl/features/open.py                           21     21      2      0     0%   2-39
poptimizer/dl/features/prices.py                         17     17      2      0     0%   2-27
poptimizer/dl/features/rvi.py                            19     19      2      0     0%   2-37
poptimizer/dl/features/ticker.py                         16     16      2      0     0%   2-26
poptimizer/dl/features/ticker_type.py                    17     17      2      0     0%   2-32
poptimizer/dl/features/usd.py                            19     19      2      0     0%   2-38
poptimizer/dl/forecast.py                                19     19      2      0     0%   2-28
poptimizer/dl/ledoit_wolf.py                             33     33      0      0     0%   2-82
poptimizer/dl/ledoit_wolf_nonlinear.py                   52     52      4      0     0%   1-141
poptimizer/dl/models/__init__.py                          1      1      0      0     0%   2
poptimizer/dl/models/wave_net.py                        112    112     42      0     0%   2-334
poptimizer/evolve/__init__.py                             2      2      0      0     0%   2-3
poptimizer/evolve/chromosomes/__init__.py                 6      6      0      0     0%   2-7
poptimizer/evolve/chromosomes/chromosome.py              46     46     16      0     0%   2-134
poptimizer/evolve/chromosomes/data.py                    22     22     34      0     0%   2-154
poptimizer/evolve/chromosomes/model.py                   12     12      4      0     0%   2-75
poptimizer/evolve/chromosomes/optimizer.py                6      6      4      0     0%   2-33
poptimizer/evolve/chromosomes/scheduler.py               11     11      4      0     0%   2-73
poptimizer/evolve/chromosomes/utility.py                  5      5      2      0     0%   2-37
poptimizer/evolve/forecaster.py                          66     66     18      0     0%   2-137
poptimizer/evolve/genotype.py                            33     33     10      0     0%   2-80
poptimizer/evolve/seq.py                                 22     22      6      0     0%   10-109
poptimizer/evolve/store.py                               79     79     20      0     0%   2-151
poptimizer/portfolio/__init__.py                          1      1      0      0     0%   2
poptimizer/portfolio/metrics.py                         176    176     42      0     0%   2-346
poptimizer/portfolio/optimizer_hmean.py                  99     99     14      0     0%   2-199
poptimizer/portfolio/optimizer_resample.py               81     81     10      0     0%   2-191
poptimizer/reports/__init__.py                            2      1      0      0    50%   3
poptimizer/reports/excel.py                              14     14      4      0     0%   1-25
poptimizer/reports/pdf.py                                60     57     10      0     4%   6-153
poptimizer/reports/pdf_lower.py                          62     62      4      0     0%   2-144
poptimizer/reports/pdf_middle.py                         75     75      6      0     0%   3-130
poptimizer/reports/pdf_style.py                          36     36      0      0     0%   2-76
poptimizer/reports/pdf_upper.py                          85     85      8      0     0%   3-172
poptimizer/reports/simple.py                             49     49      2      0     0%   2-107
poptimizer/shared/__init__.py                             0      0      0      0   100%
poptimizer/shared/app.py                                 60     60     22      0     0%   2-133
poptimizer/shared/col.py                                 21     21      0      0     0%   2-30
poptimizer/shared/domain.py                              35     35     14      0     0%   2-78
poptimizer/shared/log.py                                 33     20      4      0    41%   16, 23-29, 33-37, 41, 50-65
poptimizer/store/__init__.py                              0      0      0      0   100%
-------------------------------------------------------------------------------------------------
TOTAL                                                  3025   2996    599      0     1%
Coverage XML written to file coverage.xml

================================================================================================================================ short test summary info =================================================================================================================================
ERROR  - TypeError: 'type' object is not subscriptable
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==================================================================================================================================== 1 error in 2.17s ====================================================================================================================================

Я что-то делаю не так или есть какой-то более стабильно работающий коммит?

@WLM1ke
Copy link
Owner

WLM1ke commented Feb 1, 2022

У вас старая версия Python. В коде активно используются type hinting из версии 3.9

@keepitsimple
Copy link
Contributor

@WLM1ke чтобы такой проблемы не возникало в будущем я добавил конфиг файл для poetry (https://python-poetry.org/). Poetry простой и очень удобный менеджер пакетов для проекта - это аналог npm / yarn в JS / TypeScript проектах. Он стал очень популярным в последнее время.

Если мой Pull Request будет принят, я сделаю еще один PR для Readme с описанием как разворачивать проект используя poetry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants