tradedangerous 10.17.0__py3-none-any.whl → 11.0.1__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.
Potentially problematic release.
This version of tradedangerous might be problematic. Click here for more details.
- tradedangerous/__init__.py +4 -4
- tradedangerous/cache.py +178 -142
- tradedangerous/cli.py +2 -7
- tradedangerous/commands/TEMPLATE.py +1 -2
- tradedangerous/commands/__init__.py +2 -4
- tradedangerous/commands/buildcache_cmd.py +6 -11
- tradedangerous/commands/buy_cmd.py +11 -12
- tradedangerous/commands/commandenv.py +16 -15
- tradedangerous/commands/exceptions.py +6 -4
- tradedangerous/commands/export_cmd.py +2 -4
- tradedangerous/commands/import_cmd.py +3 -5
- tradedangerous/commands/local_cmd.py +16 -25
- tradedangerous/commands/market_cmd.py +9 -8
- tradedangerous/commands/nav_cmd.py +17 -25
- tradedangerous/commands/olddata_cmd.py +9 -15
- tradedangerous/commands/parsing.py +9 -6
- tradedangerous/commands/rares_cmd.py +9 -10
- tradedangerous/commands/run_cmd.py +25 -26
- tradedangerous/commands/sell_cmd.py +9 -9
- tradedangerous/commands/shipvendor_cmd.py +4 -7
- tradedangerous/commands/station_cmd.py +8 -14
- tradedangerous/commands/trade_cmd.py +5 -10
- tradedangerous/commands/update_cmd.py +10 -7
- tradedangerous/commands/update_gui.py +1 -3
- tradedangerous/corrections.py +1 -3
- tradedangerous/csvexport.py +8 -8
- tradedangerous/edscupdate.py +4 -6
- tradedangerous/edsmupdate.py +4 -4
- tradedangerous/formatting.py +53 -40
- tradedangerous/fs.py +6 -6
- tradedangerous/gui.py +53 -62
- tradedangerous/jsonprices.py +8 -16
- tradedangerous/mapping.py +4 -3
- tradedangerous/mfd/__init__.py +2 -4
- tradedangerous/mfd/saitek/__init__.py +0 -1
- tradedangerous/mfd/saitek/directoutput.py +8 -11
- tradedangerous/mfd/saitek/x52pro.py +5 -7
- tradedangerous/misc/checkpricebounds.py +2 -3
- tradedangerous/misc/clipboard.py +2 -3
- tradedangerous/misc/coord64.py +2 -1
- tradedangerous/misc/derp-sentinel.py +1 -1
- tradedangerous/misc/diff-system-csvs.py +3 -0
- tradedangerous/misc/eddb.py +1 -3
- tradedangerous/misc/eddn.py +2 -2
- tradedangerous/misc/edsc.py +7 -14
- tradedangerous/misc/edsm.py +1 -8
- tradedangerous/misc/importeddbstats.py +2 -1
- tradedangerous/misc/prices-json-exp.py +7 -5
- tradedangerous/misc/progress.py +2 -2
- tradedangerous/plugins/__init__.py +2 -2
- tradedangerous/plugins/edapi_plug.py +13 -19
- tradedangerous/plugins/edcd_plug.py +4 -5
- tradedangerous/plugins/eddblink_plug.py +11 -15
- tradedangerous/plugins/edmc_batch_plug.py +3 -5
- tradedangerous/plugins/journal_plug.py +2 -1
- tradedangerous/plugins/netlog_plug.py +5 -5
- tradedangerous/plugins/spansh_plug.py +394 -170
- tradedangerous/prices.py +19 -20
- tradedangerous/submit-distances.py +3 -8
- tradedangerous/templates/TradeDangerous.sql +305 -306
- tradedangerous/trade.py +12 -5
- tradedangerous/tradecalc.py +30 -34
- tradedangerous/tradedb.py +140 -206
- tradedangerous/tradeenv.py +143 -69
- tradedangerous/tradegui.py +4 -2
- tradedangerous/transfers.py +23 -20
- tradedangerous/version.py +1 -1
- {tradedangerous-10.17.0.dist-info → tradedangerous-11.0.1.dist-info}/METADATA +2 -2
- tradedangerous-11.0.1.dist-info/RECORD +79 -0
- tradedangerous-10.17.0.dist-info/RECORD +0 -79
- {tradedangerous-10.17.0.dist-info → tradedangerous-11.0.1.dist-info}/LICENSE +0 -0
- {tradedangerous-10.17.0.dist-info → tradedangerous-11.0.1.dist-info}/WHEEL +0 -0
- {tradedangerous-10.17.0.dist-info → tradedangerous-11.0.1.dist-info}/entry_points.txt +0 -0
- {tradedangerous-10.17.0.dist-info → tradedangerous-11.0.1.dist-info}/top_level.txt +0 -0
tradedangerous/tradeenv.py
CHANGED
|
@@ -6,7 +6,6 @@ import os
|
|
|
6
6
|
import sys
|
|
7
7
|
import traceback
|
|
8
8
|
import typing
|
|
9
|
-
from contextlib import contextmanager
|
|
10
9
|
|
|
11
10
|
# Import some utilities from the 'rich' library that provide ways to colorize and animate
|
|
12
11
|
# the console output, along with other useful features.
|
|
@@ -17,7 +16,8 @@ from rich.traceback import install as install_rich_traces
|
|
|
17
16
|
|
|
18
17
|
|
|
19
18
|
if typing.TYPE_CHECKING:
|
|
20
|
-
|
|
19
|
+
import argparse
|
|
20
|
+
from typing import Any, Optional, Union
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
_ROOT = os.path.abspath(os.path.dirname(__file__))
|
|
@@ -34,20 +34,142 @@ if os.getenv("EXCEPTIONS"):
|
|
|
34
34
|
install_rich_traces(console=STDERR, show_locals=False, extra_lines=1)
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
class
|
|
37
|
+
class BaseColorTheme:
|
|
38
|
+
""" A way to theme the console output colors. The default is none. """
|
|
39
|
+
CLOSE: str = "" # code to stop the last color
|
|
40
|
+
dim: str = "" # code to make text dim
|
|
41
|
+
bold: str = "" # code to make text bold
|
|
42
|
+
italic: str = "" # code to make text italic
|
|
43
|
+
# blink: NEVER = "don't you dare"
|
|
44
|
+
|
|
45
|
+
# style, label
|
|
46
|
+
debug, DEBUG = dim, "#"
|
|
47
|
+
note, NOTE = bold, "NOTE"
|
|
48
|
+
warn, WARNING = "", "WARNING"
|
|
49
|
+
|
|
50
|
+
seq_first: str = "" # the first item in a sequence
|
|
51
|
+
seq_last: str = "" # the last item in a sequence
|
|
52
|
+
|
|
53
|
+
# Included as examples of how you might use this to manipulate tradecal output.
|
|
54
|
+
itm_units: str = "" # the amount of something
|
|
55
|
+
itm_name: str = "" # name of that unit
|
|
56
|
+
itm_price: str = "" # how much does it cost?
|
|
57
|
+
|
|
58
|
+
def render(self, renderable: Any, style: str) -> str: # pragma: no cover, pylint: disable=unused-argument
|
|
59
|
+
""" Renders the given printable item with the given style; BaseColorTheme simply uses a string transformation. """
|
|
60
|
+
if isinstance(renderable, str):
|
|
61
|
+
return renderable # avoid an allocation
|
|
62
|
+
return str(renderable)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class BasicRichColorTheme(BaseColorTheme):
|
|
66
|
+
""" Provide's 'rich' styling without our own colorization. """
|
|
67
|
+
CLOSE = "[/]"
|
|
68
|
+
bold = "[bold]"
|
|
69
|
+
dim = "[dim]"
|
|
70
|
+
italic = "[italic]"
|
|
71
|
+
|
|
72
|
+
# style, label
|
|
73
|
+
debug, DEBUG = dim, "#"
|
|
74
|
+
note, NOTE = bold, "NOTE"
|
|
75
|
+
warn, WARNING = "[orange3]", "WARNING"
|
|
76
|
+
|
|
77
|
+
def render(self, renderable: Any, style: str) -> str: # pragma: no cover
|
|
78
|
+
style_attr = getattr(self, style, "")
|
|
79
|
+
if not style_attr:
|
|
80
|
+
return renderable if isinstance(renderable, str) else str(renderable)
|
|
81
|
+
return f"{style_attr}{renderable}{self.CLOSE}"
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class RichColorTheme(BasicRichColorTheme):
|
|
85
|
+
""" Demonstrates how you might augment the rich theme with colors to be used fin e.g tradecal. """
|
|
86
|
+
DEBUG = ":spider_web:"
|
|
87
|
+
NOTE = ":information_source:"
|
|
88
|
+
WARNING = ":warning:"
|
|
89
|
+
|
|
90
|
+
# e.g. First station
|
|
91
|
+
seq_first = "[cyan]"
|
|
92
|
+
# e.g. Last station
|
|
93
|
+
seq_last = "[blue]"
|
|
94
|
+
|
|
95
|
+
# Included as examples of how you might use this to manipulate tradecal output.
|
|
96
|
+
itm_units = "[yellow3]"
|
|
97
|
+
itm_name = "[yellow]"
|
|
98
|
+
itm_price = "[bold]"
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class BaseConsoleIOMixin:
|
|
102
|
+
""" Base mixin for running output through rich. """
|
|
103
|
+
console: Console
|
|
104
|
+
stderr: Console
|
|
105
|
+
theme: BaseColorTheme
|
|
106
|
+
quiet: bool
|
|
107
|
+
|
|
108
|
+
def uprint(self, *args, stderr: bool = False, style: str = None, **kwargs) -> None:
|
|
109
|
+
"""
|
|
110
|
+
unicode-safe print via console or stderr, with 'rich' markup handling.
|
|
111
|
+
"""
|
|
112
|
+
console = self.stderr if stderr else self.console
|
|
113
|
+
console.print(*args, style=style, **kwargs)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class NonUtf8ConsoleIOMixin(BaseConsoleIOMixin):
|
|
117
|
+
""" Mixing for running output through rich with UTF8-translation smoothing. """
|
|
118
|
+
def uprint(self, *args, stderr: bool = False, style: str = None, **kwargs) -> None:
|
|
119
|
+
""" unicode-handling print: when the stdout stream is not utf-8 supporting,
|
|
120
|
+
we do a little extra io work to ensure users don't get confusing unicode
|
|
121
|
+
errors. When the output stream *is* utf-8.
|
|
122
|
+
|
|
123
|
+
:param stderr: report to stderr instead of stdout
|
|
124
|
+
:param style: specify a 'rich' console style to use when the stream supports it
|
|
125
|
+
"""
|
|
126
|
+
console = self.stderr if stderr else self.console
|
|
127
|
+
try:
|
|
128
|
+
# Attempt to print; the 'file' argument isn't supported by rich, so we'll
|
|
129
|
+
# need to fall-back on old print when someone specifies it.
|
|
130
|
+
console.print(*args, style=style, **kwargs)
|
|
131
|
+
|
|
132
|
+
except UnicodeEncodeError as e:
|
|
133
|
+
# Characters in the output couldn't be translated to unicode.
|
|
134
|
+
if not self.quiet:
|
|
135
|
+
self.stderr.print(
|
|
136
|
+
f"{self.theme.WARN}{self.theme.bold}CAUTION: Your terminal/console couldn't handle some "
|
|
137
|
+
"text I tried to print."
|
|
138
|
+
)
|
|
139
|
+
if 'EXCEPTIONS' in os.environ:
|
|
140
|
+
traceback.print_exc()
|
|
141
|
+
else:
|
|
142
|
+
self.stderr.print(e)
|
|
143
|
+
|
|
144
|
+
# Try to translate each ary into a viable string using utf error-replacement.
|
|
145
|
+
components = [
|
|
146
|
+
str(arg)
|
|
147
|
+
.encode(TradeEnv.encoding, errors="replace")
|
|
148
|
+
.decode(TradeEnv.encoding)
|
|
149
|
+
for arg in args
|
|
150
|
+
]
|
|
151
|
+
console.print(*components, style=style, **kwargs)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
# If the console doesn't support UTF8, use the more-complicated implementation.
|
|
155
|
+
if str(sys.stdout.encoding).upper() != 'UTF-8':
|
|
156
|
+
Utf8SafeConsoleIOMixin = NonUtf8ConsoleIOMixin
|
|
157
|
+
else:
|
|
158
|
+
Utf8SafeConsoleIOMixin = BaseConsoleIOMixin
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class TradeEnv(Utf8SafeConsoleIOMixin):
|
|
38
162
|
"""
|
|
39
|
-
|
|
163
|
+
TradeDangerous provides a container for runtime configuration (cli flags, etc) and io operations to
|
|
164
|
+
enable normalization of things without having to pass huge sets of arguments. This includes things
|
|
165
|
+
like logging and reporting functionality.
|
|
40
166
|
|
|
41
167
|
To print debug lines, use DEBUG<N>, e.g. DEBUG0, which takes a format() string and parameters, e.g.
|
|
42
|
-
|
|
43
168
|
DEBUG1("hello, {world}{}", "!", world="world")
|
|
44
169
|
|
|
45
170
|
is equivalent to:
|
|
46
|
-
|
|
47
171
|
if tdenv.debug >= 1:
|
|
48
|
-
print("#hello, {world}{}".format(
|
|
49
|
-
"!", world="world"
|
|
50
|
-
))
|
|
172
|
+
print("#hello, {world}{}".format("!", world="world"))
|
|
51
173
|
|
|
52
174
|
Use "NOTE" to print remarks which can be disabled with -q.
|
|
53
175
|
"""
|
|
@@ -57,6 +179,7 @@ class TradeEnv:
|
|
|
57
179
|
'detail': 0,
|
|
58
180
|
'quiet': 0,
|
|
59
181
|
'color': False,
|
|
182
|
+
'theme': BaseColorTheme(),
|
|
60
183
|
'dataDir': os.environ.get('TD_DATA') or os.path.join(os.getcwd(), 'data'),
|
|
61
184
|
'csvDir': os.environ.get('TD_CSV') or os.environ.get('TD_DATA') or os.path.join(os.getcwd(), 'data'),
|
|
62
185
|
'tmpDir': os.environ.get('TD_TMP') or os.path.join(os.getcwd(), 'tmp'),
|
|
@@ -67,84 +190,37 @@ class TradeEnv:
|
|
|
67
190
|
}
|
|
68
191
|
|
|
69
192
|
encoding = sys.stdout.encoding
|
|
70
|
-
|
|
71
|
-
if str(sys.stdout.encoding).upper() != 'UTF-8':
|
|
72
|
-
def uprint(self, *args, stderr: bool = False, style: str = None, **kwargs) -> None:
|
|
73
|
-
""" unicode-handling print: when the stdout stream is not utf-8 supporting,
|
|
74
|
-
we do a little extra io work to ensure users don't get confusing unicode
|
|
75
|
-
errors. When the output stream *is* utf-8, tradeenv replaces this method
|
|
76
|
-
with a less expensive method.
|
|
77
|
-
:param stderr: report to stderr instead of stdout
|
|
78
|
-
:param style: specify a 'rich' console style to use when the stream supports it
|
|
79
|
-
"""
|
|
80
|
-
console = self.stderr if stderr else self.console
|
|
81
|
-
try:
|
|
82
|
-
# Attempt to print; the 'file' argument isn't spuported by rich, so we'll
|
|
83
|
-
# need to fall-back on old print when someone specifies it.
|
|
84
|
-
console.print(*args, style=style, **kwargs)
|
|
85
|
-
|
|
86
|
-
except UnicodeEncodeError as e:
|
|
87
|
-
# Characters in the output couldn't be translated to unicode.
|
|
88
|
-
if not self.quiet:
|
|
89
|
-
self.stderr.print(
|
|
90
|
-
"[orange3][bold]CAUTION: Your terminal/console couldn't handle some "
|
|
91
|
-
"text I tried to print."
|
|
92
|
-
)
|
|
93
|
-
if 'EXCEPTIONS' in os.environ:
|
|
94
|
-
traceback.print_exc()
|
|
95
|
-
else:
|
|
96
|
-
self.stderr.print(e)
|
|
97
|
-
|
|
98
|
-
# Try to translate each ary into a viable stirng using utf error-replacement.
|
|
99
|
-
strs = [
|
|
100
|
-
str(arg)
|
|
101
|
-
.encode(TradeEnv.encoding, errors="replace")
|
|
102
|
-
.decode(TradeEnv.encoding)
|
|
103
|
-
for arg in args
|
|
104
|
-
]
|
|
105
|
-
console.print(*strs, style=style, **kwargs)
|
|
106
193
|
|
|
107
|
-
|
|
108
|
-
def uprint(self, *args, stderr: bool = False, style: str = None, **kwargs) -> None:
|
|
109
|
-
""" unicode-handling print: when the stdout stream is not utf-8 supporting,
|
|
110
|
-
this method is replaced with one that tries to provide users better support
|
|
111
|
-
when a unicode error appears in the wild.
|
|
112
|
-
|
|
113
|
-
:param file: [optional] stream to write to (disables styles/rich support)
|
|
114
|
-
:param style: [optional] specify a rich style for the output text
|
|
115
|
-
"""
|
|
116
|
-
console = self.stderr if stderr else self.console
|
|
117
|
-
console.print(*args, style=style, **kwargs)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
def __init__(self, properties: Optional[Union[argparse.Namespace, Dict]] = None, **kwargs) -> None:
|
|
194
|
+
def __init__(self, properties: Optional[Union[argparse.Namespace, dict]] = None, **kwargs) -> None:
|
|
121
195
|
# Inject the defaults into ourselves in a dict-like way
|
|
122
196
|
self.__dict__.update(self.defaults)
|
|
123
|
-
|
|
197
|
+
|
|
124
198
|
# If properties is a namespace, extract the dictionary; otherwise use it as-is
|
|
125
199
|
if properties and hasattr(properties, '__dict__'): # which arparse.Namespace has
|
|
126
200
|
properties = properties.__dict__
|
|
127
201
|
# Merge into our dictionary
|
|
128
202
|
self.__dict__.update(properties or {})
|
|
129
|
-
|
|
203
|
+
|
|
130
204
|
# Merge the kwargs dictionary
|
|
131
205
|
self.__dict__.update(kwargs or {})
|
|
132
|
-
|
|
206
|
+
|
|
133
207
|
# When debugging has been enabled on startup, enable slightly more
|
|
134
208
|
# verbose rich backtraces.
|
|
135
209
|
if self.__dict__['debug']:
|
|
136
210
|
install_rich_traces(console=STDERR, show_locals=True, extra_lines=2)
|
|
137
|
-
|
|
211
|
+
|
|
212
|
+
self.theme = RichColorTheme() if self.__dict__['color'] else BasicRichColorTheme()
|
|
213
|
+
|
|
138
214
|
def __getattr__(self, key: str) -> Any:
|
|
139
215
|
""" Return the default for attributes we don't have """
|
|
140
|
-
|
|
216
|
+
|
|
141
217
|
# The first time the DEBUG attribute is referenced, register a method for it.
|
|
142
218
|
if key.startswith("DEBUG"):
|
|
143
219
|
|
|
144
220
|
# Self-assembling DEBUGN functions
|
|
145
221
|
def __DEBUG_ENABLED(outText, *args, **kwargs):
|
|
146
222
|
# Give debug output a less contrasted color.
|
|
147
|
-
self.console.print(f"
|
|
223
|
+
self.console.print(f"{self.theme.debug}{self.theme.DEBUG}{outText.format(*args, **kwargs)}")
|
|
148
224
|
|
|
149
225
|
def __DEBUG_DISABLED(*args, **kwargs):
|
|
150
226
|
pass
|
|
@@ -163,8 +239,7 @@ class TradeEnv:
|
|
|
163
239
|
|
|
164
240
|
def __NOTE_ENABLED(outText, *args, stderr: bool = False, **kwargs):
|
|
165
241
|
self.uprint(
|
|
166
|
-
"NOTE:
|
|
167
|
-
style="bold",
|
|
242
|
+
f"{self.theme.note}{self.theme.NOTE}: {str(outText).format(*args, **kwargs)}",
|
|
168
243
|
stderr=stderr,
|
|
169
244
|
)
|
|
170
245
|
|
|
@@ -183,8 +258,7 @@ class TradeEnv:
|
|
|
183
258
|
|
|
184
259
|
def _WARN_ENABLED(outText, *args, stderr: bool = False, **kwargs):
|
|
185
260
|
self.uprint(
|
|
186
|
-
"WARNING:
|
|
187
|
-
style="orange3",
|
|
261
|
+
f"{self.theme.warn}{self.theme.WARNING}: {str(outText).format(*args, **kwargs)}",
|
|
188
262
|
stderr=stderr,
|
|
189
263
|
)
|
|
190
264
|
|
tradedangerous/tradegui.py
CHANGED
tradedangerous/transfers.py
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
from __future__ import absolute_import, with_statement, print_function, division, unicode_literals
|
|
2
|
-
from os import getcwd, path
|
|
3
1
|
from collections import deque
|
|
4
2
|
from pathlib import Path
|
|
5
3
|
from .tradeexcept import TradeException
|
|
6
4
|
|
|
7
5
|
import csv
|
|
8
6
|
import json
|
|
9
|
-
import math
|
|
10
7
|
from .misc import progress as pbar
|
|
8
|
+
import platform # noqa: F401
|
|
11
9
|
from . import fs
|
|
12
|
-
import platform
|
|
13
10
|
import time
|
|
14
11
|
import subprocess
|
|
15
12
|
import sys
|
|
@@ -22,7 +19,6 @@ except ImportError:
|
|
|
22
19
|
|
|
23
20
|
def import_requests():
|
|
24
21
|
global __requests
|
|
25
|
-
global platform
|
|
26
22
|
if __requests:
|
|
27
23
|
return __requests
|
|
28
24
|
|
|
@@ -58,9 +54,8 @@ def import_requests():
|
|
|
58
54
|
raise TradeException("Missing package: 'requests'")
|
|
59
55
|
|
|
60
56
|
try:
|
|
61
|
-
import pip
|
|
57
|
+
import pip # noqa: F401 # pylint: disable=unused-import
|
|
62
58
|
except ImportError as e:
|
|
63
|
-
import platform
|
|
64
59
|
raise TradeException(
|
|
65
60
|
"Python 3.4.2 includes a package manager called 'pip', "
|
|
66
61
|
"except it doesn't appear to be installed on your system:\n"
|
|
@@ -70,16 +65,15 @@ def import_requests():
|
|
|
70
65
|
# Let's use "The most reliable approach, and the one that is fully supported."
|
|
71
66
|
# Especially since the old way produces an error for me on Python 3.6:
|
|
72
67
|
# "AttributeError: 'module' object has no attribute 'main'"
|
|
73
|
-
#pip.main(["install", "--upgrade", "requests"])
|
|
68
|
+
# pip.main(["install", "--upgrade", "requests"])
|
|
74
69
|
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'requests'])
|
|
75
70
|
|
|
76
71
|
try:
|
|
77
|
-
import requests
|
|
72
|
+
import requests # pylint: disable=redefined-outer-name
|
|
78
73
|
__requests = requests
|
|
79
74
|
except ImportError as e:
|
|
80
75
|
raise TradeException(
|
|
81
|
-
"The requests module did not install correctly.{}"
|
|
82
|
-
.format(extra)
|
|
76
|
+
f"The requests module did not install correctly ({e}).{extra}"
|
|
83
77
|
) from None
|
|
84
78
|
|
|
85
79
|
return __requests
|
|
@@ -109,6 +103,7 @@ def download(
|
|
|
109
103
|
backup=False,
|
|
110
104
|
shebang=None,
|
|
111
105
|
chunkSize=4096,
|
|
106
|
+
timeout=90,
|
|
112
107
|
):
|
|
113
108
|
"""
|
|
114
109
|
Fetch data from a URL and save the output
|
|
@@ -130,9 +125,9 @@ def download(
|
|
|
130
125
|
function to call on the first line
|
|
131
126
|
"""
|
|
132
127
|
|
|
133
|
-
requests = import_requests()
|
|
128
|
+
requests = import_requests() # pylint: disable=redefined-outer-name
|
|
134
129
|
tdenv.NOTE("Requesting {}".format(url))
|
|
135
|
-
req = requests.get(url, headers=headers or None, stream=True)
|
|
130
|
+
req = requests.get(url, headers=headers or None, stream=True, timeout=timeout)
|
|
136
131
|
req.raise_for_status()
|
|
137
132
|
|
|
138
133
|
encoding = req.headers.get('content-encoding', 'uncompress')
|
|
@@ -148,6 +143,14 @@ def download(
|
|
|
148
143
|
raise TradeException(
|
|
149
144
|
"Remote server gave an empty response. Please try again later."
|
|
150
145
|
)
|
|
146
|
+
|
|
147
|
+
# if the file is being compressed by the server, the headers tell us the
|
|
148
|
+
# length of the compressed data, but in our loop below we will be receiving
|
|
149
|
+
# the uncompressed data, which should be larger, which will cause our
|
|
150
|
+
# download indicators to sit at 100% for a really long time if the file is
|
|
151
|
+
# heavily compressed and large (e.g spansh 1.5gb compressed vs 9GB uncompressed)
|
|
152
|
+
if encoding == "gzip" and length:
|
|
153
|
+
length *= 4
|
|
151
154
|
|
|
152
155
|
if tdenv.detail > 1:
|
|
153
156
|
if length:
|
|
@@ -228,15 +231,15 @@ def download(
|
|
|
228
231
|
req.close()
|
|
229
232
|
return req.headers
|
|
230
233
|
|
|
231
|
-
def get_json_data(url):
|
|
234
|
+
def get_json_data(url, *, timeout: int = 90):
|
|
232
235
|
"""
|
|
233
236
|
Fetch JSON data from a URL and return the resulting dictionary.
|
|
234
237
|
|
|
235
238
|
Displays a progress bar as it downloads.
|
|
236
239
|
"""
|
|
237
240
|
|
|
238
|
-
requests = import_requests()
|
|
239
|
-
req = requests.get(url, stream=True)
|
|
241
|
+
requests = import_requests() # pylint: disable=redefined-outer-name
|
|
242
|
+
req = requests.get(url, stream=True, timeout=timeout)
|
|
240
243
|
|
|
241
244
|
totalLength = req.headers.get('content-length')
|
|
242
245
|
if totalLength is None:
|
|
@@ -261,7 +264,7 @@ def get_json_data(url):
|
|
|
261
264
|
|
|
262
265
|
return json.loads(jsData.decode())
|
|
263
266
|
|
|
264
|
-
class CSVStream
|
|
267
|
+
class CSVStream:
|
|
265
268
|
"""
|
|
266
269
|
Provides an iterator that fetches CSV data from a given URL
|
|
267
270
|
and presents it as an iterable of (columns, values).
|
|
@@ -272,12 +275,12 @@ class CSVStream(object):
|
|
|
272
275
|
print("{} = {}".format(cols[0], vals[0]))
|
|
273
276
|
"""
|
|
274
277
|
|
|
275
|
-
def __init__(self, url, tdenv=None):
|
|
278
|
+
def __init__(self, url, tdenv=None, *, timeout: int = 90):
|
|
276
279
|
self.url = url
|
|
277
280
|
self.tdenv = tdenv
|
|
278
281
|
if not url.startswith("file:///"):
|
|
279
|
-
requests = import_requests()
|
|
280
|
-
self.req = requests.get(self.url, stream=True)
|
|
282
|
+
requests = import_requests() # pylint: disable=redefined-outer-name
|
|
283
|
+
self.req = requests.get(self.url, stream=True, timeout=timeout)
|
|
281
284
|
self.lines = self.req.iter_lines()
|
|
282
285
|
else:
|
|
283
286
|
self.lines = open(url[8:], "rUb")
|
tradedangerous/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tradedangerous
|
|
3
|
-
Version:
|
|
3
|
+
Version: 11.0.1
|
|
4
4
|
Summary: Trade-Dangerous is a set of powerful trading tools for Elite Dangerous, organized around one of the most powerful trade run optimizers available.
|
|
5
5
|
Home-page: https://github.com/eyeonus/Trade-Dangerous
|
|
6
6
|
Author: eyeonus
|
|
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
|
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
Requires-Dist: requests
|
|
23
23
|
Requires-Dist: appJar
|
|
24
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: ijson
|
|
25
25
|
Requires-Dist: rich
|
|
26
26
|
|
|
27
27
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
tradedangerous/__init__.py,sha256=bwsbE_GyCNsuyGDKnfXAg0RD-ewsWHliySJ5QfCK7h8,1166
|
|
2
|
+
tradedangerous/cache.py,sha256=VH7_Bs-vz1H9KEbQah_4w3zqY3nG7HOegHZGzlKip80,36028
|
|
3
|
+
tradedangerous/cli.py,sha256=4B6FFYyH8M6Z4D8CJHsrkABHsb_O7pmTrJ7M_lB2Za8,4531
|
|
4
|
+
tradedangerous/corrections.py,sha256=_WLgo1IBWoskrrPFeshRwCOeJ2BeJb_x4tDQ0JdAo-s,1340
|
|
5
|
+
tradedangerous/csvexport.py,sha256=0XrQKLdt1STinZsBlBN3NHGh0BT81HKVe_oi9lFlLno,8637
|
|
6
|
+
tradedangerous/edscupdate.py,sha256=G8N-j61MZbCgY07WIVK23CCw6eMPE3WkraXHeARt9QE,17297
|
|
7
|
+
tradedangerous/edsmupdate.py,sha256=jpDUxUkDKxlG_gS3qWy5fg9p3mBPC-akU2pHSlfTPkI,14915
|
|
8
|
+
tradedangerous/formatting.py,sha256=0NbDTQ5fV8x3lhmPTtpnAwQog79dCjPCbDNU5b-Vn6U,6896
|
|
9
|
+
tradedangerous/fs.py,sha256=_5OJHIRy_M-WFHEZO4g2EIgqDxdrz4s8tcdDmgG7NME,2494
|
|
10
|
+
tradedangerous/gui.py,sha256=DFsF5zATr-lyJShL6t5kPKvcLLJYkICurzBz0WBa-oQ,43676
|
|
11
|
+
tradedangerous/jsonprices.py,sha256=GAaNbfEs1LX_F5f69MiEhHIEwoGZtubGC8EQ9MM4B9A,6878
|
|
12
|
+
tradedangerous/mapping.py,sha256=eGBQeYPD04Kq_ygZCDRafKMGz9EnxSgXUzQU-u78_2A,4049
|
|
13
|
+
tradedangerous/prices.py,sha256=JqiDVrtvvPd5pqE3HdwOHOuFgdAbOR-pt0GLD3ZIXM8,7425
|
|
14
|
+
tradedangerous/submit-distances.py,sha256=vBKV2KXz3mudDsuUieIwWjCqo21XdXP9Clb-VufXyUA,12324
|
|
15
|
+
tradedangerous/tools.py,sha256=pp-4WtA12SVaaQHFJFOMTF7EDFRCU2mQeOhC4xoXmEk,1331
|
|
16
|
+
tradedangerous/trade.py,sha256=nGiTFj9ZrqeN9Xad3z8e4MpA2fNqYAcYMrZnwpnuus4,1938
|
|
17
|
+
tradedangerous/tradecalc.py,sha256=A7peEMiaCjlwFvReSq3E7_Ar0shUoFedQi83ZmOc7uY,42075
|
|
18
|
+
tradedangerous/tradedb.py,sha256=3nGB55dYs4igP3U3J4Ye1-M6Kt9A4xPAMmnX7JEDW7w,72220
|
|
19
|
+
tradedangerous/tradeenv.py,sha256=SDzRC6ERYZzzb_I6uexmFpFJJrnbzXa-1ogYt_GH26w,10576
|
|
20
|
+
tradedangerous/tradeexcept.py,sha256=aZ-Y31MbkjF7lmAzBAbaMsPPE7FEEfuf4gaX2GvriDk,368
|
|
21
|
+
tradedangerous/tradegui.py,sha256=q2HdIdoyeLUpeF2X0hVIGn7sU6T4zOzq1HN0zGvZdyE,788
|
|
22
|
+
tradedangerous/transfers.py,sha256=NWdrE3gfBlvqnoSJEuWHqYbWFHUHNDd5D0YYMQkpaMY,10513
|
|
23
|
+
tradedangerous/utils.py,sha256=PUPvAEqUyxYGqqQa0b_yfLAvq8YVUxK6HfdS-CxM-Lo,5186
|
|
24
|
+
tradedangerous/version.py,sha256=aDLr8TVjMzFdVqr7IbN81E05QzcAMQCuS_iYevVADM8,646
|
|
25
|
+
tradedangerous/commands/TEMPLATE.py,sha256=MOE69xsZPHPIMBQ-LXicfsOlCZdy-2gPX_nlnwYYil8,2026
|
|
26
|
+
tradedangerous/commands/__init__.py,sha256=3gz2cnXNZNkV1gtZh0dOnCRxBkQHbeIyysRe3bM2WEE,9516
|
|
27
|
+
tradedangerous/commands/buildcache_cmd.py,sha256=_8vKu9e3tQy0HEPrnG8Ts0OoQ_kF6gZPQ9EOfTUd73w,2179
|
|
28
|
+
tradedangerous/commands/buy_cmd.py,sha256=jfN1KwLVWAssx4MABgPD32BzP7FhhwIr2o62u6kpLc8,13597
|
|
29
|
+
tradedangerous/commands/commandenv.py,sha256=lzPbxhrgx4PJL_x8pRdYu22rqtL4U6kNQ5ExXTPoAao,9462
|
|
30
|
+
tradedangerous/commands/exceptions.py,sha256=xJib2n0YRSgrs8WhZX5IeVHM-XakS3YwfjlF8_cNx4E,3476
|
|
31
|
+
tradedangerous/commands/export_cmd.py,sha256=VfxwrNU_TzrSw71KrmtmXKYCBkpDGr5KRLGPXOBewnI,4405
|
|
32
|
+
tradedangerous/commands/import_cmd.py,sha256=PKMrO1DhOGkqAn_q9vZBxhogpFL5MHp2JyYb4qiBdq0,5633
|
|
33
|
+
tradedangerous/commands/local_cmd.py,sha256=tf7YMGX-vaVGNO2lvQF9EvQEN3Wj7DE9-NTSVrtaZx0,8392
|
|
34
|
+
tradedangerous/commands/market_cmd.py,sha256=Ig16zDuksywiiF3Exps6UuM-ZhqgbXqkW6Lu2s9xQf0,5411
|
|
35
|
+
tradedangerous/commands/nav_cmd.py,sha256=v245L1MxiUliITUgvWeeB4cL4UdkNO8n0CiP6ztrV54,8460
|
|
36
|
+
tradedangerous/commands/olddata_cmd.py,sha256=6rpPRRs4kLhV9c0sogmctVAjta7v0L0Deu999spXY2s,7888
|
|
37
|
+
tradedangerous/commands/parsing.py,sha256=vyfRByRVLENrtD6IQitdPlddb-f_tgde9arYkimJAEg,6717
|
|
38
|
+
tradedangerous/commands/rares_cmd.py,sha256=L_QoW2zIZTU9Jpavt_K2fZyu8T153nUSuVqIiz4uksQ,9207
|
|
39
|
+
tradedangerous/commands/run_cmd.py,sha256=HtvxKfD2ef_fUCDdUzBv9yRwd2gBOqIq4hzUAOLgcyU,47650
|
|
40
|
+
tradedangerous/commands/sell_cmd.py,sha256=RI8T1DWaBuQkYSy2Pjoo0Kxy5n9UgRTqtlSBE0Vg1SI,7943
|
|
41
|
+
tradedangerous/commands/shipvendor_cmd.py,sha256=PQXMmPin3HsAAdeBesnyDVuqAh-GATWwp2C2gnHdS9I,6918
|
|
42
|
+
tradedangerous/commands/station_cmd.py,sha256=pN0IuisOp_ngWE8lrUKMkLpfOO7p3DxidgTGiKOrWCE,16219
|
|
43
|
+
tradedangerous/commands/trade_cmd.py,sha256=3oTAsnV4ka18I7aQkgwtdQNIzS1Vt3LdisXMbrHw1WY,3031
|
|
44
|
+
tradedangerous/commands/update_cmd.py,sha256=2A3i8J1XGe5TOfpvKyTXon2cVzhUosiaWuekEpbAh4U,14551
|
|
45
|
+
tradedangerous/commands/update_gui.py,sha256=IhHXSQvLdol-i4LibOGgdvVUG9V2oS2g7Zqc60qf0YI,23318
|
|
46
|
+
tradedangerous/mfd/__init__.py,sha256=g8pT9Ev_le_yOeAF7sr9fUuEi8VW3u9n_qq-xLga1xw,2958
|
|
47
|
+
tradedangerous/mfd/saitek/__init__.py,sha256=CGgkAik87Kb5uc43G0bBFueD47bb_BydDM8qb7YQLyA,62
|
|
48
|
+
tradedangerous/mfd/saitek/directoutput.py,sha256=ReBzax7ttoffzH8DLXx0AS2RFLLQWOQUw1ESQUjOMGk,24840
|
|
49
|
+
tradedangerous/mfd/saitek/x52pro.py,sha256=EAX-3AeWik5uQ4kmlW_TNdIDVNxVwQ2yWe2Lel9JuXo,5816
|
|
50
|
+
tradedangerous/misc/checkpricebounds.py,sha256=BGdLuL-PTnXMPqMymqqLAQ7Cmik81-DlRtq4ckecHIw,8405
|
|
51
|
+
tradedangerous/misc/clipboard.py,sha256=ojlEwtufefI7GInAxLUd_pNIi1j03VQpstoPB6Om8Xg,1664
|
|
52
|
+
tradedangerous/misc/coord64.py,sha256=-en4M4hHMt0ZW4MahvMStRU4dAjpTfAyPx8l4oL8zY0,2322
|
|
53
|
+
tradedangerous/misc/derp-sentinel.py,sha256=22zyl26Q8XHvq8IJZDinJ3oKudUnByDoQ3WiWuPlCwU,779
|
|
54
|
+
tradedangerous/misc/diff-system-csvs.py,sha256=67K5BEDFYWCSJY17EjkUzNaLX8sOlP9aQ5US6f8WjPw,4931
|
|
55
|
+
tradedangerous/misc/eddb.py,sha256=mHHMIyyuJRHBtBgSou-z7rfNXkajWvvWghRPk3D5jE4,1812
|
|
56
|
+
tradedangerous/misc/eddn.py,sha256=RNoLCxFfEgktMPZB6k2BUxd3aM5Z6LqYi4WhI4jrRdQ,12149
|
|
57
|
+
tradedangerous/misc/edsc.py,sha256=LesWB0M4mMbjsH7la3H5zD-fX-0BL_nIHbLfAjWvy4A,14710
|
|
58
|
+
tradedangerous/misc/edsm.py,sha256=Trp1dNCHgsYppS3r49UZIIDgzantT7WfY3I-eXYj8uA,3253
|
|
59
|
+
tradedangerous/misc/importeddbstats.py,sha256=iLAcrFzdwiMm_MnUuaHcT_xGgZF8pfEEd1qljhhWJTU,1787
|
|
60
|
+
tradedangerous/misc/prices-json-exp.py,sha256=Fpm62ugP35ZBqnRs6ekYfS3GoDFYmvLD3b3SFJfaMOI,4944
|
|
61
|
+
tradedangerous/misc/progress.py,sha256=NKvKP1OSCTpItc1CNxDuEH2A1oGJ6aWSyCdPSAjsG9E,2120
|
|
62
|
+
tradedangerous/plugins/__init__.py,sha256=TL-OIptlqNENKhoFqkFeBJn_vSw8L0pVaDJgjhaTj7A,7860
|
|
63
|
+
tradedangerous/plugins/edapi_plug.py,sha256=5nqBYmjUceAt-KTfiBn7IEl443R1SsGLDmfVXgbcyms,42262
|
|
64
|
+
tradedangerous/plugins/edcd_plug.py,sha256=JuDtuEM_mN9Sz2H09-qYizM-9N3cuNjgvQy7Y-wHwKw,14412
|
|
65
|
+
tradedangerous/plugins/eddblink_plug.py,sha256=1SXmNdGLy-EP5qOrl4WNjcOA_tt-S2fVuGunQWKR3k4,21965
|
|
66
|
+
tradedangerous/plugins/edmc_batch_plug.py,sha256=rrP_lFFxWsba8DPEo0WF2EdCiMoRC7tCT8z62MIvtIo,4173
|
|
67
|
+
tradedangerous/plugins/journal_plug.py,sha256=5HMyoxQ7z42qj7NiL8rDxSyTN9gKikoQjyWzJLD-SYQ,23746
|
|
68
|
+
tradedangerous/plugins/netlog_plug.py,sha256=yUl47l9xt3kGj9oSiY_FZaDGdnQj63oa9MBtSeIy1Zo,13469
|
|
69
|
+
tradedangerous/plugins/spansh_plug.py,sha256=72_7aWQAxtb_xUEOaD_3oqB2DxEyhkCR1BY1EXn2-iw,26734
|
|
70
|
+
tradedangerous/templates/Added.csv,sha256=8o54civQCcS9y7_DBo0GX196XWRbbREQqKDYTKibsgQ,649
|
|
71
|
+
tradedangerous/templates/Category.csv,sha256=8xwUDcBZE25T6x6dZGlRUMTCqeDLt3a9LXU5h6hRHV8,250
|
|
72
|
+
tradedangerous/templates/RareItem.csv,sha256=F1RhRnTD82PiwrVUO-ai2ErGH2PTqNnQaDw5mcgljXs,10483
|
|
73
|
+
tradedangerous/templates/TradeDangerous.sql,sha256=VlQK7QGtEi2brGtWaIZDvKmbJ_vLocD4CJ8h_6kKptU,7808
|
|
74
|
+
tradedangerous-11.0.1.dist-info/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
|
|
75
|
+
tradedangerous-11.0.1.dist-info/METADATA,sha256=-QKii7zlT7pIPfbrIGGJYYuDbInfyI7jQsgyczIWPBM,4435
|
|
76
|
+
tradedangerous-11.0.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
77
|
+
tradedangerous-11.0.1.dist-info/entry_points.txt,sha256=pSwa-q0ob443uiKux7xFKYQl8uen66iDTnjdrQhNLx8,92
|
|
78
|
+
tradedangerous-11.0.1.dist-info/top_level.txt,sha256=bF29i-oEltmNICgElEKxNsg83oahJvxg3a7YrxZi9Rk,15
|
|
79
|
+
tradedangerous-11.0.1.dist-info/RECORD,,
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
tradedangerous/__init__.py,sha256=5ZeypoZaM8hlh6c-yTkD8x5hZYP8q3Q8a3bVeicHr90,1122
|
|
2
|
-
tradedangerous/cache.py,sha256=PvXo4EaKVUcU-h5akCFQpClK_zVxNu0BzGEIJf5ffB0,33848
|
|
3
|
-
tradedangerous/cli.py,sha256=ycGkzMszwpP9OrngFIyhQbYoZ2wzRhJMTDCW1YhLrNI,4727
|
|
4
|
-
tradedangerous/corrections.py,sha256=QMs-7MKLw2imFgIHthnwcpqWT1yJTb3CrABJw9LaKLA,1441
|
|
5
|
-
tradedangerous/csvexport.py,sha256=OcOKe_VIgafw6rCvG3k5tM11KwwoYXMNY5DSSfCC0mU,8705
|
|
6
|
-
tradedangerous/edscupdate.py,sha256=-aglmhmtCKYrUyYKO1SBs4xmEHafTL4CjVeAt8uproU,17337
|
|
7
|
-
tradedangerous/edsmupdate.py,sha256=GesavwY7rI5tuoTTMrM8sjYSN50QaPsDqKR2rrVbRZk,14924
|
|
8
|
-
tradedangerous/formatting.py,sha256=3uqO9zHOTdfgZdFfhhL32gK_jIpliYOPhJocY5C1cfU,6162
|
|
9
|
-
tradedangerous/fs.py,sha256=zVh5dF9dnJB0WLPSGX1KlJ8Sgqff5my3wer7m_4ddwM,2530
|
|
10
|
-
tradedangerous/gui.py,sha256=gHGiFSmprQNNYWewRVqdV22XK1EIt9eODnpgVrL3imA,44101
|
|
11
|
-
tradedangerous/jsonprices.py,sha256=AQ2YFMc18s-KdvXAGZnYDw2bNbfBksWnM-vXRS8IP70,7013
|
|
12
|
-
tradedangerous/mapping.py,sha256=RNjZy5hpokFVFDw_KkOUELmT4fPJC1RZiN9D8ZeAu5o,4034
|
|
13
|
-
tradedangerous/prices.py,sha256=AcETd8b-lKwuyyx6cTud2jyoQLPZaxMuGgQNI9N-SYU,7593
|
|
14
|
-
tradedangerous/submit-distances.py,sha256=lEHtCLUzR2QNRrgPD-PkDIzHYYHOODZVTRxDsAG-qK4,12394
|
|
15
|
-
tradedangerous/tools.py,sha256=pp-4WtA12SVaaQHFJFOMTF7EDFRCU2mQeOhC4xoXmEk,1331
|
|
16
|
-
tradedangerous/trade.py,sha256=vBEJZR3Bybesw9FMelcHOTRA7KqKeH-4_wqbJ4VMB_E,1779
|
|
17
|
-
tradedangerous/tradecalc.py,sha256=GyuYZNuyfn0y0eoPbxDEI7dxTJtHmRXAKFMpiR0Z1iU,42004
|
|
18
|
-
tradedangerous/tradedb.py,sha256=RD8oOwoGqjVRThGPrWVXhf_Hklp4SqQ08awh-cYbDdY,73457
|
|
19
|
-
tradedangerous/tradeenv.py,sha256=8uByR4m-xzZxNSBLQnDHS4uJMPohf3mP5R_rsXnhmds,7887
|
|
20
|
-
tradedangerous/tradeexcept.py,sha256=aZ-Y31MbkjF7lmAzBAbaMsPPE7FEEfuf4gaX2GvriDk,368
|
|
21
|
-
tradedangerous/tradegui.py,sha256=JbGFnsWupgesk6hrcUgKSdD9NNDyo0U9gh6m3DccAwU,782
|
|
22
|
-
tradedangerous/transfers.py,sha256=NmXXk2aF88YkAvYqc9Syt_aO6d2jJjC-OxoRFoOyQH4,9923
|
|
23
|
-
tradedangerous/utils.py,sha256=PUPvAEqUyxYGqqQa0b_yfLAvq8YVUxK6HfdS-CxM-Lo,5186
|
|
24
|
-
tradedangerous/version.py,sha256=ywjdWfhn1hu8HSR56vN66lbXMDuR0qaBvhQobN87l28,647
|
|
25
|
-
tradedangerous/commands/TEMPLATE.py,sha256=7oXL124aqxGHwnb0h9yRylUiwc6M5QrRrGVrubwI1gg,2124
|
|
26
|
-
tradedangerous/commands/__init__.py,sha256=6B0WuqkFBOll5Hj67yKDAnhmyr5ZAnHc6nzUNEUh384,9640
|
|
27
|
-
tradedangerous/commands/buildcache_cmd.py,sha256=oJvP06fA8svnHrfrpWkHKR16cba8GIhHdMOyZqds18Y,2332
|
|
28
|
-
tradedangerous/commands/buy_cmd.py,sha256=Hj51bi9qX9qBYRnB5nPe4euHHwzsKznRydeufru4Bqo,13556
|
|
29
|
-
tradedangerous/commands/commandenv.py,sha256=99XMObVlgOa-78mK-x2qEru2b5grV6ARK7HFqHSykIw,9550
|
|
30
|
-
tradedangerous/commands/exceptions.py,sha256=0DI5cLeNB2H6q8vkuyenLOyVBiBEVnwslx3Y5XhFFMA,3618
|
|
31
|
-
tradedangerous/commands/export_cmd.py,sha256=Wxvz0drHLWBD9OeOGh_sVv-AiHi9ZavbMo5T8T6UmrU,4468
|
|
32
|
-
tradedangerous/commands/import_cmd.py,sha256=NJiv5MQ0EE2Q0GYuJjfKMKA9-33iw1V3Ykch8oT6IW0,5683
|
|
33
|
-
tradedangerous/commands/local_cmd.py,sha256=vXmLtX15boHG2aNOv1gqj3d--zynoZgf_WwzzSzGAgk,8551
|
|
34
|
-
tradedangerous/commands/market_cmd.py,sha256=3WXMeqGwlwkpwmP0-R-j0TAOFvzn35Rry8jNhrRc6wk,5458
|
|
35
|
-
tradedangerous/commands/nav_cmd.py,sha256=SWwKKzwE9RNkcPi-hPSL-sJNqzuAIBV9ArbD7w8Rxzw,8691
|
|
36
|
-
tradedangerous/commands/olddata_cmd.py,sha256=3PhmrSrRr4vbF9hFHsoW32dN4E-tGIqENJn0sVJzzjM,8040
|
|
37
|
-
tradedangerous/commands/parsing.py,sha256=iG53t-zNmGVceELEOJlOIovvCp4r0fuwhCYhJRpjR84,6801
|
|
38
|
-
tradedangerous/commands/rares_cmd.py,sha256=UpkZvtJZCCQKErDkZJzFRKn4Ei1tltaMZ_DfKsFHBq0,9227
|
|
39
|
-
tradedangerous/commands/run_cmd.py,sha256=jJMJf0DWJr0rmCCdh6khyMgFQe-hdbh7CyAtgXRQuFA,47609
|
|
40
|
-
tradedangerous/commands/sell_cmd.py,sha256=RkmGnPfvuWXyAI3zUqjv7rD_1-NbHX5n8x3ah-Dk-FU,7873
|
|
41
|
-
tradedangerous/commands/shipvendor_cmd.py,sha256=mAIlXoRqa2X8dkVB9Q0dYZwb21LdDqrvdAhSgTzYNCs,7023
|
|
42
|
-
tradedangerous/commands/station_cmd.py,sha256=IFRkf-Vw4A3cLZuUsHMgTZQHiFQeh5feES3culurCnc,16412
|
|
43
|
-
tradedangerous/commands/trade_cmd.py,sha256=ABmRIJmZeBDrJGuMLQ7_g9tvpVSNNC-0MEbbsTvUUe0,3175
|
|
44
|
-
tradedangerous/commands/update_cmd.py,sha256=JiE12nPlCQIfZ8y28kTCSlr8T9fHM0yliwabqUEjk-Y,14583
|
|
45
|
-
tradedangerous/commands/update_gui.py,sha256=Kd4fPy_Bo9JBZTn0nn1MVft3kioQaMXAlh1qa4vJIkw,23377
|
|
46
|
-
tradedangerous/mfd/__init__.py,sha256=ySrPBGFZs7gzktpZBZWRoT-UoqKUldqx15ccWvNa62E,3065
|
|
47
|
-
tradedangerous/mfd/saitek/__init__.py,sha256=IyIxv8Rd4iJKE32TD16JGTWiQYOBR0omndOvn7C1O4g,63
|
|
48
|
-
tradedangerous/mfd/saitek/directoutput.py,sha256=-9Kt7nTa--72sPY2-qV_T727izT5m6d0vMwolPSMJyA,24949
|
|
49
|
-
tradedangerous/mfd/saitek/x52pro.py,sha256=Xg0c0b-Waa62tnBi3ONdhmVCcR_q5YetE7qGdYMvSN8,5927
|
|
50
|
-
tradedangerous/misc/checkpricebounds.py,sha256=7Zc2P9Ybb0dHJwJ7f0C4kPhshEc4-lVlolxP2n4uz94,8434
|
|
51
|
-
tradedangerous/misc/clipboard.py,sha256=9EFfDC29FQXx_uTVtzDYhXsMGOObOsQaJYg8g65FjV8,1681
|
|
52
|
-
tradedangerous/misc/coord64.py,sha256=uEseyMHa7OKj30MHF2bzc76Y58UqbqEyHuYsNFPMj3I,2368
|
|
53
|
-
tradedangerous/misc/derp-sentinel.py,sha256=iS6yvI9LUTcf5iE6gS4iLqgsAnI0YFh2UWGlofVtlrY,779
|
|
54
|
-
tradedangerous/misc/diff-system-csvs.py,sha256=ZrsakKFP9yk4NUhUzePqES5vxLBe6pC3dkZSTxqpsrQ,4928
|
|
55
|
-
tradedangerous/misc/eddb.py,sha256=rjv6QzXg26UOq5iJyc7AMPX5D7WRSyQJ8A3e07hfwSw,1843
|
|
56
|
-
tradedangerous/misc/eddn.py,sha256=MSjwc_QWAGO3PfsKA03ugGxHxxN0O2GGbtQkj2kjQtM,12156
|
|
57
|
-
tradedangerous/misc/edsc.py,sha256=1ZcArGpDQLobbqJ9Ni0fH-gTAqZL36cRXI1hyNsii68,14979
|
|
58
|
-
tradedangerous/misc/edsm.py,sha256=4cEBKvSQKBW8W7jfoQ5VzPB83HZgtBlJ7Ty1W-AHpP0,3459
|
|
59
|
-
tradedangerous/misc/importeddbstats.py,sha256=_l5NI-aPxTU4mpzBEh_hyTXKZx4rRy_LZGAmIKESHa4,1785
|
|
60
|
-
tradedangerous/misc/prices-json-exp.py,sha256=t_4B5yCGIMwtkS2gLqHwkKXovbKV97t_i_bz2e-pZn4,4942
|
|
61
|
-
tradedangerous/misc/progress.py,sha256=-_V7E51sIYUtSxeeA1cphBEW4A_OBuH1guEDxUjikn8,2127
|
|
62
|
-
tradedangerous/plugins/__init__.py,sha256=zCEVbTem1CAM1cOV9r96H3ikjqza3dd-XoaubE5_xkc,7868
|
|
63
|
-
tradedangerous/plugins/edapi_plug.py,sha256=IQxfDGM9IqwuJbDZRL8RFIyGMWzd0YmeJVWUVPDA3Ik,42275
|
|
64
|
-
tradedangerous/plugins/edcd_plug.py,sha256=ZPtRzLhcQZEiwEo3AoPyk3Uy4UmRLM6gv2Qi1s7K_Vs,14469
|
|
65
|
-
tradedangerous/plugins/eddblink_plug.py,sha256=DXkGYLs3704REJR4KrWnsC-OQF1ghZF2sSOUGPIbNok,22056
|
|
66
|
-
tradedangerous/plugins/edmc_batch_plug.py,sha256=3Ptr-SZqaZFR8ViIIrp9Ak7rvfU3zl11AZYBhIceN7s,4224
|
|
67
|
-
tradedangerous/plugins/journal_plug.py,sha256=K1oIeI7E3mb04fvYLXyoAh7fOTyM9NBelibTI88MIDQ,23696
|
|
68
|
-
tradedangerous/plugins/netlog_plug.py,sha256=Gw_HSZWpN17D--OIYEM3Vo8y9SvDOv9UwAUfY24kz28,13460
|
|
69
|
-
tradedangerous/plugins/spansh_plug.py,sha256=NPk7Yg3sammdwjY3WenXPdyX8gBSxXSN6LUZDsl2nMc,16692
|
|
70
|
-
tradedangerous/templates/Added.csv,sha256=8o54civQCcS9y7_DBo0GX196XWRbbREQqKDYTKibsgQ,649
|
|
71
|
-
tradedangerous/templates/Category.csv,sha256=8xwUDcBZE25T6x6dZGlRUMTCqeDLt3a9LXU5h6hRHV8,250
|
|
72
|
-
tradedangerous/templates/RareItem.csv,sha256=F1RhRnTD82PiwrVUO-ai2ErGH2PTqNnQaDw5mcgljXs,10483
|
|
73
|
-
tradedangerous/templates/TradeDangerous.sql,sha256=1EiJ7cNJQKvdW4X-LQAHw3Y1POc0roKf25LJJy6jGlo,8135
|
|
74
|
-
tradedangerous-10.17.0.dist-info/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
|
|
75
|
-
tradedangerous-10.17.0.dist-info/METADATA,sha256=lHWSOrLqObYBndYkhkXaCjge77EWb9fhRvvljFfpGPU,4441
|
|
76
|
-
tradedangerous-10.17.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
77
|
-
tradedangerous-10.17.0.dist-info/entry_points.txt,sha256=pSwa-q0ob443uiKux7xFKYQl8uen66iDTnjdrQhNLx8,92
|
|
78
|
-
tradedangerous-10.17.0.dist-info/top_level.txt,sha256=bF29i-oEltmNICgElEKxNsg83oahJvxg3a7YrxZi9Rk,15
|
|
79
|
-
tradedangerous-10.17.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|