tradedangerous 11.5.3__py3-none-any.whl → 12.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.

Files changed (47) hide show
  1. tradedangerous/cache.py +567 -395
  2. tradedangerous/cli.py +2 -2
  3. tradedangerous/commands/TEMPLATE.py +25 -26
  4. tradedangerous/commands/__init__.py +8 -16
  5. tradedangerous/commands/buildcache_cmd.py +40 -10
  6. tradedangerous/commands/buy_cmd.py +57 -46
  7. tradedangerous/commands/commandenv.py +0 -2
  8. tradedangerous/commands/export_cmd.py +78 -50
  9. tradedangerous/commands/import_cmd.py +67 -31
  10. tradedangerous/commands/market_cmd.py +52 -19
  11. tradedangerous/commands/olddata_cmd.py +120 -107
  12. tradedangerous/commands/rares_cmd.py +122 -110
  13. tradedangerous/commands/run_cmd.py +118 -66
  14. tradedangerous/commands/sell_cmd.py +52 -45
  15. tradedangerous/commands/shipvendor_cmd.py +49 -234
  16. tradedangerous/commands/station_cmd.py +55 -485
  17. tradedangerous/commands/update_cmd.py +56 -420
  18. tradedangerous/csvexport.py +173 -162
  19. tradedangerous/db/__init__.py +27 -0
  20. tradedangerous/db/adapter.py +191 -0
  21. tradedangerous/db/config.py +95 -0
  22. tradedangerous/db/engine.py +246 -0
  23. tradedangerous/db/lifecycle.py +332 -0
  24. tradedangerous/db/locks.py +208 -0
  25. tradedangerous/db/orm_models.py +455 -0
  26. tradedangerous/db/paths.py +112 -0
  27. tradedangerous/db/utils.py +661 -0
  28. tradedangerous/gui.py +2 -2
  29. tradedangerous/plugins/eddblink_plug.py +387 -251
  30. tradedangerous/plugins/spansh_plug.py +2488 -821
  31. tradedangerous/prices.py +124 -142
  32. tradedangerous/templates/TradeDangerous.sql +6 -6
  33. tradedangerous/tradecalc.py +1227 -1109
  34. tradedangerous/tradedb.py +533 -384
  35. tradedangerous/tradeenv.py +12 -1
  36. tradedangerous/version.py +1 -1
  37. {tradedangerous-11.5.3.dist-info → tradedangerous-12.0.1.dist-info}/METADATA +11 -7
  38. {tradedangerous-11.5.3.dist-info → tradedangerous-12.0.1.dist-info}/RECORD +42 -38
  39. {tradedangerous-11.5.3.dist-info → tradedangerous-12.0.1.dist-info}/WHEEL +1 -1
  40. tradedangerous/commands/update_gui.py +0 -721
  41. tradedangerous/jsonprices.py +0 -254
  42. tradedangerous/plugins/edapi_plug.py +0 -1071
  43. tradedangerous/plugins/journal_plug.py +0 -537
  44. tradedangerous/plugins/netlog_plug.py +0 -316
  45. {tradedangerous-11.5.3.dist-info → tradedangerous-12.0.1.dist-info}/entry_points.txt +0 -0
  46. {tradedangerous-11.5.3.dist-info → tradedangerous-12.0.1.dist-info/licenses}/LICENSE +0 -0
  47. {tradedangerous-11.5.3.dist-info → tradedangerous-12.0.1.dist-info}/top_level.txt +0 -0
