neurostats-API 1.0.2rc3__tar.gz → 1.0.2rc4__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 (137) hide show
  1. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/PKG-INFO +2 -2
  2. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/README.md +1 -1
  3. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/__init__.py +3 -2
  4. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/__init__.py +2 -1
  5. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/__init__.py +2 -1
  6. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/__init__.py +1 -1
  7. neurostats_api-1.0.2rc4/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +86 -0
  8. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/__init__.py +1 -1
  9. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tech.py +30 -3
  10. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/__init__.py +2 -1
  11. neurostats_api-1.0.2rc4/neurostats_API/transformers/daily_tech/__init__.py +1 -0
  12. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/tech.py +34 -3
  13. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/PKG-INFO +2 -2
  14. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/SOURCES.txt +0 -1
  15. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/setup.py +1 -1
  16. neurostats_api-1.0.2rc3/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +0 -12
  17. neurostats_api-1.0.2rc3/neurostats_API/transformers/daily_tech/__init__.py +0 -1
  18. neurostats_api-1.0.2rc3/neurostats_API/transformers/tej/chip.py +0 -0
  19. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/MANIFEST.in +0 -0
  20. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/__init__.py +0 -0
  21. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/base.py +0 -0
  22. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/tej.py +0 -0
  23. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/twse.py +0 -0
  24. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/us.py +0 -0
  25. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/base.py +0 -0
  26. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/base.py +0 -0
  27. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/tej_chip.py +0 -0
  28. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/twse_chip.py +0 -0
  29. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/us_chip.py +0 -0
  30. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/value.py +0 -0
  31. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/yf.py +0 -0
  32. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/month_revenue/__init__.py +0 -0
  33. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/month_revenue/base.py +0 -0
  34. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/month_revenue/twse.py +0 -0
  35. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/__init__.py +0 -0
  36. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/balance_sheet.py +0 -0
  37. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/base.py +0 -0
  38. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/cashflow.py +0 -0
  39. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/profit_lose.py +0 -0
  40. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/tej.py +0 -0
  41. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/__init__.py +0 -0
  42. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/extractor_factory.py +0 -0
  43. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/transformer_factory.py +0 -0
  44. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/balance_sheet.py +0 -0
  45. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/base.py +0 -0
  46. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/cash_flow.py +0 -0
  47. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/finance_overview.py +0 -0
  48. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/month_revenue.py +0 -0
  49. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/profit_lose.py +0 -0
  50. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/__init__.py +0 -0
  51. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/seasonal_data.py +0 -0
  52. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/tech.py +0 -0
  53. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/twse_institution.py +0 -0
  54. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/twse_margin.py +0 -0
  55. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/us_chip.py +0 -0
  56. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/value.py +0 -0
  57. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/cli.py +0 -0
  58. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/ticker_index_industry_map.json +0 -0
  59. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/ticker_to_cik.json +0 -0
  60. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/tw.json +0 -0
  61. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/us.json +0 -0
  62. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/us_TradingView_list.json +0 -0
  63. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_index.yaml +0 -0
  64. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_percent_index.yaml +0 -0
  65. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_skip_index.yaml +0 -0
  66. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_thousand_index.yaml +0 -0
  67. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/balance_sheet.yaml +0 -0
  68. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/cash_flow_percentage.yaml +0 -0
  69. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/finance_overview_dict.yaml +0 -0
  70. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/profit_lose.yaml +0 -0
  71. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/seasonal_data_field_dict.txt +0 -0
  72. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/__init__.py +0 -0
  73. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/balance_sheet.py +0 -0
  74. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/base.py +0 -0
  75. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/cash_flow.py +0 -0
  76. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/finance_overview.py +0 -0
  77. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/institution.py +0 -0
  78. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/margin_trading.py +0 -0
  79. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/month_revenue.py +0 -0
  80. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/profit_lose.py +0 -0
  81. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/tech.py +0 -0
  82. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/tej_finance_report.py +0 -0
  83. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/value_invest.py +0 -0
  84. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/main.py +0 -0
  85. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/__init__.py +0 -0
  86. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/base.py +0 -0
  87. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/twse.py +0 -0
  88. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/us.py +0 -0
  89. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/base.py +0 -0
  90. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/__init__.py +0 -0
  91. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/base.py +0 -0
  92. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/twse.py +0 -0
  93. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/us.py +0 -0
  94. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/__init__.py +0 -0
  95. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/base.py +0 -0
  96. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/tej.py +0 -0
  97. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/twse_chip.py +0 -0
  98. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/us.py +0 -0
  99. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/__init__.py +0 -0
  100. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/institution.py +0 -0
  101. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/margin_trading.py +0 -0
  102. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/security_lending.py +0 -0
  103. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/base.py +0 -0
  104. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/utils/__init__.py +0 -0
  105. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/utils/processor.py +0 -0
  106. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/__init__.py +0 -0
  107. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/agent_overview.py +0 -0
  108. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/base.py +0 -0
  109. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/stats_overview.py +0 -0
  110. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/month_revenue/__init__.py +0 -0
  111. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/month_revenue/base.py +0 -0
  112. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/month_revenue/twse.py +0 -0
  113. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/__init__.py +0 -0
  114. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/base.py +0 -0
  115. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/twse.py +0 -0
  116. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/us.py +0 -0
  117. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/__init__.py +0 -0
  118. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/base.py +0 -0
  119. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/finance_statement.py +0 -0
  120. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/__init__.py +0 -0
  121. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/base.py +0 -0
  122. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/tej.py +0 -0
  123. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/twse.py +0 -0
  124. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/__init__.py +0 -0
  125. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/calculate_value.py +0 -0
  126. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/data_process.py +0 -0
  127. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/datetime.py +0 -0
  128. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/db_client.py +0 -0
  129. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/exception.py +0 -0
  130. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/logger.py +0 -0
  131. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/dependency_links.txt +0 -0
  132. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/requires.txt +0 -0
  133. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/top_level.txt +0 -0
  134. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/setup.cfg +0 -0
  135. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/test/test_async_fetcher.py +0 -0
  136. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/test/test_fetchers.py +0 -0
  137. {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/test/test_tej.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 1.0.2rc3
3
+ Version: 1.0.2rc4
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -71,7 +71,7 @@ pip install neurostats-API
71
71
  ```Python
72
72
  >>> import neurostats_API
73
73
  >>> print(neurostats_API.__version__)
74
- 1.0.2rc3
74
+ 1.0.2rc4
75
75
  ```
76
76
 
77
77
  ### 下載舊版
@@ -54,7 +54,7 @@ pip install neurostats-API
54
54
  ```Python
55
55
  >>> import neurostats_API
56
56
  >>> print(neurostats_API.__version__)
57
- 1.0.2rc3
57
+ 1.0.2rc4
58
58
  ```
59
59
 
60
60
  ### 下載舊版
@@ -1,4 +1,4 @@
1
- __version__='1.0.2rc3'
1
+ __version__='1.0.2rc4'
2
2
 
3
3
  from .fetchers import (
4
4
  AgentFinanceOverviewFetcher,
@@ -26,5 +26,6 @@ from .async_mode import (
26
26
  AsyncTWSEInstitutionFetcher,
27
27
  AsyncTWSEMarginFetcher,
28
28
  AsyncTWSEStatsValueFetcher,
29
- AsyncUSCelebrityFetcher
29
+ AsyncUSCelebrityFetcher,
30
+ AsyncBatchTechFetcher
30
31
  )
@@ -10,5 +10,6 @@ from .fetchers import (
10
10
  AsyncTWSEInstitutionFetcher,
11
11
  AsyncTWSEMarginFetcher,
12
12
  AsyncTWSEStatsValueFetcher,
13
- AsyncUSCelebrityFetcher
13
+ AsyncUSCelebrityFetcher,
14
+ AsyncBatchTechFetcher
14
15
  )
@@ -5,7 +5,8 @@ from .daily import (
5
5
  AsyncTEJDailyValueDBExtractor,
6
6
  AsyncTWSEChipDBExtractor,
7
7
  AsyncUS_F13DBExtractor,
8
- AsyncUS_CelebrityDBExtractor
8
+ AsyncUS_CelebrityDBExtractor,
9
+ AsyncBatchTechDBExtractor
9
10
  )
10
11
 
11
12
  from .month_revenue import (
@@ -1,4 +1,4 @@
1
- from .tej_tech import AsyncTEJDailyTechDBExtractor
1
+ from .tej_tech import AsyncTEJDailyTechDBExtractor, AsyncBatchTechDBExtractor
2
2
  from .twse_chip import AsyncTWSEChipDBExtractor
3
3
  from .value import (
4
4
  AsyncDailyValueDBExtractor,
@@ -0,0 +1,86 @@
1
+ from .base import BaseDailyTechDBExtractor
2
+ from pymongo import AsyncMongoClient, ASCENDING, DESCENDING
3
+
4
+ class AsyncTEJDailyTechDBExtractor(BaseDailyTechDBExtractor):
5
+
6
+ def __init__(self, ticker, client):
7
+ super().__init__(ticker, client)
8
+
9
+ def _get_collection_name(self):
10
+ self.collection_name_map = {"tw": "TEJ_share_price"}
11
+
12
+ return self.collection_name_map.get(self.zone, None)
13
+
14
+ class AsyncBatchTechDBExtractor(BaseDailyTechDBExtractor):
15
+
16
+ def __init__(self, ticker:list, client: AsyncMongoClient, zone:str):
17
+ self.tickers = ticker
18
+ self.zone = zone
19
+ self.client = client
20
+
21
+ self.collection_map = {
22
+ 'tw':{
23
+ 'db': "company_test",
24
+ 'collection': "twse_daily_share_price"
25
+ },
26
+ 'us':{
27
+ 'db': "company_us",
28
+ 'collection': "us_technical"
29
+ },
30
+ }
31
+
32
+ db_name = self.collection_map.get(self.zone).get('db')
33
+ collection_name = self.collection_map.get(self.zone).get('collection')
34
+ self.collection = self.client.get_database(db_name).get_collection(collection_name)
35
+
36
+ def _prepare_query(
37
+ self, start_date=None, end_date=None, get_latest=False
38
+ ):
39
+ query = {"ticker":{"$in": self.tickers}}
40
+
41
+ if start_date:
42
+ start_date = self._transform_date(start_date)
43
+ if end_date:
44
+ end_date = self._transform_date(end_date)
45
+
46
+ if start_date or end_date:
47
+ date_range = {}
48
+ if start_date:
49
+ date_range["$gte"] = start_date
50
+ if end_date:
51
+ date_range["$lte"] = end_date
52
+ query["date"] = date_range
53
+
54
+ projection = {
55
+ "_id": 0,
56
+ "ticker": 1,
57
+ "date": 1,
58
+ "open": 1,
59
+ "high": 1,
60
+ "low": 1,
61
+ "close": 1,
62
+ "volume": 1
63
+ }
64
+
65
+ if (get_latest):
66
+ sort = [("date", DESCENDING)]
67
+ else:
68
+ sort = [("date", ASCENDING)]
69
+
70
+ return query, projection, sort
71
+
72
+ async def query_data(
73
+ self, start_date=None, end_date=None, get_latest=False
74
+ ):
75
+ query, projection, sort = self._prepare_query(
76
+ start_date=start_date, end_date=end_date, get_latest=get_latest
77
+ )
78
+
79
+ if (get_latest):
80
+ cursor = self.collection.find(query, projection).sort(sort).limit(1)
81
+ else:
82
+ cursor = self.collection.find(query, projection).sort(sort)
83
+
84
+ fetched_data = [data async for data in cursor]
85
+
86
+ return fetched_data
@@ -1,7 +1,7 @@
1
1
  from .balance_sheet import AsyncBalanceSheetFetcher
2
2
  from .cash_flow import AsyncCashFlowFetcher
3
3
  from .finance_overview import AsyncFinanceOverviewFetcher, AsyncAgentOverviewFetcher
4
- from .tech import AsyncTechFetcher
4
+ from .tech import AsyncTechFetcher, AsyncBatchTechFetcher
5
5
  from .twse_institution import AsyncTWSEInstitutionFetcher
6
6
  from .twse_margin import AsyncTWSEMarginFetcher
7
7
  from .month_revenue import AsyncMonthlyRevenueFetcher
@@ -1,16 +1,17 @@
1
1
  from .base import AsyncBaseFetcher
2
2
  from datetime import datetime
3
3
  from ..db_extractors import (
4
- AsyncYFDailyTechDBExtractor, AsyncTEJDailyTechDBExtractor
4
+ AsyncYFDailyTechDBExtractor, AsyncTEJDailyTechDBExtractor,
5
+ AsyncBatchTechDBExtractor
5
6
  )
6
7
  from neurostats_API.async_mode.factory import get_extractor
7
- from neurostats_API.transformers import DailyTechTransformer
8
+ from neurostats_API.transformers import DailyTechTransformer, BatchTechTransformer
8
9
  from neurostats_API.utils import NotSupportedError
9
10
  import pandas as pd
10
11
  from pytz import timezone
11
12
  from neurostats_API.utils import StatsDateTime
12
13
  import yfinance as yf
13
-
14
+ from pymongo import AsyncMongoClient
14
15
 
15
16
  class AsyncTechFetcher(AsyncBaseFetcher):
16
17
 
@@ -208,3 +209,29 @@ class AsyncTechFetcher(AsyncBaseFetcher):
208
209
  df = pd.DataFrame(columns=self.required_cols)
209
210
 
210
211
  return df
212
+
213
+ class AsyncBatchTechFetcher(AsyncBaseFetcher):
214
+ def __init__(
215
+ self, client:AsyncMongoClient, tickers:list,
216
+ zone:str, strftime: str = "%Y-%m-%d"
217
+ ):
218
+ super().__init__()
219
+ self.tickers = tickers
220
+ self.zone = zone
221
+ self.extractor = AsyncBatchTechDBExtractor(
222
+ ticker=self.tickers, client=client, zone=zone
223
+ )
224
+ self.transformer = BatchTechTransformer(strftime=strftime)
225
+
226
+ async def query_data(
227
+ self, start_date=None, end_date=None, get_latest=False,
228
+ ):
229
+ fetched_data = await self.extractor.query_data(
230
+ start_date, end_date, get_latest,
231
+ )
232
+
233
+ transformed_data = self.transformer.process_transform(
234
+ fetched_datas = list(fetched_data),
235
+ )
236
+
237
+ return transformed_data
@@ -9,7 +9,8 @@ from .cash_flow import (
9
9
  )
10
10
 
11
11
  from .daily_tech import(
12
- DailyTechTransformer
12
+ DailyTechTransformer,
13
+ BatchTechTransformer
13
14
  )
14
15
 
15
16
  from .daily_chip import(
@@ -0,0 +1 @@
1
+ from .tech import DailyTechTransformer, BatchTechTransformer
@@ -1,8 +1,11 @@
1
1
  from .base import BaseDailyTransformer
2
- import inspect
3
- import pandas as pd
4
2
  from .utils import TechProcessor
5
3
 
4
+ import inspect
5
+ import pandas as pd
6
+ from datetime import datetime
7
+ from typing import List, Optional, Union
8
+ from collections import defaultdict
6
9
 
7
10
  class DailyTechTransformer(BaseDailyTransformer):
8
11
  def __init__(self, ticker, company_name, zone):
@@ -81,4 +84,32 @@ class DailyTechTransformer(BaseDailyTransformer):
81
84
  """
82
85
  回傳年線資料
83
86
  """
84
- return self._get_resampled("YE")
87
+ return self._get_resampled("YE")
88
+
89
+ class BatchTechTransformer(BaseDailyTransformer):
90
+ def __init__(self, strftime:str="%Y-%m-%d"):
91
+ self.date_format = strftime
92
+
93
+ def process_transform(
94
+ self,
95
+ fetched_datas: List[dict],
96
+ ) -> dict[str, dict[Union[str, datetime], float]]:
97
+
98
+ result = defaultdict(lambda: defaultdict(dict))
99
+
100
+ for record in fetched_datas:
101
+ ticker = record.get("ticker")
102
+ date = record.get("date")
103
+ if isinstance(date, str):
104
+ date = datetime.fromisoformat(date)
105
+ date_str = date.strftime(self.date_format)
106
+
107
+ result[ticker][date_str] = {
108
+ "open": record.get("open"),
109
+ "high": record.get("high"),
110
+ "low": record.get("low"),
111
+ "close": record.get("close"),
112
+ "volume": record.get("volume"),
113
+ }
114
+
115
+ return dict(result)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 1.0.2rc3
3
+ Version: 1.0.2rc4
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -71,7 +71,7 @@ pip install neurostats-API
71
71
  ```Python
72
72
  >>> import neurostats_API
73
73
  >>> print(neurostats_API.__version__)
74
- 1.0.2rc3
74
+ 1.0.2rc4
75
75
  ```
76
76
 
77
77
  ### 下載舊版
@@ -115,7 +115,6 @@ neurostats_API/transformers/profit_lose/twse.py
115
115
  neurostats_API/transformers/profit_lose/us.py
116
116
  neurostats_API/transformers/tej/__init__.py
117
117
  neurostats_API/transformers/tej/base.py
118
- neurostats_API/transformers/tej/chip.py
119
118
  neurostats_API/transformers/tej/finance_statement.py
120
119
  neurostats_API/transformers/value/__init__.py
121
120
  neurostats_API/transformers/value/base.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='neurostats_API',
5
- version='1.0.2rc3',
5
+ version='1.0.2rc4',
6
6
  long_description=open('README.md', 'r', encoding='utf-8').read(),
7
7
  long_description_content_type='text/markdown',
8
8
  install_requires=[
@@ -1,12 +0,0 @@
1
- from .base import BaseDailyTechDBExtractor
2
-
3
-
4
- class AsyncTEJDailyTechDBExtractor(BaseDailyTechDBExtractor):
5
-
6
- def __init__(self, ticker, client):
7
- super().__init__(ticker, client)
8
-
9
- def _get_collection_name(self):
10
- self.collection_name_map = {"tw": "TEJ_share_price"}
11
-
12
- return self.collection_name_map.get(self.zone, None)
@@ -1 +0,0 @@
1
- from .tech import DailyTechTransformer