aipa-cli 0.1.44__tar.gz → 0.1.45__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.
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/CHANGELOG.md +8 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/PKG-INFO +1 -1
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/__init__.py +1 -1
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/cli.py +1 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/cli_commands.py +8 -1
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/.gitignore +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/LICENSE +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/README.md +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/pyproject.toml +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/__main__.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/actions.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/agents/__init__.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/agents/agent.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/agents/callbacks.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/agents/config.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/agents/personas.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/agents/tools.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/analyze.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/app.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/bindings.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/chart.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/chat.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/cli_setup.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/deep_research.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/predefined_watchlists.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/session.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/settings_tab.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/theme.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/ticker_data.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/user_settings.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/user_watchlist.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/utils.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/verbose.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/widgets/__init__.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/widgets/chat_input.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/widgets/safe_rich_log.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/widgets/ticker_select.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/src/aipriceaction_terminal/workflows.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/conftest.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/openrouter_responses.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_app.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_chat.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_integration.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_settings_api.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_thinking.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_tool_call_streaming.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_tools.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_utils.py +0 -0
- {aipa_cli-0.1.44 → aipa_cli-0.1.45}/tests/test_workflows.py +0 -0
|
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.1.45] - 2026-05-31
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- `--period` flag to `fundamentals ratios` for quarter-specific queries (e.g. `"2024 Q2"`)
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Updated all skill docs: added "report"/"báo cáo" fundamentals hint, added `--period` docs for `ratios`
|
|
15
|
+
|
|
8
16
|
## [0.1.44] - 2026-05-31
|
|
9
17
|
|
|
10
18
|
### Added
|
|
@@ -148,6 +148,7 @@ def run():
|
|
|
148
148
|
p_fund_ratios.add_argument("--latest", action="store_true", help="Show only latest period (quarterly or yearly)")
|
|
149
149
|
p_fund_ratios.add_argument("--yearly", action="store_true", help="Show only yearly reports")
|
|
150
150
|
p_fund_ratios.add_argument("--year", type=int, default=None, help="Show specific year")
|
|
151
|
+
p_fund_ratios.add_argument("--period", type=str, default=None, help="Specific period like '2024' or '2024 Q2'")
|
|
151
152
|
p_fund_ratios.add_argument("--no-yearly", action="store_true", help="Include quarterly reports (default, same as omitting the flag)")
|
|
152
153
|
p_fund_ratios.add_argument("--category", default=None,
|
|
153
154
|
choices=["valuation", "profitability", "leverage", "liquidity", "bank", "efficiency"],
|
|
@@ -793,7 +793,14 @@ def _fund_ratios(args) -> None:
|
|
|
793
793
|
return
|
|
794
794
|
|
|
795
795
|
entries = fr.ratios
|
|
796
|
-
if args.
|
|
796
|
+
if args.period is not None:
|
|
797
|
+
from aipriceaction.fundamental_ranking import _parse_period
|
|
798
|
+
p_year, p_q = _parse_period(args.period)
|
|
799
|
+
if p_q is not None:
|
|
800
|
+
entries = [r for r in entries if r.year_report == p_year and r.length_report == p_q]
|
|
801
|
+
else:
|
|
802
|
+
entries = [r for r in entries if r.year_report == p_year]
|
|
803
|
+
elif args.year is not None:
|
|
797
804
|
entries = [r for r in entries if r.year_report == args.year]
|
|
798
805
|
elif args.latest:
|
|
799
806
|
entries = entries[:1]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|