• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

visualmoney / vm-quant-trader / 32089485979
86%

Build:
DEFAULT BRANCH: master
Ran 18 Aug 2026 01:48AM UTC
Jobs 1
Files 59
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

18 Aug 2026 01:47AM UTC coverage: 74.064% (+2.4%) from 71.63%
32089485979

push

github

web-flow
Convert the abstract base classes to Python 3 (v0.3.9) (#12)

The fifteen abstract base classes declared '__metaclass__ = ABCMeta',
which is the Python 2 spelling. Under Python 3 it is an inert class
attribute, so ABCMeta was never applied and none of the 30
@abstractmethod markers had any effect: every base class could be
instantiated directly, and a subclass that forgot part of the interface
failed later, at the call site, rather than at construction.

Turning enforcement on exposed five classes that did not satisfy the
interfaces they declared, so this also:

- implements Statistics.update() and save() on TearsheetStatistics,
  which had only get_results() and plot_results(). save() writes the
  tearsheet without opening a window, reusing the headless path from
  0.3.1; update() is a documented no-op.
- replaces Rebalance.output_rebalances(), which no subclass implemented
  and nothing called, with _generate_rebalances(), the method all four
  subclasses use to populate the 'rebalances' attribute that
  BacktestTradingSession reads.
- adds the missing 'initial_weights' parameter to
  PortfolioOptimiser.__call__() and 'equity_df' to
  Statistics.get_results(), both of which the implementations already
  required.

The 30 abstract methods carried no parameter documentation at all: 26
had no docstring and the other 4 had no Parameters section. All are now
documented from their concrete implementations. Checking those docs
against the signatures turned up three further defects, corrected here:
a 'curent_portfolio' typo in PortfolioConstructionModel, a
'rebalance_orders' entry for a parameter named 'initial_orders', and a
Parameters heading underlined with '=' that numpydoc does not parse.

Also drops the redundant 'object' base from the remaining 28 classes and
the unresolvable '#!local/bin/python3' shebang from download_data.py.

New tests/unit/test_abstract_base_classes.py pins the enforcement that
nothing previously caught the loss of. 165 tests to ... (continued)

48 of 53 new or added lines in 31 files covered. (90.57%)

1305 of 1762 relevant lines covered (74.06%)

0.74 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
12.94
12.94% qstrader/statistics/tearsheet.py
1
80.0
-0.95% qstrader/signals/signal.py
1
0.0
0.0% qstrader/signals/signals_collection.py
1
0.0
0.0% qstrader/statistics/json_statistics.py
Jobs
ID Job ID Ran Files Coverage
1 32089485979.1 18 Aug 2026 01:48AM UTC 59
74.06
GitHub Action Run
Source Files on build 32089485979
  • Tree
  • List 59
  • Changed 33
  • Source Changed 32
  • Coverage Changed 17
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32089485979
  • 5a6fc05b on github
  • Prev Build on master (#32001013698)
  • Next Build on master (#32089945535)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc