finbrain-python 0.2.6__tar.gz → 0.2.7__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 (90) hide show
  1. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/.github/workflows/ci.yml +4 -1
  2. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/.github/workflows/release.yml +22 -0
  3. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/CHANGELOG.md +7 -0
  4. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/PKG-INFO +1 -1
  5. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/pyproject.toml +19 -0
  6. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/PKG-INFO +1 -1
  7. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/scm_version.json +2 -2
  8. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/.gitattributes +0 -0
  9. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/.gitignore +0 -0
  10. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/LICENSE +0 -0
  11. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/README.md +0 -0
  12. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/RELEASE.md +0 -0
  13. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/examples/async_example.py +0 -0
  14. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/examples/transactions_plotting_example.py +0 -0
  15. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/setup.cfg +0 -0
  16. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/__init__.py +0 -0
  17. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/__init__.py +0 -0
  18. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/client.py +0 -0
  19. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/__init__.py +0 -0
  20. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/_utils.py +0 -0
  21. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/analyst_ratings.py +0 -0
  22. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/app_ratings.py +0 -0
  23. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/available.py +0 -0
  24. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/corporate_lobbying.py +0 -0
  25. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/government_contracts.py +0 -0
  26. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/house_trades.py +0 -0
  27. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/insider_transactions.py +0 -0
  28. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/linkedin_data.py +0 -0
  29. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/news.py +0 -0
  30. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/options.py +0 -0
  31. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/patent_filings.py +0 -0
  32. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/predictions.py +0 -0
  33. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/recent.py +0 -0
  34. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/reddit_mentions.py +0 -0
  35. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/screener.py +0 -0
  36. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/senate_trades.py +0 -0
  37. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/aio/endpoints/sentiments.py +0 -0
  38. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/client.py +0 -0
  39. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/__init__.py +0 -0
  40. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/_utils.py +0 -0
  41. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/analyst_ratings.py +0 -0
  42. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/app_ratings.py +0 -0
  43. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/available.py +0 -0
  44. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/corporate_lobbying.py +0 -0
  45. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/government_contracts.py +0 -0
  46. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/house_trades.py +0 -0
  47. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/insider_transactions.py +0 -0
  48. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/linkedin_data.py +0 -0
  49. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/news.py +0 -0
  50. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/options.py +0 -0
  51. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/patent_filings.py +0 -0
  52. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/predictions.py +0 -0
  53. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/recent.py +0 -0
  54. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/reddit_mentions.py +0 -0
  55. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/screener.py +0 -0
  56. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/senate_trades.py +0 -0
  57. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/endpoints/sentiments.py +0 -0
  58. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/exceptions.py +0 -0
  59. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/plotting.py +0 -0
  60. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain/py.typed +0 -0
  61. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/SOURCES.txt +0 -0
  62. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/dependency_links.txt +0 -0
  63. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/requires.txt +0 -0
  64. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/scm_file_list.json +0 -0
  65. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/src/finbrain_python.egg-info/top_level.txt +0 -0
  66. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/__init__.py +0 -0
  67. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/conftest.py +0 -0
  68. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_analyst_ratings.py +0 -0
  69. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_app_ratings.py +0 -0
  70. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_async_client.py +0 -0
  71. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_available.py +0 -0
  72. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_client.py +0 -0
  73. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_corporate_lobbying.py +0 -0
  74. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_envelope.py +0 -0
  75. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_government_contracts.py +0 -0
  76. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_house_trades.py +0 -0
  77. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_insider_transactions.py +0 -0
  78. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_integration.py +0 -0
  79. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_linkedin_data.py +0 -0
  80. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_news.py +0 -0
  81. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_options.py +0 -0
  82. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_patent_filings.py +0 -0
  83. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_plotting.py +0 -0
  84. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_predictions.py +0 -0
  85. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_recent.py +0 -0
  86. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_reddit_mentions.py +0 -0
  87. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_screener.py +0 -0
  88. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_senate_trades.py +0 -0
  89. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_sentiments.py +0 -0
  90. {finbrain_python-0.2.6 → finbrain_python-0.2.7}/tests/test_utils.py +0 -0
@@ -1,6 +1,9 @@
1
1
  name: CI
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ push:
5
+ branches: ['**'] # tags are covered by the gate in release.yml
6
+ pull_request:
4
7
 
5
8
  jobs:
6
9
  test:
@@ -5,7 +5,29 @@ on:
5
5
  tags: ['v[0-9]*'] # e.g. v0.1.0, v1.2.3
6
6
 
7
7
  jobs:
8
+ # Gate the upload on the tagged commit actually passing. The publish job
9
+ # previously ran straight off the tag push with no dependency on CI, so a
10
+ # commit with failing checks could still reach PyPI -- and PyPI versions are
11
+ # immutable, so a bad upload cannot be replaced, only superseded.
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ python: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ matrix.python }}
24
+ - run: pip install -e .[dev]
25
+ - run: ruff check .
26
+ - run: mypy
27
+ - run: pytest -q
28
+
8
29
  build:
30
+ needs: test
9
31
  runs-on: ubuntu-latest
10
32
 
11
33
  steps:
@@ -5,6 +5,13 @@ 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.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.7] - 2026-07-24
9
+
10
+ ### Changed
11
+
12
+ - **Tooling**: pinned the ruff rule set to `E4`/`E7`/`E9`/`F` in `[tool.ruff.lint]`. `ruff check .` previously ran with no ruff configuration, so it followed whatever ruff's current defaults were; 0.16.0 widened that selection and turned CI red with 455 findings in unchanged code. These four groups are ruff's long-standing defaults, so enforcement is unchanged — it just no longer moves when ruff releases
13
+ - **Tooling**: mypy no longer follows numpy's stubs. numpy ships inline stubs using PEP 695 `type` statements, which mypy only parses when both its target `python_version` and the interpreter it runs under are 3.12+, so a numpy release aborted the entire run on the lower matrix jobs. Raising `python_version` alone does not fix this — it clears the target check but not the interpreter one. `python_version` stays at `3.10`, so the 3.9 target is still exercised, and no public API surfaces numpy types
14
+
8
15
  ## [0.2.6] - 2026-07-24
9
16
 
10
17
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: finbrain-python
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Official Python client for the FinBrain API
5
5
  Author-email: Ahmet Salim Bilgin <ahmet@finbrain.tech>
6
6
  License-Expression: MIT
@@ -60,3 +60,22 @@ markers = [
60
60
  python_version = "3.10"
61
61
  files = ["src/finbrain"]
62
62
  ignore_missing_imports = true # third-party libs (pandas, plotly, …) ship no stubs here
63
+
64
+ # numpy ships inline stubs that use PEP 695 `type` statements. mypy refuses to
65
+ # parse those unless BOTH its target `python_version` and the interpreter it is
66
+ # running under are 3.12+, so a numpy release can abort the whole run ("Type
67
+ # statement is only supported in Python 3.12 and greater") on any matrix job
68
+ # below 3.12 -- with no change to this codebase. Nothing in the public API
69
+ # surfaces numpy types, so skip its stubs rather than chasing numpy's baseline.
70
+ [[tool.mypy.overrides]]
71
+ module = ["numpy.*"]
72
+ follow_imports = "skip"
73
+ follow_imports_for_stubs = true
74
+
75
+ [tool.ruff.lint]
76
+ # Pin the rule set explicitly. `ruff check .` otherwise follows whatever ruff's
77
+ # current defaults happen to be, so a new ruff release can turn CI red with no
78
+ # code change (0.16.0 widened the defaults and surfaced hundreds of findings in
79
+ # code that had been passing). These four are ruff's long-standing defaults, so
80
+ # this preserves existing behaviour rather than changing it.
81
+ select = ["E4", "E7", "E9", "F"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: finbrain-python
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Official Python client for the FinBrain API
5
5
  Author-email: Ahmet Salim Bilgin <ahmet@finbrain.tech>
6
6
  License-Expression: MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.2.6",
2
+ "tag": "0.2.7",
3
3
  "distance": 0,
4
- "node": "ga5d5629fe29800f7665621cc40bf9c415aaea135",
4
+ "node": "g417d20b49dbd91b3e9804d09e94527a560dce33e",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-07-24"
File without changes