evdspy 1.2.2__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. {evdspy-1.2.2 → evdspy-2.0.2}/PKG-INFO +12 -87
  2. {evdspy-1.2.2 → evdspy-2.0.2}/README.md +8 -83
  3. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/get_series_indexes.py +10 -3
  4. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/get_series_indexes_exp.py +2 -2
  5. evdspy-2.0.2/evdspy/EVDSlocal/index_requests/index_util_funcs.py +131 -0
  6. evdspy-2.0.2/evdspy/EVDSlocal/index_requests/user_requests/Data_processor.py +65 -0
  7. evdspy-2.0.2/evdspy/EVDSlocal/requests_/test_reg_result.pickle +0 -0
  8. evdspy-2.0.2/evdspy/EVDSlocal/tests/test_get_series_exp.py +47 -0
  9. {evdspy-1.2.2 → evdspy-2.0.2}/pyproject.toml +3 -3
  10. evdspy-1.2.2/evdspy/EVDSlocal/index_requests/index_util_funcs.py +0 -70
  11. evdspy-1.2.2/evdspy/EVDSlocal/index_requests/user_requests/Data_processor.py +0 -35
  12. evdspy-1.2.2/evdspy/EVDSlocal/requests_/test_reg_result.pickle +0 -0
  13. evdspy-1.2.2/evdspy/EVDSlocal/tests/test_get_series_exp.py +0 -50
  14. evdspy-1.2.2/evdspy/get_series_module.py +0 -116
  15. {evdspy-1.2.2 → evdspy-2.0.2}/LICENSE +0 -0
  16. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/__init__.py +0 -0
  17. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/__init__.py +0 -0
  18. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/clear_cache_folder.py +0 -0
  19. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/colors.py +0 -0
  20. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/common_imports.py +0 -0
  21. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/file_classes.py +0 -0
  22. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/files.py +0 -0
  23. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/folder_name_checks.py +0 -0
  24. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/prog.py +0 -0
  25. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/table.py +0 -0
  26. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/common/url_clean.py +0 -0
  27. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/__init__.py +0 -0
  28. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/api_params.py +0 -0
  29. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/api_params_enums.py +0 -0
  30. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/bucket_from_series.py +0 -0
  31. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/evds_files.py +0 -0
  32. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/evds_seri_files.py +0 -0
  33. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/excel_class.py +0 -0
  34. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/options_class.py +0 -0
  35. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/request_or_cache.py +0 -0
  36. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/components/url_class.py +0 -0
  37. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/config/__init__.py +0 -0
  38. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/config/apikey_class.py +0 -0
  39. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/config/config.py +0 -0
  40. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/config/credentials_file.py +0 -0
  41. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/config/dotenv.py +0 -0
  42. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/__init__.py +0 -0
  43. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/menu.py +0 -0
  44. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/menu_async.py +0 -0
  45. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/menu_logo_header.py +0 -0
  46. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/panel.py +0 -0
  47. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/proxy_for_menu.py +0 -0
  48. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/console/screen.py +0 -0
  49. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/helper/__init__.py +0 -0
  50. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/helper/print_m.py +0 -0
  51. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/__init__.py +0 -0
  52. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/categories.py +0 -0
  53. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/data_models.py +0 -0
  54. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/datagroup_individual.py +0 -0
  55. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/datagroups.py +0 -0
  56. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/datagroups_extra.py +0 -0
  57. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/datagroups_initial.py +0 -0
  58. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/df_operations.py +0 -0
  59. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/error_classes_index.py +0 -0
  60. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/get_series_indexes_utils.py +0 -0
  61. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/index_classes.py +0 -0
  62. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/real_reqs_tests.py +0 -0
  63. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/Api_requester.py +0 -0
  64. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/Proxy_manager.py +0 -0
  65. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/Request_config.py +0 -0
  66. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/Serialize.py +0 -0
  67. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/Url_builder.py +0 -0
  68. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/Url_series.py +0 -0
  69. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/User_req_typings.py +0 -0
  70. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/User_request_utils.py +0 -0
  71. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/_Tables.py +0 -0
  72. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/index_requests/user_requests/__init__.py +0 -0
  73. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/__init__.py +0 -0
  74. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/cache_folder.py +0 -0
  75. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/cmd_line_classes.py +0 -0
  76. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/command_pictures.py +0 -0
  77. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/load_commands_.py +0 -0
  78. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/load_commands_cmds_to_load.py +0 -0
  79. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/load_modules.py +0 -0
  80. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/sample_series_content.py +0 -0
  81. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/start_args.py +0 -0
  82. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/start_options.py +0 -0
  83. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial/try_loading_initial_commands.py +0 -0
  84. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial_setup/__init__.py +0 -0
  85. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial_setup/api_key_save.py +0 -0
  86. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial_setup/initial_setups.py +0 -0
  87. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/initial_setup/setup_folders.py +0 -0
  88. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/log_classes/__init__.py +0 -0
  89. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/log_classes/log_template.py +0 -0
  90. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/main_.py +0 -0
  91. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/manual_requests/__init__.py +0 -0
  92. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/manual_requests/prepare.py +0 -0
  93. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/messages/__init__.py +0 -0
  94. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/messages/cmd_formats.py +0 -0
  95. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/messages/current_menu_message.py +0 -0
  96. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/messages/error_classes.py +0 -0
  97. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/messages/error_messages.py +0 -0
  98. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/messages/help_messages.py +0 -0
  99. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/__init__.py +0 -0
  100. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/ev_request.py +0 -0
  101. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/lower_energy.py +0 -0
  102. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/mock_req.py +0 -0
  103. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/my_cache.py +0 -0
  104. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/real_requests.py +0 -0
  105. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/requests_/request_error_classes.py +0 -0
  106. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/__init__.py +0 -0
  107. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/populate_series.py +0 -0
  108. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/populate_series_helper.py +0 -0
  109. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/read_config_series.py +0 -0
  110. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/sample_series_content.py +0 -0
  111. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/series_creator.py +0 -0
  112. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/series_creator_on_setup.py +0 -0
  113. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/series_examples.py +0 -0
  114. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/series_format_config_funcs.py +0 -0
  115. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/series_format/stats/save_stats_of_requests.py +0 -0
  116. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/session/__init__.py +0 -0
  117. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/session/session_.py +0 -0
  118. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/setup_project/__init__.py +0 -0
  119. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/setup_project/read_config_series.py +0 -0
  120. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/setup_project/user_options_config.py +0 -0
  121. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/setup_project/user_series_config.py +0 -0
  122. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/setup_project/user_setup.py +0 -0
  123. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/setup_project/user_setup_helper.py +0 -0
  124. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/state/__init__.py +0 -0
  125. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/state/current_state.py +0 -0
  126. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/state/test_or_real.py +0 -0
  127. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/stats/__init__.py +0 -0
  128. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/stats/save_stats_of_requests.py +0 -0
  129. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/__init__.py +0 -0
  130. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/core_options_test.py +0 -0
  131. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_apikey_checks.py +0 -0
  132. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_categories.py +0 -0
  133. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_datagroups.py +0 -0
  134. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_get_proxies_env.py +0 -0
  135. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_get_series.py +0 -0
  136. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_get_series_exp_cache.py +0 -0
  137. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_log_session.py +0 -0
  138. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_main_load.py +0 -0
  139. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_manual_series.py +0 -0
  140. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_requests.py +0 -0
  141. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/test_user_requests.py +0 -0
  142. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests/testing_mock_credentials.py +0 -0
  143. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/tests_main.py +0 -0
  144. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/utils/__init__.py +0 -0
  145. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/utils/github_actions.py +0 -0
  146. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/utils/utils_general.py +0 -0
  147. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/EVDSlocal/utils/utils_test.py +0 -0
  148. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/__init__.py +0 -0
  149. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/__version__.py +0 -0
  150. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/main.py +0 -0
  151. {evdspy-1.2.2 → evdspy-2.0.2}/evdspy/main_t.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evdspy
3
- Version: 1.2.2
4
- Summary: A versatile interface for the 'EDDS' (EVDS) API of the Central Bank of the Republic of Türkiye (https://evds2.tcmb.gov.tr/index.php?/evds/userDocs). This package allows users to easily access and manage economic data through a user-friendly menu function. It features a robust caching mechanism to enhance the efficiency of data requests by storing frequently accessed data for selected periods. Required API keys can be obtained by registering on the EVDS website.
3
+ Version: 2.0.2
4
+ Summary: A versatile interface for the 'EDDS' (EVDS) API of the Central Bank of the Republic of Türkiye (https://evds3.tcmb.gov.tr/dokumanlar). This package allows users to easily access and manage economic data through a user-friendly menu function. It features a robust caching mechanism to enhance the efficiency of data requests by storing frequently accessed data for selected periods. Required API keys can be obtained by registering on the EVDS website.
5
5
  License: MIT
6
6
  License-File: LICENSE
7
7
  Author: Sermet Pekin
8
8
  Author-email: sermet.pekin@gmail.com
9
- Requires-Python: >=3.9,<4.0
9
+ Requires-Python: >=3.10,<4.0
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Framework :: IPython
@@ -16,12 +16,12 @@ Classifier: Operating System :: MacOS
16
16
  Classifier: Operating System :: Microsoft :: Windows
17
17
  Classifier: Operating System :: POSIX :: Linux
18
18
  Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
21
  Classifier: Programming Language :: Python :: 3.12
23
22
  Classifier: Programming Language :: Python :: 3.13
24
23
  Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Programming Language :: Python :: 3.9
25
25
  Classifier: Typing :: Typed
26
26
  Provides-Extra: jupyter
27
27
  Requires-Dist: openpyxl (>3.0.10)
@@ -40,7 +40,7 @@ Description-Content-Type: text/markdown
40
40
 
41
41
 
42
42
  [![Pypi Windows Server](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi_win.yml/badge.svg?1)](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi_win.yml?1)
43
- [![Pypi Ubuntu Server](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml/badge.svg?1)](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml?1)
43
+ [![Pypi Ubuntu Server](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml/badge.svg?2)](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml?2)
44
44
 
45
45
  ## Documentation
46
46
  [Documentation](https://evdspy-repo.readthedocs.io/en/latest/home.html)
@@ -239,23 +239,6 @@ Here is the documentation for other functions and details.
239
239
 
240
240
  [Documentation](https://evdspy-repo.readthedocs.io/en/latest/)
241
241
 
242
-
243
- ### Menu
244
- python script
245
- ```python
246
- from evdspy import menu
247
- menu()
248
- ```
249
- command line / Terminal
250
- ```bash
251
- $ evdspy menu
252
-
253
- ```
254
-
255
- ![image](https://user-images.githubusercontent.com/96650846/198966008-77302f42-f8f5-430c-962d-a988abe57bb7.png)
256
- ## Visual Menu to request data
257
- ![image](https://user-images.githubusercontent.com/96650846/200393634-6d1d95cc-6fb5-4f2a-aff8-f444265df814.png)
258
- ![image](https://user-images.githubusercontent.com/96650846/200393889-915a1908-bff9-41fc-b549-d83b1cf9dafd.png)
259
242
  ### About
260
243
  ***evdspy*** is an open source python interface which helps you make efficient requests by caching results (storing a
261
244
  dict using hashable parameters in order to avoid redundant requests), it provides a user friendly
@@ -268,82 +251,24 @@ python projects.
268
251
  ### installation
269
252
  pip install evdspy -U
270
253
 
271
- ### importing
272
- from evdspy import *
273
- check()
274
- get()
275
- help_evds()
276
- or
277
- import evdspy as ev
278
- ev.check()
279
- ev.get()
280
- ev.help_evds()
281
- ### menu
282
- from evdspy import *
283
- menu()
284
- or
285
- import evdspy as ev
286
- ev.menu()
287
- Menu function will display a friendly menu to setup project, creating output folders and some setup files to
288
- create some set of series to make a request and download from EVDS server save your api key to get data from EVDS.
289
- Than it will convert this data to a pandas dataframe and create some folders on your local area.
290
- ### menu()
291
- ![image](https://user-images.githubusercontent.com/96650846/198966008-77302f42-f8f5-430c-962d-a988abe57bb7.png)
292
- ![image](https://user-images.githubusercontent.com/96650846/198966318-35a8ba8b-68e9-46f9-827e-cf06377ec960.png)
293
-
294
-
295
- ## OPTION 2
296
- _________________________________
297
- #### FROM THE MENU
298
- ### menu()
299
- ![image](https://user-images.githubusercontent.com/96650846/198966008-77302f42-f8f5-430c-962d-a988abe57bb7.png)
300
- > > *checking*....
301
- ![image](https://user-images.githubusercontent.com/96650846/200316924-de6c5d4c-e9d1-4122-a49b-45e1a4b5923b.png)
302
- ## OPTION 3
303
- _________________________________
304
- #### FROM THE OS COMMAND LINE
305
-
306
- (Windows Command line / Linux Terminal / Mac Terminal)
307
-
308
- ![image](https://user-images.githubusercontent.com/96650846/198182696-c5bbe840-a9cd-45b5-806f-ee9b7d0e88b8.png)
309
-
310
- $ evdspy setup
311
- --------------
312
- creates initial folders for your environment to save data and caches
313
- $ evdspy menu
314
- --------------
315
- Launces evdspy and loads the menu
316
- $ evdspy create series
317
- --------------
318
- Creates series file (leaves untouched if exists)
319
- $ evdspy help
320
- --------------
321
- shows help and some documentation from command line
322
- $ evdspy create options
323
- --------------
324
- creates options on the current folder
325
- $ evdspy get
326
- --------------
327
- makes request from EVDS API and creates excel files regarding information on your series file
328
- $ evdspy save
329
- --------------
330
- asks for your api key to save a file in your environment named `APIKEY_FOLDER`
331
-
332
254
  ## Documentation
333
255
 
334
256
  Here is the documentation for other functions and details.
335
257
  [Documentation](https://evdspy-repo.readthedocs.io/en/latest/home.html)
336
258
 
337
-
259
+
338
260
 
339
261
 
340
262
  ## How to get an API key?
341
263
  ***Get a CBRT EVDS API key***
342
- https://evds2.tcmb.gov.tr/index.php?/evds/login
264
+ https://evds3.tcmb.gov.tr/login
265
+
343
266
  #### Main page of CBRT EVDS API
344
- https://evds2.tcmb.gov.tr
267
+ https://evds3.tcmb.gov.tr
268
+
345
269
  #### CBRT EVDS API Docs
346
- https://evds2.tcmb.gov.tr/index.php?/evds/userDocs
270
+ https://evds3.tcmb.gov.tr/dokumanlar
271
+
347
272
  ### About
348
273
  ***evdspy*** is an open source python interface which helps you make efficient requests by caching results (storing a
349
274
  dict using hashable parameters in order to avoid redundant requests), it provides a user friendly
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
  [![Pypi Windows Server](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi_win.yml/badge.svg?1)](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi_win.yml?1)
6
- [![Pypi Ubuntu Server](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml/badge.svg?1)](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml?1)
6
+ [![Pypi Ubuntu Server](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml/badge.svg?2)](https://github.com/SermetPekin/evdspy-repo/actions/workflows/pypi.yml?2)
7
7
 
8
8
  ## Documentation
9
9
  [Documentation](https://evdspy-repo.readthedocs.io/en/latest/home.html)
@@ -202,23 +202,6 @@ Here is the documentation for other functions and details.
202
202
 
203
203
  [Documentation](https://evdspy-repo.readthedocs.io/en/latest/)
204
204
 
205
-
206
- ### Menu
207
- python script
208
- ```python
209
- from evdspy import menu
210
- menu()
211
- ```
212
- command line / Terminal
213
- ```bash
214
- $ evdspy menu
215
-
216
- ```
217
-
218
- ![image](https://user-images.githubusercontent.com/96650846/198966008-77302f42-f8f5-430c-962d-a988abe57bb7.png)
219
- ## Visual Menu to request data
220
- ![image](https://user-images.githubusercontent.com/96650846/200393634-6d1d95cc-6fb5-4f2a-aff8-f444265df814.png)
221
- ![image](https://user-images.githubusercontent.com/96650846/200393889-915a1908-bff9-41fc-b549-d83b1cf9dafd.png)
222
205
  ### About
223
206
  ***evdspy*** is an open source python interface which helps you make efficient requests by caching results (storing a
224
207
  dict using hashable parameters in order to avoid redundant requests), it provides a user friendly
@@ -231,82 +214,24 @@ python projects.
231
214
  ### installation
232
215
  pip install evdspy -U
233
216
 
234
- ### importing
235
- from evdspy import *
236
- check()
237
- get()
238
- help_evds()
239
- or
240
- import evdspy as ev
241
- ev.check()
242
- ev.get()
243
- ev.help_evds()
244
- ### menu
245
- from evdspy import *
246
- menu()
247
- or
248
- import evdspy as ev
249
- ev.menu()
250
- Menu function will display a friendly menu to setup project, creating output folders and some setup files to
251
- create some set of series to make a request and download from EVDS server save your api key to get data from EVDS.
252
- Than it will convert this data to a pandas dataframe and create some folders on your local area.
253
- ### menu()
254
- ![image](https://user-images.githubusercontent.com/96650846/198966008-77302f42-f8f5-430c-962d-a988abe57bb7.png)
255
- ![image](https://user-images.githubusercontent.com/96650846/198966318-35a8ba8b-68e9-46f9-827e-cf06377ec960.png)
256
-
257
-
258
- ## OPTION 2
259
- _________________________________
260
- #### FROM THE MENU
261
- ### menu()
262
- ![image](https://user-images.githubusercontent.com/96650846/198966008-77302f42-f8f5-430c-962d-a988abe57bb7.png)
263
- > > *checking*....
264
- ![image](https://user-images.githubusercontent.com/96650846/200316924-de6c5d4c-e9d1-4122-a49b-45e1a4b5923b.png)
265
- ## OPTION 3
266
- _________________________________
267
- #### FROM THE OS COMMAND LINE
268
-
269
- (Windows Command line / Linux Terminal / Mac Terminal)
270
-
271
- ![image](https://user-images.githubusercontent.com/96650846/198182696-c5bbe840-a9cd-45b5-806f-ee9b7d0e88b8.png)
272
-
273
- $ evdspy setup
274
- --------------
275
- creates initial folders for your environment to save data and caches
276
- $ evdspy menu
277
- --------------
278
- Launces evdspy and loads the menu
279
- $ evdspy create series
280
- --------------
281
- Creates series file (leaves untouched if exists)
282
- $ evdspy help
283
- --------------
284
- shows help and some documentation from command line
285
- $ evdspy create options
286
- --------------
287
- creates options on the current folder
288
- $ evdspy get
289
- --------------
290
- makes request from EVDS API and creates excel files regarding information on your series file
291
- $ evdspy save
292
- --------------
293
- asks for your api key to save a file in your environment named `APIKEY_FOLDER`
294
-
295
217
  ## Documentation
296
218
 
297
219
  Here is the documentation for other functions and details.
298
220
  [Documentation](https://evdspy-repo.readthedocs.io/en/latest/home.html)
299
221
 
300
-
222
+
301
223
 
302
224
 
303
225
  ## How to get an API key?
304
226
  ***Get a CBRT EVDS API key***
305
- https://evds2.tcmb.gov.tr/index.php?/evds/login
227
+ https://evds3.tcmb.gov.tr/login
228
+
306
229
  #### Main page of CBRT EVDS API
307
- https://evds2.tcmb.gov.tr
230
+ https://evds3.tcmb.gov.tr
231
+
308
232
  #### CBRT EVDS API Docs
309
- https://evds2.tcmb.gov.tr/index.php?/evds/userDocs
233
+ https://evds3.tcmb.gov.tr/dokumanlar
234
+
310
235
  ### About
311
236
  ***evdspy*** is an open source python interface which helps you make efficient requests by caching results (storing a
312
237
  dict using hashable parameters in order to avoid redundant requests), it provides a user friendly
@@ -27,14 +27,21 @@ def get_series(
27
27
  end_date: str = default_end_date_fnc(),
28
28
  frequency: Union[
29
29
  Literal[
30
- "monthly", "weekly", "annually", "semimonthly", "semiannually", "business" , None
30
+ "monthly",
31
+ "quarterly",
32
+ "weekly",
33
+ "annually",
34
+ "semimonthly",
35
+ "semiannually",
36
+ "business",
37
+ None,
31
38
  ]
32
39
  ] = None,
33
40
  formulas: Union[Literal["level", "percentage_change", "difference"], None] = None,
34
41
  aggregation: Union[
35
42
  Literal["avg", "min", "max", "first", "last", "sum", None], None
36
43
  ] = None,
37
- cache: bool = False ,
44
+ cache: bool = False,
38
45
  proxy: Optional[str] = None,
39
46
  proxies: Optional[dict[str, str]] = None,
40
47
  debug: bool = False,
@@ -110,7 +117,7 @@ def get_series(
110
117
  if debug:
111
118
  return api_requester.dry_request()
112
119
  # ............DataProcessor................................
113
- data_processor = DataProcessor(api_requester())
120
+ data_processor = DataProcessor(api_requester(), config=config)
114
121
  return data_processor()
115
122
 
116
123
 
@@ -78,7 +78,7 @@ def get_series_exp(
78
78
  end_date: str = default_end_date_fnc(),
79
79
  frequency: Union[
80
80
  Literal[
81
- "monthly", "weekly", "annually", "semimonthly", "semiannually", "business", None
81
+ "monthly", "weekly", "quarterly", "annually", "semimonthly", "semiannually", "business", None
82
82
  ]
83
83
  ] = None,
84
84
  formulas: Union[Literal["level", "percentage_change", "difference"], None] = None,
@@ -187,7 +187,7 @@ def get_series_exp(
187
187
  with pd.ExcelWriter(file_name) as writer:
188
188
  for sheet_name, df in result.items():
189
189
  if isinstance(df, pd.DataFrame):
190
- df.to_excel(writer, sheet_name=sheet_name, index=False)
190
+ df.to_excel(writer, sheet_name=sheet_name, index=True)
191
191
  res = True
192
192
  if res:
193
193
  print(f" writing file : [{file_name}] ")
@@ -0,0 +1,131 @@
1
+ import pandas as pd
2
+ import typing as t
3
+ from ..common.colors import print_with_failure_style
4
+ from ..components.excel_class import correct_folder
5
+
6
+
7
+ def try_date(df: pd.DataFrame, frequency="monthly"):
8
+ if df.index.name is None:
9
+ return df
10
+ df = df.copy()
11
+
12
+ def with_month(df: pd.DataFrame):
13
+ try:
14
+ df["year"], df["month"] = zip(*df.index.str.split("-"))
15
+ df["day"] = ["1" for x in range(len(df))]
16
+ return helper(df)
17
+
18
+ except:
19
+
20
+ return df
21
+
22
+ def helper(df, remove_cols=("year", "month", "day")):
23
+ df.index = pd.to_datetime(
24
+ df[["year", "month", "day"]].astype(str), format="%Y-%m-%d", errors="coerce"
25
+ )
26
+ df.index = df.index.strftime("%d-%m-%Y")
27
+ df = df.drop(columns=list(remove_cols))
28
+ return df
29
+
30
+ def with_quarter(df: pd.DataFrame):
31
+ try:
32
+ e = df.copy()
33
+ xs = []
34
+ ys = []
35
+ for x, y in e.index.str.split("-Q", expand=True):
36
+ xs.append(x)
37
+ ys.append(y)
38
+
39
+ e["year"] = xs
40
+ e["quarter"] = ys
41
+ e["year"] = e["year"].astype(int)
42
+ e["quarter"] = e["quarter"].astype(int)
43
+ e["month"] = e["quarter"].apply(lambda x: 3 * (x - 1) + 1)
44
+ e["day"] = ["1" for x in range(len(e))]
45
+
46
+ return helper(e, remove_cols=("year", "month", "day", "quarter"))
47
+ except:
48
+ return df
49
+
50
+ def with_generic(df: pd.DataFrame):
51
+ try:
52
+ df.index = pd.to_datetime(df.index, format="%d-%m-%Y")
53
+ return df
54
+ except:
55
+ return df
56
+
57
+ fncs = {"monthly": with_month, "quarterly": with_quarter, None: with_generic}
58
+ fnc = fncs.get(frequency, with_generic)
59
+
60
+ df = fnc(df)
61
+
62
+ return df
63
+
64
+
65
+ def make_date_first_column_helper(df, col_name):
66
+ if col_name not in df.columns:
67
+ return df
68
+ cols = [col_name] + [col for col in df if col != col_name]
69
+ df = df[cols]
70
+ return df
71
+
72
+
73
+ def make_date_first_column(df):
74
+ col_names = (
75
+ "YEARWEEK",
76
+ "Tarih",
77
+ )
78
+ for col_name in col_names:
79
+ df = make_date_first_column_helper(df, col_name)
80
+ return df
81
+
82
+
83
+ def drop_unix(df):
84
+ UnixTime = "UNIXTIME"
85
+ if UnixTime in df.columns:
86
+ df.drop(UnixTime, axis=1, inplace=True)
87
+ return df
88
+
89
+
90
+ def json_to_df(json_content: t.Union[list, dict]):
91
+ if hasattr(json_content, "items"):
92
+ json_content = json_content["items"]
93
+ df = pd.DataFrame.from_records(json_content)
94
+ df = drop_unix(df)
95
+ df = make_date_first_column(df)
96
+ return df
97
+
98
+
99
+ def make_df_float(df):
100
+ def check_cols(x: str):
101
+ items = (
102
+ "Tarih" not in x,
103
+ "WEEK" not in x,
104
+ "DAY" not in x,
105
+ "YEAR" not in x,
106
+ )
107
+ return all(items)
108
+
109
+ columns = (x for x in df.columns if check_cols(x))
110
+ other_cols = (x for x in df.columns if not check_cols(x))
111
+ old_df = df
112
+ try:
113
+ df = df[columns].astype(float)
114
+ except:
115
+ # print_with_failure_style("Could not convert some columns to float type...")
116
+ ...
117
+ for other_column in other_cols:
118
+ df[other_column] = old_df[other_column]
119
+ return df
120
+
121
+
122
+ def json_to_excel(json_content: list, file_name, try_float=True):
123
+ file_name = correct_folder(file_name, "xlsx")
124
+ df = json_to_df(json_content)
125
+ if try_float:
126
+ df = make_df_float(df)
127
+ try:
128
+ df = make_date_first_column(df)
129
+ df.to_excel(file_name)
130
+ except:
131
+ print(f"could not write excel file {file_name}. =>file is probably open")
@@ -0,0 +1,65 @@
1
+ # ....................................................................... DataProcessor
2
+ import traceback
3
+ from typing import TYPE_CHECKING, Any
4
+
5
+ import pandas as pd
6
+
7
+ from evdspy.EVDSlocal.index_requests.index_util_funcs import make_df_float, json_to_df
8
+ from evdspy.EVDSlocal.index_requests.user_requests.User_req_typings import T_maybeDf
9
+ from evdspy.EVDSlocal.index_requests.index_util_funcs import try_date
10
+
11
+ if TYPE_CHECKING:
12
+
13
+ from evdspy.EVDSlocal.index_requests.user_requests import RequestConfig
14
+
15
+
16
+ class DataProcessor:
17
+ def __init__(self, data: Any, config: "RequestConfig" = None ):
18
+ self.data = data
19
+ self.config = config
20
+
21
+ def set_index(self, df: pd.DataFrame) -> pd.DataFrame:
22
+ if "Tarih" in df.columns:
23
+ df["Tarih_string"] = df["Tarih"]
24
+ df.set_index("Tarih", inplace=True)
25
+ return df
26
+
27
+ def fix_column_names(self, df: pd.DataFrame):
28
+ def fix(string: str):
29
+ if "tarih" in string.lower() or "week" in string.lower():
30
+ return string
31
+ return string.replace("_", ".")
32
+
33
+ df.columns = [fix(x) for x in df.columns]
34
+ return df
35
+
36
+ def _try_date(self, df: pd.DataFrame):
37
+ if df.index.name is None:
38
+ return df
39
+ frequency = self.config.frequency if hasattr(self.config , "frequency") else None
40
+ return try_date(df, frequency=frequency)
41
+
42
+ def process_to_dataframe(self) -> T_maybeDf:
43
+ if self.data is False:
44
+ return False
45
+ try:
46
+ df = json_to_df(self.data)
47
+ except Exception as e:
48
+ print(e)
49
+ traceback.print_exc()
50
+ return None
51
+ if isinstance(df, pd.DataFrame):
52
+ df = make_df_float(df)
53
+ df = self.set_index(df)
54
+ df = self.fix_column_names(df)
55
+ df = self._try_date(df)
56
+ return df
57
+
58
+ def __call__(self, *args, **kwargs) -> T_maybeDf:
59
+ return self.process_to_dataframe()
60
+
61
+
62
+ def test_DataProcessor(capsys):
63
+ with capsys.disabled():
64
+ d = DataProcessor(False , config = None )
65
+ print(d)
@@ -0,0 +1,47 @@
1
+ import pandas as pd
2
+
3
+ from evdspy import get_series_exp
4
+ from evdspy.EVDSlocal.index_requests.get_series_indexes_exp import Result
5
+
6
+ index1 = "TP.GSYIH20.BY.B1GQ"
7
+ index2 = "TP.GSYIH20.BY.P311"
8
+
9
+ indexes = """
10
+ TP.GSYIH20.BY.B1GQ # Gayrisafi Yurt İçi Hasıla (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
11
+ TP.GSYIH20.BY.P311 # Yerleşik Hanehalklarının Tüketimi (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
12
+ TP.GSYIH20.BY.P312 # Hanehalkına Hizmet Eden Kar Amacı Olmayan Kuruluşların Tüketimi (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
13
+ TP.GSYIH20.BY.P32 # Devletin Nihai Tüketim Harcamaları (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
14
+ TP.GSYIH20.BY.P51G # Gayrisafi Sabit Sermaye Oluşumu (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
15
+ TP.GSYIH20.BY.P52 # Stoktaki Değişiklikler (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
16
+ TP.GSYIH20.BY.P6 # Mal ve Hizmet İhracatı (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
17
+ TP.GSYIH20.BY.P7 # (Eksi) Mal ve Hizmet İthalatı (Harcama Yöntemiyle, Cari Fiyatlarla)-Düzey
18
+
19
+ """
20
+ index_table = "bie_gsyhhrccar"
21
+
22
+
23
+ from typing import Any
24
+ import time
25
+
26
+
27
+ def fnc(item: Any) -> Result:
28
+ print(f" Checking ... {item}")
29
+ time.sleep(2)
30
+ df = get_series_exp(item, debug=False, cache=True)
31
+ print(df)
32
+ return df
33
+
34
+
35
+ DF = pd.DataFrame
36
+
37
+ def test_get_series_exp(capsys):
38
+ items = [index1, index2, indexes, index_table]
39
+
40
+ for item in items:
41
+ result: Result = fnc(item)
42
+
43
+ assert isinstance(result.data, DF)
44
+ assert isinstance(result.metadata, DF)
45
+ assert callable(result.write)
46
+ assert callable(result.to_excel)
47
+
@@ -3,8 +3,8 @@
3
3
 
4
4
  [tool.poetry]
5
5
  name = "evdspy"
6
- version = "1.2.2"
7
- description = "A versatile interface for the 'EDDS' (EVDS) API of the Central Bank of the Republic of Türkiye (https://evds2.tcmb.gov.tr/index.php?/evds/userDocs). This package allows users to easily access and manage economic data through a user-friendly menu function. It features a robust caching mechanism to enhance the efficiency of data requests by storing frequently accessed data for selected periods. Required API keys can be obtained by registering on the EVDS website."
6
+ version = "2.0.2"
7
+ description = "A versatile interface for the 'EDDS' (EVDS) API of the Central Bank of the Republic of Türkiye (https://evds3.tcmb.gov.tr/dokumanlar). This package allows users to easily access and manage economic data through a user-friendly menu function. It features a robust caching mechanism to enhance the efficiency of data requests by storing frequently accessed data for selected periods. Required API keys can be obtained by registering on the EVDS website."
8
8
  authors = ["Sermet Pekin <sermet.pekin@gmail.com>"]
9
9
  license = "MIT"
10
10
  readme = "README.md"
@@ -26,7 +26,7 @@ classifiers = [
26
26
  "Typing :: Typed",
27
27
  ]
28
28
  [tool.poetry.dependencies]
29
- python = "^3.9"
29
+ python = "^3.10"
30
30
  pandas = ">1.5.0"
31
31
  openpyxl = ">3.0.10"
32
32
  rich = ">=12.5.1"
@@ -1,70 +0,0 @@
1
- import pandas as pd
2
- import typing as t
3
- from ..common.colors import print_with_failure_style
4
- from ..components.excel_class import correct_folder
5
-
6
-
7
- def make_date_first_column_helper(df, col_name):
8
- if col_name not in df.columns:
9
- return df
10
- cols = [col_name] + [col for col in df if col != col_name]
11
- df = df[cols]
12
- return df
13
-
14
-
15
- def make_date_first_column(df):
16
- col_names = ('YEARWEEK', 'Tarih',)
17
- for col_name in col_names:
18
- df = make_date_first_column_helper(df, col_name)
19
- return df
20
-
21
-
22
- def drop_unix(df):
23
- UnixTime = 'UNIXTIME'
24
- if UnixTime in df.columns:
25
- df.drop(UnixTime, axis=1, inplace=True)
26
- return df
27
-
28
-
29
- def json_to_df(json_content: t.Union[list, dict]):
30
- if hasattr(json_content, 'items'):
31
- json_content = json_content['items']
32
- df = pd.DataFrame.from_records(json_content)
33
- df = drop_unix(df)
34
- df = make_date_first_column(df)
35
- return df
36
-
37
-
38
- def make_df_float(df):
39
- def check_cols(x: str):
40
- items = (
41
- "Tarih" not in x,
42
- "WEEK" not in x,
43
- "DAY" not in x,
44
- "YEAR" not in x,
45
- )
46
- return all(items)
47
-
48
- columns = (x for x in df.columns if check_cols(x))
49
- other_cols = (x for x in df.columns if not check_cols(x))
50
- old_df = df
51
- try:
52
- df = df[columns].astype(float)
53
- except:
54
- # print_with_failure_style("Could not convert some columns to float type...")
55
- ...
56
- for other_column in other_cols:
57
- df[other_column] = old_df[other_column]
58
- return df
59
-
60
-
61
- def json_to_excel(json_content: list, file_name, try_float=True):
62
- file_name = correct_folder(file_name, "xlsx")
63
- df = json_to_df(json_content)
64
- if try_float:
65
- df = make_df_float(df)
66
- try:
67
- df = make_date_first_column(df)
68
- df.to_excel(file_name)
69
- except:
70
- print(f"could not write excel file {file_name}. =>file is probably open")