@@ -1,537 +0,0 @@
1
- import os
2
- import json
3
- import pathlib
4
- from datetime import datetime, timezone
5
-
6
- from .. import csvexport
7
- from . import PluginException, ImportPluginBase
8
-
9
-
10
- def snapToGrid32(val):
11
- try:
12
- val = float(val)
13
- corr = -0.5 if val < 0 else 0.5
14
- pos = int(val*32+corr)/32
15
- except:
16
- pos = None
17
- pass
18
- return pos
19
-
20
- def getYNfromService(obj, key):
21
- return "Y" if key in obj else "N"
22
-
23
- class JournalStation:
24
- __slots__ = (
25
- 'lsFromStar', 'blackMarket', 'maxPadSize',
26
- 'market', 'shipyard', 'outfitting',
27
- 'rearm', 'refuel', 'repair',
28
- 'planetary', 'modified'
29
- )
30
-
31
- def __init__(
32
- self, lsFromStar=0, blackMarket='?', maxPadSize='?',
33
- market='?', shipyard='?', outfitting='?',
34
- rearm='?', refuel='?', repair='?',
35
- planetary='?', modified='now'
36
- ):
37
- self.lsFromStar = lsFromStar
38
- self.blackMarket = blackMarket
39
- self.maxPadSize = maxPadSize
40
- self.market = market
41
- self.shipyard = shipyard
42
- self.outfitting = outfitting
43
- self.rearm = rearm
44
- self.refuel = refuel
45
- self.repair = repair
46
- self.planetary = planetary
47
- self.modified = modified
48
-
49
- def __str__(self):
50
- return "{}ls Pad:{} Mkt:{} Blk:{} Shp:{} Out:{} Arm:{} Ref:{} Rep:{} Plt:{}".format(
51
- self.lsFromStar, self.maxPadSize, self.market,
52
- self.blackMarket, self.shipyard, self.outfitting,
53
- self.rearm, self.refuel, self.repair, self.planetary
54
- )
55
-
56
- class ImportPlugin(ImportPluginBase):
57
- """
58
- Plugin that parses the Journal file and add or update systems and stations.
59
- """
60
-
61
- logGlob = "Journal.*.log"
62
- ADDED_NAME = 'Journal'
63
- LOGDIR_NAME = "FDEVJRNDIR"
64
- DATE_FORMATS = {
65
- 2: ("%y", "YY", "%y"),
66
- 4: ("%Y", "YYYY", "%y"),
67
- 5: ("%y-%m", "YY-MM", "%y%m"),
68
- 7: ("%Y-%m", "YYYY-MM", "%y%m"),
69
- 8: ("%y-%m-%d", "YY-MM-DD", "%y%m%d"),
70
- 10: ("%Y-%m-%d", "YYYY-MM-DD", "%y%m%d"),
71
- }
72
- ignoreSysNames = [
73
- 'TRAINING',
74
- 'DESTINATION',
75
- ]
76
- pluginOptions = {
77
- 'show': "Only show the system or station. Don't update the DB.",
78
- 'last': "Only parse the last (newest) Journal file.",
79
- 'date': "Only parse Journal files from date, format=[YY]YY[-MM[-DD]].",
80
- }
81
- filePathList = []
82
- sysList = {}
83
- stnList = {}
84
- blkList = []
85
-
86
- planetTypeList = (
87
- "SURFACESTATION",
88
- "CRATERPORT",
89
- "CRATEROUTPOST",
90
- )
91
-
92
- def __init__(self, tdb, tdenv):
93
- super().__init__(tdb, tdenv)
94
-
95
- logDirName = os.getenv(self.LOGDIR_NAME, None)
96
- if not logDirName:
97
- raise PluginException(
98
- "Environment variable '{}' not set "
99
- "(see 'README.md' for help)."
100
- .format(self.LOGDIR_NAME)
101
- )
102
- tdenv.NOTE("{}={}", self.LOGDIR_NAME, logDirName)
103
-
104
- self.logPath = pathlib.Path(logDirName)
105
- if not self.logPath.is_dir():
106
- raise PluginException(
107
- "{}: is not a directory.".format(
108
- str(self.logPath)
109
- )
110
- )
111
-
112
- def getJournalDirList(self):
113
- """
114
- get all Journal files
115
- """
116
- tdenv = self.tdenv
117
- optDate = self.getOption("date")
118
- logLast = self.getOption("last")
119
-
120
- logDate = None
121
- if isinstance(optDate, str):
122
- fmtLen = len(optDate)
123
- fmtDate = self.DATE_FORMATS.get(fmtLen, None)
124
- if fmtDate:
125
- tdenv.DEBUG0("date format: {}", fmtDate[0])
126
- try:
127
- logDate = datetime.strptime(optDate, fmtDate[0])
128
- except ValueError:
129
- logDate = None
130
- pass
131
- if logDate:
132
- globDat = logDate.strftime(fmtDate[2])
133
- self.logGlob = "Journal." + globDat + "*.log"
134
- tdenv.NOTE("using date: {}", logDate.strftime(fmtDate[0]))
135
- else:
136
- raise PluginException(
137
- "Wrong date '{}' format. Must be in the form of '{}'"
138
- .format(
139
- optDate,
140
- "','".join([d[1] for d in self.DATE_FORMATS.values()])
141
- )
142
- )
143
- tdenv.NOTE("using pattern: {}", self.logGlob)
144
-
145
- for filePath in sorted(self.logPath.glob(self.logGlob)):
146
- tdenv.DEBUG0("logfile: {}", str(filePath))
147
- self.filePathList.append(filePath)
148
-
149
- listLen = len(self.filePathList)
150
- if listLen == 0:
151
- raise PluginException("No journal file found.")
152
- elif listLen == 1:
153
- tdenv.NOTE("Found one journal file.")
154
- else:
155
- tdenv.NOTE("Found {} journal files.", listLen)
156
-
157
- if logLast and listLen > 1:
158
- del self.filePathList[:-1]
159
-
160
- def parseJournalDirList(self):
161
- """
162
- parse Journal files
163
- see: https://forums.frontier.co.uk/showthread.php/275151-Commanders-log-manual-and-data-sample
164
- """
165
- tdenv = self.tdenv
166
-
167
- logSysList = {}
168
- stnSysList = {}
169
- blkStnList = []
170
- for filePath in self.filePathList:
171
- tdenv.NOTE("parsing '{}'", filePath.name)
172
- aktStation = False
173
- inMultiCrew = False
174
- sysCount = stnCount = blkCount = 0
175
- with filePath.open() as logFile:
176
- lineCount = 0
177
- statHeader = True
178
- for line in logFile:
179
- lineCount += 1
180
- try:
181
- # parse the json-event-line of the journal
182
- event = json.loads(line)
183
- if inMultiCrew:
184
- # ignore all events in multicrew except
185
- if event["event"] == "QuitACrew":
186
- inMultiCrew = False
187
- else:
188
- tdenv.DEBUG1("event '{}' ignored (multicrew)", event["event"])
189
- continue
190
- logDate = datetime.strptime(
191
- event["timestamp"], "%Y-%m-%dT%H:%M:%SZ"
192
- ).replace(tzinfo=timezone.utc)
193
- if statHeader:
194
- # check the first line
195
- statHeader = False
196
- if event["event"] == "Fileheader":
197
- if "beta" in event["gameversion"].lower():
198
- # don't parse data from beta versions
199
- tdenv.NOTE("Ignoring Beta-Version.")
200
- break
201
- # ignore the header-event
202
- continue
203
- else:
204
- # don't stop parsing if it's not the header-line
205
- tdenv.WARN("Doesn't seem do be a FDEV Journal file")
206
- if event["event"] == "Location":
207
- # convert event before the if-elif starts
208
- if event.get("Docked", False):
209
- event["event"] = "Docked"
210
- tdenv.DEBUG0(" EVENT: Changed Location to Docked")
211
- # if-elif starts here
212
- if event["event"] == "FSDJump":
213
- sysCount += 1
214
- sysDate = logDate
215
- sysName = event["StarSystem"]
216
- sysPosA = event["StarPos"]
217
- sysPosX, sysPosY, sysPosZ = sysPosA[0], sysPosA[1], sysPosA[2]
218
- sysPosX = snapToGrid32(sysPosX)
219
- sysPosY = snapToGrid32(sysPosY)
220
- sysPosZ = snapToGrid32(sysPosZ)
221
- tdenv.DEBUG0(
222
- " SYSTEM: {} {} {} {} {}",
223
- sysDate, sysName, sysPosX, sysPosY, sysPosZ
224
- )
225
- logSysList[sysName] = (sysPosX, sysPosY, sysPosZ, sysDate)
226
- elif event["event"] == "Docked":
227
- stnCount += 1
228
- sysName = event["StarSystem"]
229
- stnList = stnSysList.get(sysName, None)
230
- if not stnList:
231
- stnList = stnSysList[sysName] = {}
232
- stnDate = logDate
233
- stnName = event["StationName"]
234
- jrnStation = JournalStation(modified=stnDate)
235
- jrnStation.lsFromStar = int(event.get("DistFromStarLS", 0) + 0.5)
236
- stnType = event.get("StationType", None)
237
- if stnType:
238
- # conclusions from the stationtype
239
- jrnStation.planetary = "Y" if stnType.upper() in self.planetTypeList else "N"
240
- jrnStation.maxPadSize = "M" if stnType.startswith("Outpost") else "L"
241
- stnServices = event.get("StationServices", None)
242
- if stnServices:
243
- # station services since ED update 2.4
244
- jrnStation.blackMarket = getYNfromService(stnServices, 'BlackMarket')
245
- jrnStation.market = getYNfromService(stnServices, 'Commodities')
246
- jrnStation.shipyard = getYNfromService(stnServices, 'Shipyard')
247
- jrnStation.outfitting = getYNfromService(stnServices, 'Outfitting')
248
- jrnStation.rearm = getYNfromService(stnServices, 'Rearm')
249
- jrnStation.refuel = getYNfromService(stnServices, 'Refuel')
250
- jrnStation.repair = getYNfromService(stnServices, 'Repair')
251
- tdenv.DEBUG0(
252
- " STATION: {} {}/{} {}",
253
- stnDate, sysName, stnName, str(jrnStation)
254
- )
255
- stnList[stnName] = jrnStation
256
- aktStation = True
257
- sysPosA = event.get("StarPos", None)
258
- if sysPosA:
259
- # we got system data inside a docking event
260
- # use it (changed Location or maybe EDDN capture)
261
- sysCount += 1
262
- sysDate = logDate
263
- sysPosX, sysPosY, sysPosZ = sysPosA[0], sysPosA[1], sysPosA[2]
264
- sysPosX = snapToGrid32(sysPosX)
265
- sysPosY = snapToGrid32(sysPosY)
266
- sysPosZ = snapToGrid32(sysPosZ)
267
- tdenv.DEBUG0(" SYSTEM: {} {} {} {} {}", sysDate, sysName, sysPosX, sysPosY, sysPosZ)
268
- logSysList[sysName] = (sysPosX, sysPosY, sysPosZ, sysDate)
269
- elif event["event"] == "MarketSell" and aktStation:
270
- # check for BlackMarket
271
- if event.get("BlackMarket", False):
272
- stnBlackMarket = (sysName, stnName)
273
- if stnBlackMarket not in blkStnList:
274
- tdenv.DEBUG0("B/MARKET: {}/{}", sysName, stnName)
275
- blkCount += 1
276
- blkStnList.append(stnBlackMarket)
277
- elif event["event"] == "Undocked":
278
- aktStation = False
279
- elif event["event"] == "JoinACrew":
280
- inMultiCrew = True
281
- else:
282
- tdenv.DEBUG1("event '{}' ignored", event["event"])
283
- except:
284
- tdenv.WARN("Something wrong with line {} (skipped it).", lineCount)
285
-
286
- tdenv.NOTE(
287
- "Found {} System{}, {} Station{} and {} BlackMarket{}.",
288
- sysCount, "" if sysCount == 1 else "s",
289
- stnCount, "" if stnCount == 1 else "s",
290
- blkCount, "" if blkCount == 1 else "s",
291
- )
292
- self.sysList = logSysList
293
- self.stnList = stnSysList
294
- self.blkList = blkStnList
295
-
296
- def updateJournalSysList(self):
297
- """
298
- check the found systems and add them to the DB if new.
299
- """
300
- tdb, tdenv = self.tdb, self.tdenv
301
- optShow = self.getOption("show")
302
-
303
- if not optShow:
304
- try:
305
- idJournal = tdb.lookupAdded(self.ADDED_NAME)
306
- tdenv.DEBUG1("idjournal = {}", idJournal)
307
- except KeyError:
308
- tdenv.WARN("Entry '{}' not found in 'Added' table.", self.ADDED_NAME)
309
- tdenv.WARN("Trying to add it myself.")
310
- db = tdb.getDB()
311
- cur = db.cursor()
312
- cur.execute(
313
- "INSERT INTO Added(name) VALUES(?)",
314
- [self.ADDED_NAME]
315
- )
316
- db.commit()
317
- tdenv.NOTE("Export Table 'Added'")
318
- _, path = csvexport.exportTableToFile(tdb, tdenv, "Added")
319
- pass
320
-
321
- addCount = oldCount = newCount = 0
322
- for sysName in sorted(self.sysList):
323
- sysPosX, sysPosY, sysPosZ, sysDate = self.sysList[sysName]
324
- utcDate = sysDate.astimezone(timezone.utc).strftime('%Y-%m-%d %H:%M:%S')
325
- tdenv.DEBUG0(
326
- "log system '{}' ({}, {}, {}, '{}')",
327
- sysName, sysPosX, sysPosY, sysPosZ, utcDate
328
- )
329
- if sysName.upper() in self.ignoreSysNames:
330
- tdenv.NOTE("Ignoring system: '{}'", sysName)
331
- continue
332
- systemTD = tdb.systemByName.get(sysName.upper(), None)
333
- if systemTD:
334
- # we allready know the system, check coords
335
- tdenv.DEBUG0(
336
- "Old system '{}' ({}, {}, {})",
337
- systemTD.dbname, systemTD.posX, systemTD.posY, systemTD.posZ
338
- )
339
- oldCount += 1
340
- if not (systemTD.posX == sysPosX and
341
- systemTD.posY == sysPosY and
342
- systemTD.posZ == sysPosZ):
343
- tdenv.WARN("System '{}' has different coordinates:", sysName)
344
- tdenv.WARN(" database: {}, {}, {}", systemTD.posX, systemTD.posY, systemTD.posZ)
345
- tdenv.WARN(" Journal: {}, {}, {}", sysPosX, sysPosY, sysPosZ)
346
- else:
347
- # it's a new system
348
- newCount += 1
349
- if optShow:
350
- # display only
351
- tdenv.NOTE(
352
- "New system '{}' ({}, {}, {}, '{}')",
353
- sysName, sysPosX, sysPosY, sysPosZ, utcDate
354
- )
355
- else:
356
- # add it to the database
357
- # the function will output something
358
- tdb.addLocalSystem(
359
- sysName.upper(),
360
- sysPosX, sysPosY, sysPosZ,
361
- added=self.ADDED_NAME,
362
- modified=utcDate,
363
- commit=False
364
- )
365
- addCount += 1
366
-
367
- # output statistics
368
- allCount = oldCount + newCount
369
- tdenv.NOTE(
370
- "Found {:>3} System{} altogether.",
371
- allCount, "" if allCount == 1 else "s",
372
- )
373
- for iCount, iText in [
374
- (oldCount, "old"), (newCount, "new"), (addCount, "added"),
375
- ]:
376
- tdenv.NOTE(" {:>3} {}", iCount, iText)
377
- if addCount:
378
- tdb.getDB().commit()
379
- tdenv.NOTE("Export Table 'System'")
380
- _, path = csvexport.exportTableToFile(tdb, tdenv, "System")
381
-
382
- def updateJournalStnList(self):
383
- """
384
- check the found stations and
385
- add them to the DB if new or
386
- update them in the DB if changed.
387
- """
388
- tdb, tdenv = self.tdb, self.tdenv
389
- optShow = self.getOption("show")
390
-
391
- addCount = oldCount = newCount = updCount = 0
392
- for sysName in sorted(self.stnList):
393
- if sysName.upper() in self.ignoreSysNames:
394
- tdenv.NOTE("Ignoring system: '{}'", sysName)
395
- continue
396
- system = tdb.systemByName.get(sysName.upper(), None)
397
- if not (system or optShow):
398
- # only warn if we are not in show mode
399
- # otherwise we could have addded the system before
400
- tdenv.WARN("System '{}' unknown.", sysName)
401
- continue
402
- for stnName in sorted(self.stnList[sysName]):
403
- jrnStation = self.stnList[sysName][stnName]
404
- utcDate = jrnStation.modified.astimezone(timezone.utc).strftime('%Y-%m-%d %H:%M:%S')
405
- station = None
406
- if system:
407
- # system could be None in show mode and the lookup
408
- # function would try very hard to find the station
409
- try:
410
- station = tdb.lookupStation(stnName, system)
411
- except LookupError:
412
- pass
413
-
414
- if (sysName, stnName) in self.blkList:
415
- # BlackMarket found
416
- jrnStation.blackMarket = "Y"
417
- elif station:
418
- if jrnStation.blackMarket == "?":
419
- # don't change current value if new one is unknown
420
- jrnStation.blackMarket = station.blackMarket
421
-
422
- tdenv.DEBUG0(
423
- "log station '{}/{}' ({}, '{}')",
424
- sysName, stnName, str(jrnStation), utcDate
425
- )
426
-
427
- if not station:
428
- # must be a new station
429
- newCount += 1
430
- if optShow:
431
- # display only
432
- tdenv.NOTE(
433
- "New station '{}/{}' ({}, '{}')",
434
- sysName, stnName, str(jrnStation), utcDate
435
- )
436
- else:
437
- # add it to the database
438
- # the function will output something
439
- station = tdb.addLocalStation(
440
- system=system,
441
- name=stnName,
442
- lsFromStar=jrnStation.lsFromStar,
443
- blackMarket=jrnStation.blackMarket,
444
- maxPadSize=jrnStation.maxPadSize,
445
- market=jrnStation.market,
446
- shipyard=jrnStation.shipyard,
447
- outfitting=jrnStation.outfitting,
448
- rearm=jrnStation.rearm,
449
- refuel=jrnStation.refuel,
450
- repair=jrnStation.repair,
451
- planetary=jrnStation.planetary,
452
- modified=utcDate,
453
- commit=False,
454
- )
455
- addCount += 1
456
- else:
457
- oldCount += 1
458
- tdenv.DEBUG0(
459
- "Old station '{}' ({}ls Pad:{} Mkt:{} Blk:{} Shp:{} Out:{} Arm:{} Ref:{} Rep:{} Plt:{})",
460
- station.name(), station.lsFromStar, station.maxPadSize, station.market,
461
- station.blackMarket, station.shipyard, station.outfitting,
462
- station.rearm, station.refuel, station.repair, station.planetary
463
- )
464
- if not optShow:
465
- if (station.lsFromStar != jrnStation.lsFromStar and
466
- station.blackMarket == jrnStation.blackMarket and
467
- station.maxPadSize == jrnStation.maxPadSize and
468
- station.market == jrnStation.market and
469
- station.shipyard == jrnStation.shipyard and
470
- station.outfitting == jrnStation.outfitting and
471
- station.rearm == jrnStation.rearm and
472
- station.refuel == jrnStation.refuel and
473
- station.repair == jrnStation.repair and
474
- station.planetary == jrnStation.planetary
475
- ):
476
- # ignore 15% deviation if it's the only change
477
- lsMin = int(station.lsFromStar * 0.85)
478
- lsMax = int(station.lsFromStar*1.15 + 1)
479
- if lsMin <= jrnStation.lsFromStar <= lsMax:
480
- tdenv.DEBUG0(
481
- "ignore 15% deviation ({}ls ~ {}ls)",
482
- jrnStation.lsFromStar, station.lsFromStar
483
- )
484
- jrnStation.lsFromStar = station.lsFromStar
485
- # the function will do it's own check and output
486
- # something if the station is updated
487
- if tdb.updateLocalStation(
488
- station=station,
489
- lsFromStar=jrnStation.lsFromStar,
490
- blackMarket=jrnStation.blackMarket,
491
- maxPadSize=jrnStation.maxPadSize,
492
- market=jrnStation.market,
493
- shipyard=jrnStation.shipyard,
494
- outfitting=jrnStation.outfitting,
495
- rearm=jrnStation.rearm,
496
- refuel=jrnStation.refuel,
497
- repair=jrnStation.repair,
498
- planetary=jrnStation.planetary,
499
- modified=utcDate,
500
- commit=False,
501
- ):
502
- updCount += 1
503
-
504
- # output statistics
505
- allCount = oldCount + newCount
506
- tdenv.NOTE(
507
- "Found {:>3} Station{} altogether.",
508
- allCount, "" if allCount == 1 else "s",
509
- )
510
- for iCount, iText in [
511
- (oldCount, "old"), (updCount, "updated"),
512
- (newCount, "new"), (addCount, "added"),
513
- ]:
514
- tdenv.NOTE(" {:>3} {}", iCount, iText)
515
- if (updCount+addCount) > 0:
516
- tdb.getDB().commit()
517
- tdenv.NOTE("Export Table 'Station'")
518
- _, path = csvexport.exportTableToFile(tdb, tdenv, "Station")
519
-
520
- def run(self):
521
- tdb, tdenv = self.tdb, self.tdenv
522
-
523
- tdenv.DEBUG0("show: {}", self.getOption("show"))
524
- tdenv.DEBUG0("last: {}", self.getOption("last"))
525
- tdenv.DEBUG0("date: {}", self.getOption("date"))
526
-
527
- # Ensure the cache is built and reloaded.
528
- tdb.reloadCache()
529
- tdb.load(maxSystemLinkLy=tdenv.maxSystemLinkLy)
530
-
531
- self.getJournalDirList()
532
- self.parseJournalDirList()
533
- self.updateJournalSysList()
534
- self.updateJournalStnList()
535
-
536
- # We did all the work
537
- return False