neurostats-API 1.0.1rc1__tar.gz → 1.0.2rc1__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 (136) hide show
  1. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/PKG-INFO +2 -2
  2. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/README.md +1 -1
  3. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/__init__.py +3 -2
  4. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/__init__.py +2 -1
  5. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/__init__.py +2 -2
  6. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/__init__.py +1 -1
  7. neurostats_api-1.0.2rc1/neurostats_API/async_mode/db_extractors/daily/us_chip.py +132 -0
  8. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/__init__.py +1 -1
  9. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/us_chip.py +25 -2
  10. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/__init__.py +2 -1
  11. neurostats_api-1.0.2rc1/neurostats_API/transformers/daily_chip/__init__.py +2 -0
  12. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/us.py +26 -1
  13. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API.egg-info/PKG-INFO +2 -2
  14. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/setup.py +1 -1
  15. neurostats_api-1.0.1rc1/neurostats_API/async_mode/db_extractors/daily/us_chip.py +0 -66
  16. neurostats_api-1.0.1rc1/neurostats_API/transformers/daily_chip/__init__.py +0 -2
  17. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/MANIFEST.in +0 -0
  18. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db/__init__.py +0 -0
  19. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db/base.py +0 -0
  20. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db/tej.py +0 -0
  21. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db/twse.py +0 -0
  22. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db/us.py +0 -0
  23. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/base.py +0 -0
  24. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/base.py +0 -0
  25. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/tej_chip.py +0 -0
  26. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +0 -0
  27. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/twse_chip.py +0 -0
  28. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/value.py +0 -0
  29. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/daily/yf.py +0 -0
  30. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/month_revenue/__init__.py +0 -0
  31. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/month_revenue/base.py +0 -0
  32. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/month_revenue/twse.py +0 -0
  33. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/seasonal/__init__.py +0 -0
  34. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/seasonal/balance_sheet.py +0 -0
  35. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/seasonal/base.py +0 -0
  36. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/seasonal/cashflow.py +0 -0
  37. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/seasonal/profit_lose.py +0 -0
  38. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/db_extractors/seasonal/tej.py +0 -0
  39. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/factory/__init__.py +0 -0
  40. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/factory/extractor_factory.py +0 -0
  41. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/factory/transformer_factory.py +0 -0
  42. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/balance_sheet.py +0 -0
  43. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/base.py +0 -0
  44. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/cash_flow.py +0 -0
  45. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/finance_overview.py +0 -0
  46. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/month_revenue.py +0 -0
  47. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/profit_lose.py +0 -0
  48. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/tech.py +0 -0
  49. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/tej/__init__.py +0 -0
  50. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/tej/seasonal_data.py +0 -0
  51. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/tej/tech.py +0 -0
  52. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/twse_institution.py +0 -0
  53. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/twse_margin.py +0 -0
  54. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/async_mode/fetchers/value.py +0 -0
  55. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/cli.py +0 -0
  56. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/company_list/ticker_index_industry_map.json +0 -0
  57. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/company_list/ticker_to_cik.json +0 -0
  58. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/company_list/tw.json +0 -0
  59. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/company_list/us.json +0 -0
  60. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/company_list/us_TradingView_list.json +0 -0
  61. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/tej_db/tej_db_index.yaml +0 -0
  62. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/tej_db/tej_db_percent_index.yaml +0 -0
  63. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/tej_db/tej_db_skip_index.yaml +0 -0
  64. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/tej_db/tej_db_thousand_index.yaml +0 -0
  65. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/twse/balance_sheet.yaml +0 -0
  66. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/twse/cash_flow_percentage.yaml +0 -0
  67. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/twse/finance_overview_dict.yaml +0 -0
  68. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/twse/profit_lose.yaml +0 -0
  69. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/config/twse/seasonal_data_field_dict.txt +0 -0
  70. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/__init__.py +0 -0
  71. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/balance_sheet.py +0 -0
  72. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/base.py +0 -0
  73. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/cash_flow.py +0 -0
  74. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/finance_overview.py +0 -0
  75. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/institution.py +0 -0
  76. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/margin_trading.py +0 -0
  77. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/month_revenue.py +0 -0
  78. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/profit_lose.py +0 -0
  79. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/tech.py +0 -0
  80. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/tej_finance_report.py +0 -0
  81. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/fetchers/value_invest.py +0 -0
  82. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/main.py +0 -0
  83. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/balance_sheet/__init__.py +0 -0
  84. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/balance_sheet/base.py +0 -0
  85. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/balance_sheet/twse.py +0 -0
  86. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/balance_sheet/us.py +0 -0
  87. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/base.py +0 -0
  88. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/cash_flow/__init__.py +0 -0
  89. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/cash_flow/base.py +0 -0
  90. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/cash_flow/twse.py +0 -0
  91. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/cash_flow/us.py +0 -0
  92. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/base.py +0 -0
  93. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/tej.py +0 -0
  94. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/twse_chip.py +0 -0
  95. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/utils/__init__.py +0 -0
  96. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/utils/institution.py +0 -0
  97. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/utils/margin_trading.py +0 -0
  98. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_chip/utils/security_lending.py +0 -0
  99. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_tech/__init__.py +0 -0
  100. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_tech/base.py +0 -0
  101. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_tech/tech.py +0 -0
  102. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_tech/utils/__init__.py +0 -0
  103. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/daily_tech/utils/processor.py +0 -0
  104. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/finance_overview/__init__.py +0 -0
  105. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/finance_overview/agent_overview.py +0 -0
  106. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/finance_overview/base.py +0 -0
  107. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/finance_overview/stats_overview.py +0 -0
  108. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/month_revenue/__init__.py +0 -0
  109. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/month_revenue/base.py +0 -0
  110. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/month_revenue/twse.py +0 -0
  111. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/profit_lose/__init__.py +0 -0
  112. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/profit_lose/base.py +0 -0
  113. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/profit_lose/twse.py +0 -0
  114. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/profit_lose/us.py +0 -0
  115. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/tej/__init__.py +0 -0
  116. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/tej/base.py +0 -0
  117. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/tej/finance_statement.py +0 -0
  118. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/value/__init__.py +0 -0
  119. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/value/base.py +0 -0
  120. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/value/tej.py +0 -0
  121. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/transformers/value/twse.py +0 -0
  122. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/__init__.py +0 -0
  123. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/calculate_value.py +0 -0
  124. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/data_process.py +0 -0
  125. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/datetime.py +0 -0
  126. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/db_client.py +0 -0
  127. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/exception.py +0 -0
  128. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API/utils/logger.py +0 -0
  129. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API.egg-info/SOURCES.txt +0 -0
  130. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API.egg-info/dependency_links.txt +0 -0
  131. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API.egg-info/requires.txt +0 -0
  132. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/neurostats_API.egg-info/top_level.txt +0 -0
  133. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/setup.cfg +0 -0
  134. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/test/test_async_fetcher.py +0 -0
  135. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/test/test_fetchers.py +0 -0
  136. {neurostats_api-1.0.1rc1 → neurostats_api-1.0.2rc1}/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.1rc1
3
+ Version: 1.0.2rc1
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.0
74
+ 1.0.2rc1
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.0
57
+ 1.0.2rc1
58
58
  ```
59
59
 
60
60
  ### 下載舊版
@@ -1,4 +1,4 @@
1
- __version__='1.0.0'
1
+ __version__='1.0.2rc1'
2
2
 
3
3
  from .fetchers import (
4
4
  AgentFinanceOverviewFetcher,
@@ -25,5 +25,6 @@ from .async_mode import (
25
25
  AsyncTEJSeasonalFetcher,
26
26
  AsyncTWSEInstitutionFetcher,
27
27
  AsyncTWSEMarginFetcher,
28
- AsyncTWSEStatsValueFetcher
28
+ AsyncTWSEStatsValueFetcher,
29
+ AsyncUSCelebrityFetcher
29
30
  )
@@ -9,5 +9,6 @@ from .fetchers import (
9
9
  AsyncTEJSeasonalFetcher,
10
10
  AsyncTWSEInstitutionFetcher,
11
11
  AsyncTWSEMarginFetcher,
12
- AsyncTWSEStatsValueFetcher
12
+ AsyncTWSEStatsValueFetcher,
13
+ AsyncUSCelebrityFetcher
13
14
  )
@@ -4,8 +4,8 @@ from .daily import (
4
4
  AsyncDailyValueDBExtractor,
5
5
  AsyncTEJDailyValueDBExtractor,
6
6
  AsyncTWSEChipDBExtractor,
7
- AsyncUS_F13DBExtractor
8
-
7
+ AsyncUS_F13DBExtractor,
8
+ AsyncUS_CelebrityDBExtractor
9
9
  )
10
10
 
11
11
  from .month_revenue import (
@@ -4,5 +4,5 @@ from .value import (
4
4
  AsyncDailyValueDBExtractor,
5
5
  AsyncTEJDailyValueDBExtractor
6
6
  )
7
- from .us_chip import AsyncUS_F13DBExtractor
7
+ from .us_chip import AsyncUS_F13DBExtractor, AsyncUS_CelebrityDBExtractor
8
8
  from .yf import AsyncYFDailyTechDBExtractor
@@ -0,0 +1,132 @@
1
+ from datetime import datetime, timedelta
2
+ from pymongo import ASCENDING, DESCENDING
3
+ from .base import BaseDailyTechDBExtractor
4
+ from neurostats_API.utils import (
5
+ NotSupportedError, StatsProcessor
6
+ )
7
+ from pymongo import AsyncMongoClient
8
+
9
+ class AsyncUS_F13DBExtractor(BaseDailyTechDBExtractor):
10
+
11
+ def __init__(self, ticker, client, managerTicker=None):
12
+ """
13
+ ticker: Issuer Ticker, 被持有的股票代碼
14
+ managerTicker: 持有者的股票代碼
15
+ """
16
+ super().__init__(ticker, client)
17
+ self.issuerTicker = ticker
18
+ self.managerTicker = managerTicker
19
+
20
+ if (self.get_zone() not in ['us']):
21
+ raise NotSupportedError("Supports US Company Only")
22
+
23
+ def _get_collection_name(self):
24
+ self.collection_name_map = {"us": "us_F13"}
25
+
26
+ return self.collection_name_map.get(self.zone, None)
27
+
28
+ def _prepare_query(self, start_date=None, end_date=None, get_latest=False):
29
+ query = {"issuerTicker": self.issuerTicker}
30
+
31
+ if (self.managerTicker):
32
+ query.update(
33
+ {
34
+ "managerTicker": self.managerTicker
35
+ }
36
+ )
37
+
38
+ query = self._update_query_with_date(query, start_date, end_date)
39
+
40
+ projection = {
41
+ "_id": 0,
42
+ }
43
+
44
+ if (get_latest):
45
+ sort = [("reportDate", DESCENDING)]
46
+ else:
47
+ sort = [("reportDate", ASCENDING)]
48
+
49
+ return query, projection, sort
50
+
51
+ def _update_query_with_date(self, query, start_date, end_date):
52
+ start_date = self._transform_date(start_date)
53
+ end_date = self._transform_date(end_date)
54
+
55
+ date_range = {"$gte": start_date, "$lte": end_date}
56
+
57
+ query.update({"reportDate": date_range})
58
+
59
+ return query
60
+
61
+ async def query_data(
62
+ self, start_date=None, end_date=None, get_latest=False
63
+ ):
64
+ result = await super().query_data(start_date, end_date, get_latest)
65
+
66
+ return result
67
+
68
+ class AsyncUS_CelebrityDBExtractor(AsyncUS_F13DBExtractor):
69
+ """
70
+ 用於查詢美國名人持股的專用extractor
71
+ """
72
+ def __init__(self, client:AsyncMongoClient, manager_name=None):
73
+ """
74
+ manager_name: 名人名稱
75
+ """
76
+ self.client = client
77
+ self.zone = "us"
78
+ self.manager = manager_name
79
+ self.collection_name_map = {"us": "us_F13"}
80
+ self.collection = self.client.get_database("company_us").get_collection("us_F13")
81
+
82
+
83
+ def _get_collection_name(self):
84
+
85
+ return self.collection_name_map.get(self.zone, None)
86
+
87
+ def _prepare_query(
88
+ self, start_date=None, end_date=None, get_latest=False,
89
+ value_throshold=None, title=None
90
+ ):
91
+
92
+ start_date = self._transform_date(start_date)
93
+ end_date = self._transform_date(end_date)
94
+
95
+ query = {
96
+ "manager": self.manager,
97
+ "reportDate": {"$gte": start_date, "$lte": end_date}
98
+ }
99
+
100
+ if value_throshold:
101
+ query["value"] = {"$gt": value_throshold}
102
+
103
+ if title:
104
+ query["titleOfClass"] = title
105
+
106
+ projection = {"_id": 0}
107
+
108
+ if (get_latest):
109
+ sort = [("reportDate", DESCENDING)]
110
+ else:
111
+ sort = [("reportDate", ASCENDING)]
112
+
113
+ return query, projection, sort
114
+
115
+ async def query_data(
116
+ self, start_date=None, end_date=None, get_latest=False,
117
+ value_throshold=None, title=None
118
+ ):
119
+ query, projection, sort = self._prepare_query(
120
+ start_date=start_date, end_date=end_date, get_latest=get_latest,
121
+ value_throshold=value_throshold, title=title
122
+ )
123
+
124
+ if (get_latest):
125
+ cursor = self.collection.find(query, projection).sort(sort).limit(1)
126
+ else:
127
+ cursor = self.collection.find(query, projection).sort(sort)
128
+
129
+ fetched_data = [data async for data in cursor]
130
+
131
+ return fetched_data
132
+
@@ -8,4 +8,4 @@ from .month_revenue import AsyncMonthlyRevenueFetcher
8
8
  from .profit_lose import AsyncProfitLoseFetcher
9
9
  from .value import AsyncTWSEStatsValueFetcher
10
10
  from .tej import AsyncTEJDailyTechFetcher, AsyncTEJSeasonalFetcher
11
- from .us_chip import AsyncUSChipF13Fetcher
11
+ from .us_chip import AsyncUSChipF13Fetcher, AsyncUSCelebrityFetcher
@@ -1,9 +1,9 @@
1
1
  from .base import AsyncBaseFetcher
2
2
  from ..db_extractors import (
3
- AsyncDailyValueDBExtractor, AsyncTEJDailyValueDBExtractor
3
+ AsyncDailyValueDBExtractor, AsyncTEJDailyValueDBExtractor, AsyncUS_CelebrityDBExtractor
4
4
  )
5
5
  from neurostats_API.async_mode.factory import get_extractor
6
- from neurostats_API.transformers import US_F13_Transformer
6
+ from neurostats_API.transformers import US_F13_Transformer, US_CelebrityTransformer
7
7
  from neurostats_API.utils import NotSupportedError
8
8
 
9
9
 
@@ -44,3 +44,26 @@ class AsyncUSChipF13Fetcher(AsyncBaseFetcher):
44
44
  )
45
45
 
46
46
  return transformed_data
47
+
48
+ class AsyncUSCelebrityFetcher(AsyncBaseFetcher):
49
+
50
+ def __init__(self, client, manager_name):
51
+ self.manager_name = manager_name
52
+ self.extractor = AsyncUS_CelebrityDBExtractor(client, manager_name)
53
+ self.transformer = US_CelebrityTransformer()
54
+
55
+ async def query_data(
56
+ self, start_date=None, end_date=None, get_latest=False,
57
+ value_threshold=None, title=None, strftime=None
58
+ ):
59
+ fetched_data = await self.extractor.query_data(
60
+ start_date, end_date, get_latest,
61
+ value_throshold=value_threshold, title=title
62
+ )
63
+
64
+ transformed_data = self.transformer.process_transform(
65
+ fetched_datas = list(fetched_data),
66
+ strftime = strftime
67
+ )
68
+
69
+ return transformed_data
@@ -14,7 +14,8 @@ from .daily_tech import(
14
14
 
15
15
  from .daily_chip import(
16
16
  TWSEChipTransformer,
17
- US_F13_Transformer
17
+ US_F13_Transformer,
18
+ US_CelebrityTransformer
18
19
  )
19
20
 
20
21
  from .month_revenue import(
@@ -0,0 +1,2 @@
1
+ from .twse_chip import TWSEChipTransformer
2
+ from .us import US_F13_Transformer, US_CelebrityTransformer
@@ -4,6 +4,8 @@ import inspect
4
4
  import numpy as np
5
5
  import pandas as pd
6
6
  from neurostats_API.utils import StatsProcessor
7
+ from collections import defaultdict
8
+ from typing import List, Optional, Union
7
9
 
8
10
  class US_F13_Transformer(BaseChipTransformer):
9
11
  def __init__(self, ticker, company_name, zone):
@@ -37,4 +39,27 @@ class US_F13_Transformer(BaseChipTransformer):
37
39
 
38
40
  return return_dict
39
41
 
40
-
42
+ class US_CelebrityTransformer():
43
+
44
+ def __init__(self):
45
+ pass
46
+
47
+ def process_transform(
48
+ self,
49
+ fetched_datas: List[dict],
50
+ strftime: Optional[str] = None
51
+ ) -> dict[str, dict[Union[str, datetime], float]]:
52
+
53
+ result = defaultdict(lambda: defaultdict(dict))
54
+
55
+ for record in fetched_datas:
56
+ ticker = record.get("issuerTicker")
57
+ report_date = record.get("reportDate")
58
+ value = record.get("value")
59
+ title = record.get("titleOfClass")
60
+
61
+ if ticker and report_date and title:
62
+ key = report_date.strftime(strftime) if strftime else report_date
63
+ result.setdefault(ticker, {}).setdefault(title, {})[key] = value
64
+
65
+ return dict(result)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 1.0.1rc1
3
+ Version: 1.0.2rc1
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.0
74
+ 1.0.2rc1
75
75
  ```
76
76
 
77
77
  ### 下載舊版
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='neurostats_API',
5
- version='1.0.1rc1',
5
+ version='1.0.2rc1',
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,66 +0,0 @@
1
- from datetime import datetime, timedelta
2
- from pymongo import ASCENDING, DESCENDING
3
- from .base import BaseDailyTechDBExtractor
4
- from neurostats_API.utils import (
5
- NotSupportedError, StatsProcessor
6
- )
7
-
8
-
9
- class AsyncUS_F13DBExtractor(BaseDailyTechDBExtractor):
10
-
11
- def __init__(self, ticker, client, managerTicker=None):
12
- """
13
- ticker: Issuer Ticker, 被持有的股票代碼
14
- managerTicker: 持有者的股票代碼
15
- """
16
- super().__init__(ticker, client)
17
- self.issuerTicker = ticker
18
- self.managerTicker = managerTicker
19
-
20
- if (self.get_zone() not in ['us']):
21
- raise NotSupportedError("Supports US Company Only")
22
-
23
- def _get_collection_name(self):
24
- self.collection_name_map = {"us": "us_F13"}
25
-
26
- return self.collection_name_map.get(self.zone, None)
27
-
28
- def _prepare_query(self, start_date=None, end_date=None, get_latest=False):
29
- query = {"issuerTicker": self.issuerTicker}
30
-
31
- if (self.managerTicker):
32
- query.update(
33
- {
34
- "managerTicker": self.managerTicker
35
- }
36
- )
37
-
38
- query = self._update_query_with_date(query, start_date, end_date)
39
-
40
- projection = {
41
- "_id": 0,
42
- }
43
-
44
- if (get_latest):
45
- sort = [("reportDate", DESCENDING)]
46
- else:
47
- sort = [("reportDate", ASCENDING)]
48
-
49
- return query, projection, sort
50
-
51
- def _update_query_with_date(self, query, start_date, end_date):
52
- start_date = self._transform_date(start_date)
53
- end_date = self._transform_date(end_date)
54
-
55
- date_range = {"$gte": start_date, "$lte": end_date}
56
-
57
- query.update({"reportDate": date_range})
58
-
59
- return query
60
-
61
- async def query_data(
62
- self, start_date=None, end_date=None, get_latest=False
63
- ):
64
- result = await super().query_data(start_date, end_date, get_latest)
65
-
66
- return result
@@ -1,2 +0,0 @@
1
- from .twse_chip import TWSEChipTransformer
2
- from .us import US_F13_Transformer