mantis-ib 0.2.0__py3-none-any.whl
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.
- mantis_ib/__init__.py +1 -0
- mantis_ib/cli.py +55 -0
- mantis_ib/ib.py +756 -0
- mantis_ib/ib_models.py +201 -0
- mantis_ib/plugin.py +26 -0
- mantis_ib/scraper.py +1511 -0
- mantis_ib/search.py +229 -0
- mantis_ib-0.2.0.dist-info/METADATA +46 -0
- mantis_ib-0.2.0.dist-info/RECORD +11 -0
- mantis_ib-0.2.0.dist-info/WHEEL +4 -0
- mantis_ib-0.2.0.dist-info/entry_points.txt +5 -0
mantis_ib/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Interactive Brokers provider for MANTIS IMF."""
|
mantis_ib/cli.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Interactive Brokers command line entry point."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
import sys
|
|
7
|
+
from collections.abc import Sequence
|
|
8
|
+
|
|
9
|
+
from .scraper import main as scraper_main
|
|
10
|
+
from .search import create_search_indexes
|
|
11
|
+
|
|
12
|
+
_SCRAPER_COMMANDS = (
|
|
13
|
+
"scrape-instruments",
|
|
14
|
+
"scrape-reconcile",
|
|
15
|
+
"scrape-funds",
|
|
16
|
+
"scrape-exchanges",
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _build_parser() -> argparse.ArgumentParser:
|
|
21
|
+
parser = argparse.ArgumentParser(
|
|
22
|
+
prog="ib",
|
|
23
|
+
description="Search, index, and scrape Interactive Brokers instruments.",
|
|
24
|
+
)
|
|
25
|
+
parser.add_argument("command", nargs="?", choices=("index", *_SCRAPER_COMMANDS))
|
|
26
|
+
parser.add_argument("arguments", nargs=argparse.REMAINDER)
|
|
27
|
+
return parser
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _run_index(argv: Sequence[str]) -> int:
|
|
31
|
+
parser = argparse.ArgumentParser(prog="ib index")
|
|
32
|
+
parser.add_argument("--sql-uri")
|
|
33
|
+
parser.add_argument("--table-name", default="ib_instruments")
|
|
34
|
+
parser.add_argument(
|
|
35
|
+
"--missing-primary-key-table-name",
|
|
36
|
+
default="ib_instrument_templates",
|
|
37
|
+
)
|
|
38
|
+
args = parser.parse_args(argv)
|
|
39
|
+
return create_search_indexes(
|
|
40
|
+
sql_uri=args.sql_uri,
|
|
41
|
+
table_name=args.table_name,
|
|
42
|
+
missing_primary_key_table_name=args.missing_primary_key_table_name,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def main(argv: Sequence[str] | None = None) -> int:
|
|
47
|
+
command_line = list(sys.argv[1:] if argv is None else argv)
|
|
48
|
+
parser = _build_parser()
|
|
49
|
+
args = parser.parse_args(command_line)
|
|
50
|
+
if args.command is None:
|
|
51
|
+
parser.print_help()
|
|
52
|
+
return 0
|
|
53
|
+
if args.command == "index":
|
|
54
|
+
return _run_index(args.arguments)
|
|
55
|
+
return scraper_main([args.command, *args.arguments])
|