neurostats-API 1.0.0rc4__tar.gz → 1.0.0rc6__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 (130) hide show
  1. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/PKG-INFO +2 -2
  2. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/README.md +1 -1
  3. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/__init__.py +1 -1
  4. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/__init__.py +1 -1
  5. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/tech.py +2 -2
  6. neurostats_api-1.0.0rc6/neurostats_API/async_mode/fetchers/tej/__init__.py +2 -0
  7. neurostats_api-1.0.0rc4/neurostats_API/async_mode/fetchers/tej.py → neurostats_api-1.0.0rc6/neurostats_API/async_mode/fetchers/tej/seasonal_data.py +1 -1
  8. neurostats_api-1.0.0rc6/neurostats_API/async_mode/fetchers/tej/tech.py +34 -0
  9. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/us.py +17 -9
  10. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/base.py +1 -1
  11. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/twse_chip.py +1 -1
  12. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/month_revenue/twse.py +13 -8
  13. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/us.py +1 -0
  14. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/finance_statement.py +1 -1
  15. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/twse.py +1 -1
  16. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/PKG-INFO +2 -2
  17. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/SOURCES.txt +3 -1
  18. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/setup.py +1 -1
  19. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/test/test_async_fetcher.py +1 -1
  20. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/MANIFEST.in +0 -0
  21. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/__init__.py +0 -0
  22. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/__init__.py +0 -0
  23. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/base.py +0 -0
  24. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/tej.py +0 -0
  25. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/twse.py +0 -0
  26. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/us.py +0 -0
  27. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/__init__.py +0 -0
  28. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/base.py +0 -0
  29. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/__init__.py +0 -0
  30. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/base.py +0 -0
  31. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/tej_chip.py +0 -0
  32. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +0 -0
  33. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/twse_chip.py +0 -0
  34. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/value.py +0 -0
  35. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/yf.py +0 -0
  36. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/month_revenue/__init__.py +0 -0
  37. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/month_revenue/base.py +0 -0
  38. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/month_revenue/twse.py +0 -0
  39. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/__init__.py +0 -0
  40. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/balance_sheet.py +0 -0
  41. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/base.py +0 -0
  42. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/cashflow.py +0 -0
  43. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/profit_lose.py +0 -0
  44. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/tej.py +0 -0
  45. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/__init__.py +0 -0
  46. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/extractor_factory.py +0 -0
  47. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/transformer_factory.py +0 -0
  48. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/balance_sheet.py +0 -0
  49. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/base.py +0 -0
  50. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/cash_flow.py +0 -0
  51. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/finance_overview.py +0 -0
  52. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/month_revenue.py +0 -0
  53. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/profit_lose.py +0 -0
  54. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/twse_institution.py +0 -0
  55. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/twse_margin.py +0 -0
  56. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/value.py +0 -0
  57. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/cli.py +0 -0
  58. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/ticker_index_industry_map.json +0 -0
  59. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/tw.json +0 -0
  60. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/us.json +0 -0
  61. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/us_TradingView_list.json +0 -0
  62. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_index.yaml +0 -0
  63. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_percent_index.yaml +0 -0
  64. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_skip_index.yaml +0 -0
  65. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_thousand_index.yaml +0 -0
  66. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/balance_sheet.yaml +0 -0
  67. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/cash_flow_percentage.yaml +0 -0
  68. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/finance_overview_dict.yaml +0 -0
  69. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/profit_lose.yaml +0 -0
  70. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/seasonal_data_field_dict.txt +0 -0
  71. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/__init__.py +0 -0
  72. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/balance_sheet.py +0 -0
  73. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/base.py +0 -0
  74. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/cash_flow.py +0 -0
  75. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/finance_overview.py +0 -0
  76. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/institution.py +0 -0
  77. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/margin_trading.py +0 -0
  78. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/month_revenue.py +0 -0
  79. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/profit_lose.py +0 -0
  80. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/tech.py +0 -0
  81. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/tej_finance_report.py +0 -0
  82. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/value_invest.py +0 -0
  83. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/main.py +0 -0
  84. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/__init__.py +0 -0
  85. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/__init__.py +0 -0
  86. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/base.py +0 -0
  87. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/twse.py +0 -0
  88. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/__init__.py +0 -0
  89. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/base.py +0 -0
  90. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/twse.py +0 -0
  91. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/us.py +0 -0
  92. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/__init__.py +0 -0
  93. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/base.py +0 -0
  94. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/tej.py +0 -0
  95. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/__init__.py +0 -0
  96. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/institution.py +0 -0
  97. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/margin_trading.py +0 -0
  98. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/security_lending.py +0 -0
  99. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/__init__.py +0 -0
  100. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/base.py +0 -0
  101. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/tech.py +0 -0
  102. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/utils/__init__.py +0 -0
  103. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/utils/processor.py +0 -0
  104. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/__init__.py +0 -0
  105. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/agent_overview.py +0 -0
  106. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/base.py +0 -0
  107. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/stats_overview.py +0 -0
  108. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/month_revenue/__init__.py +0 -0
  109. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/month_revenue/base.py +0 -0
  110. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/__init__.py +0 -0
  111. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/base.py +0 -0
  112. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/twse.py +0 -0
  113. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/__init__.py +0 -0
  114. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/base.py +0 -0
  115. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/__init__.py +0 -0
  116. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/base.py +0 -0
  117. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/tej.py +0 -0
  118. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/__init__.py +0 -0
  119. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/calculate_value.py +0 -0
  120. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/data_process.py +0 -0
  121. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/datetime.py +0 -0
  122. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/db_client.py +0 -0
  123. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/exception.py +0 -0
  124. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/logger.py +0 -0
  125. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/dependency_links.txt +0 -0
  126. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/requires.txt +0 -0
  127. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/top_level.txt +0 -0
  128. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/setup.cfg +0 -0
  129. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/test/test_fetchers.py +0 -0
  130. {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/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.0rc4
3
+ Version: 1.0.0rc6
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.0rc4
74
+ 1.0.0rc6
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.0rc4
57
+ 1.0.0rc6
58
58
  ```
59
59
 
60
60
  ### 下載舊版
@@ -1,4 +1,4 @@
1
- __version__='1.0.0rc4'
1
+ __version__='1.0.0rc5'
2
2
 
3
3
  from .fetchers import (
4
4
  AgentFinanceOverviewFetcher,
@@ -7,4 +7,4 @@ from .twse_margin import AsyncTWSEMarginFetcher
7
7
  from .month_revenue import AsyncMonthlyRevenueFetcher
8
8
  from .profit_lose import AsyncProfitLoseFetcher
9
9
  from .value import AsyncTWSEStatsValueFetcher
10
- from .tej import AsyncTEJSeasonalFetcher
10
+ from .tej import AsyncTEJDailyTechFetcher, AsyncTEJSeasonalFetcher
@@ -157,7 +157,7 @@ class AsyncTechFetcher(AsyncBaseFetcher):
157
157
  start_date, end_date
158
158
  )
159
159
 
160
- if (len(fetched_data) > 0):
160
+ if (fetched_data):
161
161
  df = pd.DataFrame(fetched_data)
162
162
  return df
163
163
  else:
@@ -171,7 +171,7 @@ class AsyncTechFetcher(AsyncBaseFetcher):
171
171
  start_date, end_date
172
172
  )
173
173
 
174
- if (len(fetched_data) > 0):
174
+ if (fetched_data):
175
175
  df = pd.DataFrame(fetched_data)
176
176
  df = df.rename(
177
177
  columns={
@@ -0,0 +1,2 @@
1
+ from .seasonal_data import AsyncTEJSeasonalFetcher
2
+ from .tech import AsyncTEJDailyTechFetcher
@@ -1,4 +1,4 @@
1
- from .base import AsyncBaseFetcher
1
+ from neurostats_API.async_mode.fetchers.base import AsyncBaseFetcher
2
2
  from datetime import datetime
3
3
  from neurostats_API.async_mode.db_extractors import (
4
4
  AsyncTEJFinanceStatementDBExtractor, AsyncTEJSelfSettlementDBExtractor
@@ -0,0 +1,34 @@
1
+ import pandas as pd
2
+ from neurostats_API.async_mode.fetchers.base import AsyncBaseFetcher
3
+ from neurostats_API.async_mode.factory import get_extractor
4
+ from neurostats_API.utils import NotSupportedError
5
+
6
+ class AsyncTEJDailyTechFetcher(AsyncBaseFetcher):
7
+
8
+ def __init__(
9
+ self,
10
+ ticker,
11
+ client,
12
+ ):
13
+ self.ticker = ticker
14
+ try:
15
+ self.extractor = get_extractor("TEJ_tech", ticker, client)
16
+
17
+ self.company_name = self.extractor.get_company_name()
18
+ self.zone = self.extractor.get_zone()
19
+
20
+ except NotSupportedError as e:
21
+ raise NotSupportedError(
22
+ f"{self.__class__.__name__} only support TW companies now, {ticker} is not available"
23
+ ) from e
24
+
25
+ async def query_data(self, start_date, end_date):
26
+ data = await self.extractor.query_data(start_date, end_date)
27
+ df = pd.DataFrame(data)
28
+ return df.rename(columns={
29
+ "open_d": "open",
30
+ "high_d": "high",
31
+ "low_d": "low",
32
+ "close_d": "close",
33
+ "vol": "volume"
34
+ })
@@ -1,24 +1,32 @@
1
1
  from .base import BaseBalanceSheetTransformer
2
2
  from neurostats_API.utils import StatsProcessor
3
3
 
4
+
4
5
  class USBalanceSheetTransformer(BaseBalanceSheetTransformer):
5
- def __init__(self, ticker, company_name, zone):
6
+
7
+ def __init__(self, ticker, company_name, zone):
6
8
  super().__init__(ticker, company_name, zone)
7
9
 
8
10
  self.data_df = None
9
-
11
+ self.return_keys = [
12
+ 'balance_sheet',
13
+ 'balance_sheet_YoY'
14
+ ]
15
+
10
16
  def process_transform(self, fetched_data):
11
- return_dict = {
12
- "ticker": self.ticker,
13
- "company_name": self.company_name
14
- }
17
+ if (not fetched_data):
18
+ return self._get_empty_structure()
19
+
20
+ return_dict = {"ticker": self.ticker, "company_name": self.company_name}
15
21
 
16
22
  # QoQ表格
17
23
  self.data_df = self._process_us_format(fetched_data)
18
-
24
+
19
25
  # YoY表格
20
26
  target_season = fetched_data[0]['season']
21
- total_table_YoY = self._slice_target_season(self.data_df.T, target_season)
27
+ total_table_YoY = self._slice_target_season(
28
+ self.data_df.T, target_season
29
+ )
22
30
 
23
31
  return_dict.update(
24
32
  {
@@ -27,4 +35,4 @@ class USBalanceSheetTransformer(BaseBalanceSheetTransformer):
27
35
  }
28
36
  )
29
37
 
30
- return return_dict
38
+ return return_dict
@@ -100,7 +100,7 @@ class BaseTransformer(abc.ABC):
100
100
 
101
101
  return_dict.update(
102
102
  {
103
- key: pd.DataFrame(columns=pd.Index([], name='date'))
103
+ key: pd.DataFrame(columns=pd.Index([], name='index'))
104
104
  for key in self.return_keys
105
105
  }
106
106
  )
@@ -35,7 +35,7 @@ class TWSEChipTransformer(BaseChipTransformer):
35
35
 
36
36
  tech_dict = {data['date']: data for data in tech_data}
37
37
  latest_tech = tech_data[-1]
38
- if (len(fetched_data) < 1):
38
+ if (not fetched_data):
39
39
  return_dict['latest_trading'].update(
40
40
  self._process_latest({}, latest_tech, key)
41
41
  )
@@ -1,4 +1,5 @@
1
1
  from .base import BaseMonthRevenueTransformer
2
+ from datetime import datetime
2
3
  from neurostats_API.utils import StatsProcessor, YoY_Calculator
3
4
  import pandas as pd
4
5
 
@@ -8,6 +9,8 @@ class TWSEMonthlyRevenueTransformer(BaseMonthRevenueTransformer):
8
9
 
9
10
  self.data_df = None
10
11
  def process_transform(self, fetched_data):
12
+ if (not fetched_data):
13
+ return self._get_empty_structure()
11
14
  self.data_df = self._process_data(fetched_data)
12
15
  target_month = fetched_data[0]['month']
13
16
 
@@ -65,11 +68,11 @@ class TWSEMonthlyRevenueTransformer(BaseMonthRevenueTransformer):
65
68
  return return_dict
66
69
 
67
70
  def _get_recent_growth(self, monthly_data, grand_total_dict, interval=12):
68
- last_month_data = monthly_data[1:interval + 1] + [{}] * max(0, interval - len(monthly_data) + 1)
71
+ last_month_data = monthly_data[-(interval + 1): ] + [{}] * max(0, interval - len(monthly_data) + 1)
69
72
 
70
73
  MoMs = [
71
74
  YoY_Calculator.cal_growth(this.get('revenue'), last.get('revenue'), delta = 1)
72
- for this, last in zip(monthly_data[:interval], last_month_data[:interval])
75
+ for last, this in zip(last_month_data[:interval], last_month_data[1 :interval + 1])
73
76
  ]
74
77
 
75
78
  def safe_accum_yoy(data):
@@ -82,25 +85,27 @@ class TWSEMonthlyRevenueTransformer(BaseMonthRevenueTransformer):
82
85
  return None
83
86
 
84
87
  recent_month_data = {
85
- "date": [f"{d.get('year', 0)}/{d.get('month', 0)}" for d in monthly_data[:interval]],
86
- "revenue": [d.get('revenue') for d in monthly_data[:interval]],
88
+ "date": [f"{d.get('year', 0)}/{d.get('month', 0)}" for d in last_month_data[:interval]],
89
+ "revenue": [d.get('revenue') for d in last_month_data[:interval]],
87
90
  "MoM": [f"{(m * 100):.2f}%" if isinstance(m, float) else None for m in MoMs],
88
- "YoY": [d.get('revenue_increment_ratio') for d in monthly_data[:interval]],
89
- "total_YoY": [d.get('grand_total_increment_ratio') for d in monthly_data[:interval]],
91
+ "YoY": [d.get('revenue_increment_ratio') for d in last_month_data[:interval]],
92
+ "total_YoY": [d.get('grand_total_increment_ratio') for d in last_month_data[:interval]],
90
93
  # accum_YoY
91
94
  # accum_YoY 為 Davis提出的定義
92
95
  # 2024/6的累計YoY(accum_YoY) 為 2024累計到6月為止的總營收/2023年度總營收
93
- "accum_YoY": [safe_accum_yoy(d) for d in monthly_data[:interval]]
96
+ "accum_YoY": [safe_accum_yoy(d) for d in last_month_data[:interval]]
94
97
  }
95
98
 
96
99
  df = pd.DataFrame(recent_month_data)
97
100
  return df[df['date'] != "0/0"].set_index('date').T
98
101
 
99
102
 
100
- def _get_empty_structure(self, target_year, target_month):
103
+ def _get_empty_structure(self):
101
104
  """
102
105
  Exception 發生時回傳
103
106
  """
107
+ target_date = datetime.today()
108
+ target_year, target_month = target_date.year, target_date.month
104
109
  recent_date = [f"{target_year}/{target_month}"]
105
110
  for _ in range(11):
106
111
  target_year, target_month = (target_year - 1, 12) if target_month == 1 else (target_year, target_month - 1)
@@ -6,6 +6,7 @@ class USProfitLoseTransformer(BaseProfitLoseTransformer):
6
6
  def __init__(self, ticker, company_name, zone):
7
7
  super().__init__(ticker, company_name, zone)
8
8
  self.data_df = None
9
+ self.return_keys = ['profit_lose']
9
10
 
10
11
  def process_transform(self, fetched_data):
11
12
 
@@ -35,7 +35,7 @@ class TEJFinanceStatementTransformer(BaseTEJTransformer):
35
35
  use_cal=True,
36
36
  indexes=None
37
37
  ):
38
- if (len(fetched_data) == 0):
38
+ if (not fetched_data):
39
39
  raise NoDataError(f"No data found in collection: TEJ_finance_statement, ticker={self.ticker}")
40
40
 
41
41
  target_season = fetched_data[-1]['season']
@@ -35,7 +35,7 @@ class TWSEHistoryValueTransformer(TWSEValueTransformer):
35
35
  return return_dict
36
36
 
37
37
  def process_latest(self, daily_data):
38
- if len(daily_data) < 1:
38
+ if (not daily_data):
39
39
  return self._get_empty_structure()
40
40
 
41
41
  daily_data = daily_data[-1]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 1.0.0rc4
3
+ Version: 1.0.0rc6
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.0rc4
74
+ 1.0.0rc6
75
75
  ```
76
76
 
77
77
  ### 下載舊版
@@ -44,10 +44,12 @@ neurostats_API/async_mode/fetchers/finance_overview.py
44
44
  neurostats_API/async_mode/fetchers/month_revenue.py
45
45
  neurostats_API/async_mode/fetchers/profit_lose.py
46
46
  neurostats_API/async_mode/fetchers/tech.py
47
- neurostats_API/async_mode/fetchers/tej.py
48
47
  neurostats_API/async_mode/fetchers/twse_institution.py
49
48
  neurostats_API/async_mode/fetchers/twse_margin.py
50
49
  neurostats_API/async_mode/fetchers/value.py
50
+ neurostats_API/async_mode/fetchers/tej/__init__.py
51
+ neurostats_API/async_mode/fetchers/tej/seasonal_data.py
52
+ neurostats_API/async_mode/fetchers/tej/tech.py
51
53
  neurostats_API/config/company_list/ticker_index_industry_map.json
52
54
  neurostats_API/config/company_list/tw.json
53
55
  neurostats_API/config/company_list/us.json
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='neurostats_API',
5
- version='1.0.0rc4',
5
+ version='1.0.0rc6',
6
6
  long_description=open('README.md', 'r', encoding='utf-8').read(),
7
7
  long_description_content_type='text/markdown',
8
8
  install_requires=[
@@ -103,7 +103,7 @@ async def test_tech():
103
103
 
104
104
  test_fns = [
105
105
  fetcher.get_daily, fetcher.get_weekly, fetcher.get_monthly,
106
- fetcher.get_quarterly, fetcher.get_yearly
106
+ fetcher.get_quarterly, fetcher.get_yearly, fetcher.get_tej
107
107
  ]
108
108
 
109
109
  for fetch_fn in test_fns: