bullishpy 0.39.0__tar.gz → 0.40.0__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.

Potentially problematic release.


This version of bullishpy might be problematic. Click here for more details.

Files changed (59) hide show
  1. {bullishpy-0.39.0 → bullishpy-0.40.0}/PKG-INFO +1 -1
  2. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/filter.py +1 -1
  3. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/app/app.py +5 -22
  4. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/crud.py +8 -1
  5. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/jobs/tasks.py +1 -0
  6. {bullishpy-0.39.0 → bullishpy-0.40.0}/pyproject.toml +1 -1
  7. {bullishpy-0.39.0 → bullishpy-0.40.0}/README.md +0 -0
  8. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/__init__.py +0 -0
  9. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/__init__.py +0 -0
  10. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/analysis.py +0 -0
  11. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/backtest.py +0 -0
  12. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/constants.py +0 -0
  13. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/functions.py +0 -0
  14. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/indicators.py +0 -0
  15. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/industry_views.py +0 -0
  16. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/analysis/predefined_filters.py +0 -0
  17. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/app/__init__.py +0 -0
  18. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/cli.py +0 -0
  19. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/__init__.py +0 -0
  20. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/README +0 -0
  21. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/alembic.ini +0 -0
  22. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/env.py +0 -0
  23. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/script.py.mako +0 -0
  24. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/037dbd721317_.py +0 -0
  25. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/040b15fba458_.py +0 -0
  26. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/08ac1116e055_.py +0 -0
  27. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/11d35a452b40_.py +0 -0
  28. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/12889a2cbd7d_.py +0 -0
  29. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/17e51420e7ad_.py +0 -0
  30. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/49c83f9eb5ac_.py +0 -0
  31. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/4b0a2f40b7d3_.py +0 -0
  32. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/5b10ee7604c1_.py +0 -0
  33. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/6d252e23f543_.py +0 -0
  34. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/73564b60fe24_.py +0 -0
  35. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/79bc71ec6f9e_.py +0 -0
  36. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/ae444f338124_.py +0 -0
  37. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/b76079e9845f_.py +0 -0
  38. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/bf6b86dd5463_.py +0 -0
  39. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/d0e58e050845_.py +0 -0
  40. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/d663166c531d_.py +0 -0
  41. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/ec25c8fa449f_.py +0 -0
  42. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/ee5baabb35f8_.py +0 -0
  43. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/fc191121f522_.py +0 -0
  44. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/alembic/versions/ff0cc4ba40ec_.py +0 -0
  45. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/schemas.py +0 -0
  46. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/scripts/create_revision.py +0 -0
  47. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/scripts/stamp.py +0 -0
  48. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/scripts/upgrade.py +0 -0
  49. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/database/settings.py +0 -0
  50. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/exceptions.py +0 -0
  51. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/figures/__init__.py +0 -0
  52. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/figures/figures.py +0 -0
  53. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/interface/__init__.py +0 -0
  54. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/interface/interface.py +0 -0
  55. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/jobs/__init__.py +0 -0
  56. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/jobs/app.py +0 -0
  57. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/jobs/models.py +0 -0
  58. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/utils/__init__.py +0 -0
  59. {bullishpy-0.39.0 → bullishpy-0.40.0}/bullish/utils/checks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bullishpy
3
- Version: 0.39.0
3
+ Version: 0.40.0
4
4
  Summary:
5
5
  Author: aan
6
6
  Author-email: andoludovic.andriamamonjy@gmail.com
@@ -256,7 +256,7 @@ class FilterQueryStored(FilterQuery): ...
256
256
 
257
257
 
258
258
  class FilterUpdate(BaseModel):
259
- window_size: SeriesLength = Field("5d")
259
+ window_size: SeriesLength = Field("1m")
260
260
  data_age_in_days: int = 1
261
261
  update_financials: bool = False
262
262
  update_analysis_only: bool = False
@@ -6,13 +6,13 @@ from typing import Optional, List, Type, Dict, Any
6
6
 
7
7
  import pandas as pd
8
8
  import streamlit as st
9
+
9
10
  import streamlit_pydantic as sp
10
11
  from bearish.models.base import Ticker # type: ignore
11
12
  from bearish.models.price.prices import Prices # type: ignore
12
13
  from bearish.models.query.query import AssetQuery, Symbols # type: ignore
13
14
  from streamlit_file_browser import st_file_browser # type: ignore
14
15
 
15
- from bullish.analysis.backtest import BacktestResults
16
16
  from bullish.analysis.industry_views import get_industry_comparison_data
17
17
  from bullish.analysis.predefined_filters import PredefinedFilters
18
18
  from bullish.database.crud import BullishDb
@@ -27,7 +27,7 @@ from bullish.analysis.filter import (
27
27
  GeneralFilter,
28
28
  TechnicalAnalysisFilters,
29
29
  )
30
- from bullish.jobs.tasks import update, news, analysis, backtest_signals
30
+ from bullish.jobs.tasks import update, news, analysis
31
31
  from pydantic import BaseModel
32
32
 
33
33
  from bullish.utils.checks import (
@@ -39,7 +39,7 @@ from bullish.utils.checks import (
39
39
  CACHE_SHELVE = "user_cache"
40
40
  DB_KEY = "db_path"
41
41
 
42
- st.set_page_config(layout="wide")
42
+ st.set_page_config(page_title="Bullish", page_icon="💰", layout="wide")
43
43
  logger = logging.getLogger(__name__)
44
44
 
45
45
 
@@ -100,7 +100,7 @@ def on_table_select() -> None:
100
100
  st.session_state.ticker_news = subject
101
101
 
102
102
 
103
- @st.dialog("🔑 Provide database file to continue")
103
+ @st.dialog("🔑 Select database file to continue")
104
104
  def dialog_pick_database() -> None:
105
105
  current_working_directory = Path.cwd()
106
106
  event = st_file_browser(
@@ -216,17 +216,6 @@ def jobs() -> None:
216
216
 
217
217
  st.success("Data update job has been enqueued.")
218
218
  st.rerun()
219
- with st.expander("Update analysis"):
220
- if st.button("Update analysis"):
221
- analysis(st.session_state.database_path, job_type="Update analysis")
222
- st.success("Data update job has been enqueued.")
223
- st.rerun()
224
- with st.expander("Compute backtest signals"):
225
- if st.button("Compute backtest signals"):
226
- backtest_signals(
227
- st.session_state.database_path, job_type="backtest signals"
228
- )
229
- st.rerun()
230
219
 
231
220
 
232
221
  @st.dialog("📥 Load", width="large")
@@ -431,7 +420,7 @@ def main() -> None:
431
420
  if st.session_state.database_path is None:
432
421
  dialog_pick_database()
433
422
  bearish_db_ = bearish_db(st.session_state.database_path)
434
- charts_tab, jobs_tab, backtests = st.tabs(["Charts", "Jobs", "Backtests"])
423
+ charts_tab, jobs_tab = st.tabs(["Charts", "Jobs"])
435
424
  if "data" not in st.session_state:
436
425
  st.session_state.data = load_analysis_data(bearish_db_)
437
426
 
@@ -482,12 +471,6 @@ def main() -> None:
482
471
  use_container_width=True,
483
472
  hide_index=True,
484
473
  )
485
- with backtests:
486
- results = bearish_db_.read_many_backtest_results()
487
- backtest_results = BacktestResults(results=results)
488
- with st.container():
489
- figure = backtest_results.figure()
490
- st.plotly_chart(figure)
491
474
 
492
475
 
493
476
  if __name__ == "__main__":
@@ -13,7 +13,7 @@ from bearish.models.price.price import Price # type: ignore
13
13
  from bearish.models.price.prices import Prices # type: ignore
14
14
  from bearish.types import Sources # type: ignore
15
15
  from pydantic import ConfigDict
16
- from sqlalchemy import Engine, create_engine, insert, delete, update
16
+ from sqlalchemy import Engine, create_engine, insert, delete, update, inspect
17
17
  from sqlalchemy import text
18
18
  from sqlmodel import Session, select
19
19
 
@@ -34,6 +34,7 @@ from bullish.database.scripts.upgrade import upgrade
34
34
  from bullish.exceptions import DatabaseFileNotFoundError
35
35
  from bullish.interface.interface import BullishDbBase
36
36
  from bullish.jobs.models import JobTracker, JobTrackerStatus
37
+ from tickermood.database.scripts.upgrade import upgrade as tickermood_upgrade # type: ignore
37
38
 
38
39
  if TYPE_CHECKING:
39
40
  from bullish.analysis.backtest import BacktestResult, BacktestResultQuery
@@ -65,6 +66,12 @@ class BullishDb(BearishDb, BullishDbBase): # type: ignore
65
66
  "Skipping upgrade. "
66
67
  )
67
68
  engine = create_engine(database_url)
69
+ inspector = inspect(engine)
70
+ if "subject" not in inspector.get_table_names():
71
+ logger.info(
72
+ "Running tickermood upgrade to create the subject table in the database."
73
+ )
74
+ tickermood_upgrade(database_url=database_url, no_migration=True)
68
75
  return engine
69
76
 
70
77
  def model_post_init(self, __context: Any) -> None:
@@ -75,6 +75,7 @@ def update(
75
75
  bearish.update_financials(symbols)
76
76
  bullish_db = BullishDb(database_path=database_path)
77
77
  run_analysis(bullish_db)
78
+ compute_industry_view(bullish_db)
78
79
 
79
80
 
80
81
  @huey.task(context=True) # type: ignore
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bullishpy"
3
- version = "0.39.0"
3
+ version = "0.40.0"
4
4
  description = ""
5
5
  authors = ["aan <andoludovic.andriamamonjy@gmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes