edmctool

Elite Dangerous Market Connector Tool

Base Module

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-07

Purpose: EDMC plugins individual logging subsystem base classes.

class jsktoolbox.edmctool.base.BLogProcessor[source]

Bases: BData

BLogProcessor base class.

Container for logger processor methods.

property th_log: Thread

Return the thread logger handler instance.

### Returns: Thread - The thread responsible for log processing.

property qlog: Queue | SimpleQueue

Return the logging queue instance.

### Returns: Union[Queue, SimpleQueue] - The queue used for log message passing.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

property log_processor: LogProcessor

Return the log processor handler.

### Returns: LogProcessor - The processor instance responsible for log message handling.

class jsktoolbox.edmctool.base.BLogClient[source]

Bases: BData

BLogClass base class.

Container for logger methods.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

Data Structures

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-10

Purpose: Data container classes.

class jsktoolbox.edmctool.data.RscanData[source]

Bases: BData

Data container for username and current system.

__init__()[source]

Initialize dataset.

Return type:

None

__repr__()[source]

Return class dump.

Return type:

str

property jump_system: StarsSystem

Return the jump destination StarsSystem object.

### Returns: StarsSystem - The jump target system instance.

property stars_system: StarsSystem

Return the current StarsSystem object.

### Returns: StarsSystem - The current system instance.

property jump_range: float

Return the ship’s maximum jump range.

### Returns: float - Jump range value in light years.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

property plugin_name: str

Return the plugin name.

### Returns: str - Name of the EDMC plugin.

property version: str

Return the plugin version.

### Returns: str - Version string of the plugin.

property cmdr: str

Return the commander name.

### Returns: str - Current commander name.

property shutting_down: bool

Return the shutting down flag status.

### Returns: bool - True if the plugin is shutting down.

ED API

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-08

Purpose: Elite Dangerous journal event keys definition container.

class jsktoolbox.edmctool.ed_keys.EDKeys[source]

Bases: object

Elite dangerous Keys container class.

ABANDONED: str = 'Abandoned'
ABSOLUTE_MAGNITUDE: str = 'AbsoluteMagnitude'
ACTIVE: str = 'Active'
ACTIVE_FINE: str = 'ActiveFine'
ADDED: str = 'Added'
AFMU_REPAIRS: str = 'AfmuRepairs'
AGE_MY: str = 'Age_MY'
ALLIANCE: str = 'Alliance'
ALLOW_NOTORIOUS: str = 'AllowNotorious'
ALL_FINES: str = 'AllFines'
ALTITUDE: str = 'Altitude'
AMOUNT: str = 'Amount'
ANALYSE: str = 'Analyse'
APPLIED_TO_SQUADRON: str = 'AppliedToSquadron'
APPLY_EXPERIMENTAL_EFFECT: str = 'ApplyExperimentalEffect'
APPROACH_BODY: str = 'ApproachBody'
ASCENDING_NODE: str = 'AscendingNode'
ASTEROID_CRACKED: str = 'AsteroidCracked'
ATMOSPHERE: str = 'Atmosphere'
ATMOSPHERE_COMPOSITION: str = 'AtmosphereComposition'
ATMOSPHERE_TYPE: str = 'AtmosphereType'
AUTO_SCAN: str = 'AutoScan'
AVAILABLE_BALANCE: str = 'AvailableBalance'
AVG_PRICE_PAID: str = 'AvgPricePaid'
AWARDING_FACTION: str = 'AwardingFaction'
AWARDING_FACTION_LOCALISED: str = 'AwardingFaction_Localised'
AXIAL_TILT: str = 'AxialTilt'
BANKRUPT: str = 'Bankrupt'
BANK_ACCOUNT: str = 'Bank_Account'
BASE_VALUE: str = 'BaseValue'
BASIC: str = 'Basic'
BIO_DATA: str = 'BioData'
BLUEPRINT_ID: str = 'BlueprintID'
BLUEPRINT_NAME: str = 'BlueprintName'
BODIES: str = 'Bodies'
BODY: str = 'Body'
BODY_COUNT: str = 'BodyCount'
BODY_ID: str = 'BodyID'
BODY_NAME: str = 'BodyName'
BODY_TYPE: str = 'BodyType'
BONUS: str = 'Bonus'
BOOK_DROP_SHIP: str = 'BookDropship'
BOOST_USED: str = 'BoostUsed'
BOOST_VALUE: str = 'BoostValue'
BOUGHT_AT_MARKET: str = 'BoughtAtMarket'
BOUNTY: str = 'Bounty'
BROKER_PERCENTAGE: str = 'BrokerPercentage'
BUILD: str = 'build'
BUNDLE_ID: str = 'BundleID'
BUY_ITEM: str = 'BuyItem'
BUY_ITEM_LOCALISED: str = 'BuyItem_Localised'
BUY_PRICE: str = 'BuyPrice'
CALLSIGN: str = 'Callsign'
CANCEL_DROPSHIP: str = 'CancelDropship'
CAPTAIN: str = 'Captain'
CAP_SHIP_BOND: str = 'CapShipBond'
CARGO_CAPACITY: str = 'CargoCapacity'
CARGO_TRANSFER: str = 'CargoTransfer'
CARGO_TYPE: str = 'CargoType'
CARGO_TYPE_LOCALISED: str = 'CargoType_Localised'
CARRIER_BALANCE: str = 'CarrierBalance'
CARRIER_BANK_TRANSFER: str = 'CarrierBankTransfer'
CARRIER_BUY: str = 'CarrierBuy'
CARRIER_CREW_SERVICES: str = 'CarrierCrewServices'
CARRIER_DECOMMISSION: str = 'CarrierDecommission'
CARRIER_DEPOSIT_FUEL: str = 'CarrierDepositFuel'
CARRIER_DOCKING_ACCESS: str = 'CarrierDockingAccess'
CARRIER_DOCKING_PERMISSION: str = 'CarrierDockingPermission'
CARRIER_FINANCE: str = 'CarrierFinance'
CARRIER_ID: str = 'CarrierID'
CARRIER_JUMP: str = 'CarrierJump'
CARRIER_JUMP_CANCELLED: str = 'CarrierJumpCancelled'
CARRIER_JUMP_REQUEST: str = 'CarrierJumpRequest'
CARRIER_MODULE_PACK: str = 'CarrierModulePack'
CARRIER_NAME: str = 'CarrierName'
CARRIER_NAME_CHANGE: str = 'CarrierNameChange'
CARRIER_STATS: str = 'CarrierStats'
CARRIER_TRADE_ORDER: str = 'CarrierTradeOrder'
CATEGORY: str = 'Category'
CATEGORY_LOCALISED: str = 'Category_Localised'
CHANGE_CREW_ROLE: str = 'ChangeCrewRole'
CHANNEL: str = 'Channel'
CLASS: str = 'Class'
CLEAR_SAVED_GAME: str = 'ClearSavedGame'
CLUSTER: str = 'Cluster'
COCKPIT_BREACH: str = 'CockpitBreach'
COCKPIT_BREACHED: str = 'CockpitBreached'
CODEX_ENTRY: str = 'CodexEntry'
COLLECT_ITEMS: str = 'CollectItems'
COMBAT: str = 'Combat'
COMBAT_RANK: str = 'CombatRank'
COMMANDER: str = 'Commander'
COMMODITY: str = 'Commodity'
COMMODITY_LOCALISED: str = 'Commodity_Localised'
COMMODITY_REWARD: str = 'CommodityReward'
COMPLETE: str = 'Complete'
COMPONENTS: str = 'Components'
COMPOSITION: str = 'Composition'
CONFLICTS: str = 'Conflicts'
CONSUMABLES: str = 'Consumables'
CONTENT: str = 'Content'
CONTENT_LOCALISED: str = 'Content_Localised'
CONTINUED: str = 'Continued'
CORIOLIS: str = 'Coriolis'
CORROSION_REPAIRED: str = 'CorrosionRepaired'
COST: str = 'Cost'
COUNT: str = 'Count'
CQC: str = 'CQC'
CRAFTING: str = 'Crafting'
CREATE_SUIT_LOADOUT: str = 'CreateSuitLoadout'
CREDITS: str = 'Credits'
CREW: str = 'Crew'
CREW_ASSIGN: str = 'CrewAssign'
CREW_FIRE: str = 'CrewFire'
CREW_ID: str = 'CrewID'
CREW_LAUNCH_FIGHTER: str = 'CrewLaunchFighter'
CREW_MEMBER_JOINS: str = 'CrewMemberJoins'
CREW_MEMBER_QUITS: str = 'CrewMemberQuits'
CREW_MEMBER_ROLE_CHANGE: str = 'CrewMemberRoleChange'
CREW_NAME: str = 'CrewName'
CREW_ROLE: str = 'CrewRole'
CRIME: str = 'Crime'
CRIME_TYPE: str = 'CrimeType'
CRIME_VICTIM: str = 'CrimeVictim'
DATA: str = 'Data'
DATA_SCANNED: str = 'DataScanned'
DEPARTURE_TIME: str = 'DepartureTime'
DEPOSIT: str = 'Deposit'
DESTINATION_LOCATION: str = 'DestinationLocation'
DESTINATION_STATION: str = 'DestinationStation'
DESTINATION_SYSTEM: str = 'DestinationSystem'
DETAILED: str = 'Detailed'
DISBANDED_SQUADRON: str = 'DisbandedSquadron'
DISCOVERED: str = 'Discovered'
DISCOVERY_NUMBER: str = 'DiscoveryNumber'
DISCOVERY_SCAN: str = 'DiscoveryScan'
DISEMBARK: str = 'Disembark'
DISTANCE: str = 'Distance'
DISTANCE_FROM_ARRIVAL_LS: str = 'DistanceFromArrivalLS'
DIST_FROM_STAR_LS: str = 'DistFromStarLS'
DOCKED: str = 'Docked'
DOCKING_ACCESS: str = 'DockingAccess'
DOCKING_CANCELLED: str = 'DockingCancelled'
DOCKING_DENIED: str = 'DockingDenied'
DOCKING_GRANTED: str = 'DockingGranted'
DOCKING_REQUESTED: str = 'DockingRequested'
DOCKING_TIMEOUT: str = 'DockingTimeout'
DOCK_FIGHTER: str = 'DockFighter'
DOCK_SRV: str = 'DockSRV'
DONATED: str = 'Donated'
DONATION: str = 'Donation'
DROPSHIP_DEPLOY: str = 'DropshipDeploy'
DROP_ITEMS: str = 'DropItems'
EARTH_LIKE: str = 'EarthLike'
ECCENTRICITY: str = 'Eccentricity'
EDD_COMMODITY_PRICES: str = 'EDDCommodityPrices'
EDD_ITEM_SET: str = 'EDDItemSet'
ED_SHIPYARD: str = 'EDShipyard'
EFFICIENCY_TARGET: str = 'EfficiencyTarget'
EMBARK: str = 'Embark'
EMPIRE: str = 'Empire'
ENCODED: str = 'Encoded'
END_CREW_SESSION: str = 'EndCrewSession'
END_MARKET_ID: str = 'EndMarketID'
ENGINEER: str = 'Engineer'
ENGINEERS: str = 'Engineers'
ENGINEER_APPLY: str = 'EngineerApply'
ENGINEER_ID: str = 'EngineerID'
ENGINEER_LEGACY_CONVERT: str = 'EngineerLegacyConvert'
ENGINEER_MODIFICATIONS: str = 'EngineerModifications'
ENTRY_ID: str = 'EntryID'
ESCAPE_INTERDICTION: str = 'EscapeInterdiction'
EVENT: str = 'event'
EXOBIOLOGIST: str = 'Exobiologist'
EXOBIOLOGY: str = 'Exobiology'
EXPERIMENTAL_EFFECT: str = 'ExperimentalEffect'
EXPERIMENTAL_EFFECT_LOCALISED: str = 'ExperimentalEffect_Localised'
EXPIRY: str = 'Expiry'
EXPLORATION: str = 'Exploration'
EXPLORE: str = 'Explore'
FACTION: str = 'Faction'
FACTIONS: str = 'Factions'
FACTION_EFFECTS: str = 'FactionEffects'
FACTION_KILL_BOND: str = 'FactionKillBond'
FAILED: str = 'Failed'
FEDERATION: str = 'Federation'
FID: str = 'FID'
FIGHTER: str = 'Fighter'
FIGHTER_DESTROYED: str = 'FighterDestroyed'
FIGHTER_REBUILT: str = 'FighterRebuilt'
FILEHEADER: str = 'Fileheader'
FILENAME: str = 'Filename'
FINANCE: str = 'Finance'
FINE: str = 'Fine'
FLEETCARRIER: str = 'FLEETCARRIER'
FROM: str = 'From'
FROM_ITEM: str = 'FromItem'
FROM_ITEM_LOCALISED: str = 'FromItem_Localised'
FROM_LOCALISED: str = 'From_Localised'
FROM_SLOT: str = 'FromSlot'
FSD_JUMP: str = 'FSDJump'
FSD_TARGET: str = 'FSDTarget'
FSS_BODY_SIGNALS: str = 'FSSBodySignals'
FSS_DISCOVERY_SCAN: str = 'FSSDiscoveryScan'
FSS_SIGNAL_DISCOVERED: str = 'FSSSignalDiscovered'
FUEL_CAPACITY: str = 'FuelCapacity'
FUEL_LEVEL: str = 'FuelLevel'
FUEL_MAIN: str = 'FuelMain'
FUEL_RESERVOIR: str = 'FuelReservoir'
FUEL_SCOOP: str = 'FuelScoop'
FUEL_USED: str = 'FuelUsed'
FULLY_REPAIRED: str = 'FullyRepaired'
GAMEVERSION: str = 'gameversion'
GAME_MODE: str = 'GameMode'
GENUS: str = 'Genus'
GENUSES: str = 'Genuses'
GENUS_LOCALISED: str = 'Genus_Localised'
GEOLOGY: str = 'Geology'
GROUP: str = 'Group'
HEADING: str = 'Heading'
HEALT: str = 'Healt'
HEALTH: str = 'Health'
HEAT_DAMAGE: str = 'HeatDamage'
HEAT_WARNING: str = 'HeatWarning'
HEIGHT: str = 'Height'
HORIZONS: str = 'Horizons'
HOT: str = 'Hot'
HULL_DAMAGE: str = 'HullDamage'
HULL_HEALTH: str = 'HullHealth'
HULL_REPAIRED: str = 'HullRepaired'
HULL_VALUE: str = 'HullValue'
ID: str = 'ID'
INDEPENDENT: str = 'Independent'
INFLUENCE: str = 'Influence'
INGREDIENTS: str = 'Ingredients'
INNER_RAD: str = 'InnerRad'
INTERDICTOR: str = 'Interdictor'
INTERDICTOR_LOCALISED: str = 'Interdictor_Localised'
INVENTORY: str = 'Inventory'
INVITED_TO_SQUADRON: str = 'InvitedToSquadron'
IN_SRV: str = 'InSRV'
IS_NEW_ENTRY: str = 'IsNewEntry'
IS_PLAYER: str = 'IsPlayer'
IS_STATION: str = 'IsStation'
ITEM: str = 'Item'
ITEMS: str = 'Items'
ITEMS_COLLECTED: str = 'ItemsCollected'
ITEMS_DELIVERED: str = 'ItemsDelivered'
ITEM_LOCALISED: str = 'Item_Localised'
JET_CONE_BOOST: str = 'JetConeBoost'
JET_CONE_DAMAGE: str = 'JetConeDamage'
JOINED_SQUADRON: str = 'JoinedSquadron'
JUMP_DIST: str = 'JumpDist'
JUMP_RANGE_CURR: str = 'JumpRangeCurr'
JUMP_RANGE_MAX: str = 'JumpRangeMax'
JUMP_TYPE: str = 'JumpType'
KICK_CREW_MEMBER: str = 'KickCrewMember'
KILLER_NAME: str = 'KillerName'
KILLER_NAME_LOCALISED: str = 'KillerName_Localised'
KILLER_RANK: str = 'KillerRank'
KILLER_SHIP: str = 'KillerShip'
KILL_COUNT: str = 'KillCount'
LANDABLE: str = 'Landable'
LANDING_PAD: str = 'LandingPad'
LANDING_PADS: str = 'LandingPads'
LANGUAGE: str = 'language'
LATITUDE: str = 'Latitude'
LAUNCH_DRONE: str = 'LaunchDrone'
LAUNCH_FIGHTER: str = 'LaunchFighter'
LAUNCH_SRV: str = 'LaunchSRV'
LEAVE_BODY: str = 'LeaveBody'
LEFT_SQUADRON: str = 'LeftSquadron'
LEGAL_STATUS: str = 'LegalStatus'
LEVEL: str = 'Level'
LIFTOFF: str = 'Liftoff'
LOADOUT: str = 'Loadout'
LOADOUT_EQUIP_MODULE: str = 'LoadoutEquipModule'
LOADOUT_ID: str = 'LoadoutID'
LOADOUT_NAME: str = 'LoadoutName'
LOAN: str = 'Loan'
LOCALISED_NAME: str = 'LocalisedName'
LOCATION: str = 'Location'
LOG: str = 'Log'
LONGITUDE: str = 'Longitude'
LUMINOSITY: str = 'Luminosity'
MAIN: str = 'Main'
MANIFEST: str = 'Manifest'
MANUFACTURED: str = 'Manufactured'
MARKET: str = 'Market'
MARKET_ID: str = 'MarketID'
MASS_EM: str = 'MassEM'
MASS_E_M: str = 'MassEM'
MASS_MODULE_STORE: str = 'MassModuleStore'
MASS_MT: str = 'MassMT'
MATERIAL: str = 'Material'
MATERIALS: str = 'Materials'
MATERIALS_REWARD: str = 'MaterialsReward'
MATERIAL_DISCOVERED: str = 'MaterialDiscovered'
MATERIAL_LOCALISED: str = 'Material_Localised'
MATERIAL_TRADER_STATS: str = 'Material_Trader_Stats'
MAX_JUMP_RANGE: str = 'MaxJumpRange'
MEAN_ANOMALY: str = 'MeanAnomaly'
MERITS: str = 'Merits'
MESSAGE: str = 'Message'
MESSAGE_LOCALISED: str = 'Message_Localised'
MINING: str = 'Mining'
MISSION_ID: str = 'MissionID'
MODIFIERS: str = 'Modifiers'
MODULE: str = 'Module'
MODULES: str = 'Modules'
MODULES_VALUE: str = 'ModulesValue'
MODULE_ARRIVED: str = 'ModuleArrived'
MODULE_INFO: str = 'ModuleInfo'
MODULE_LOCALISED: str = 'Module_Localised'
MODULE_NAME: str = 'ModuleName'
MODULE_NAME_LOCALISED: str = 'ModuleName_Localised'
MODULE_PACKS: str = 'ModulePacks'
MODULE_STORE: str = 'ModuleStore'
MODULE_SWAP: str = 'ModuleSwap'
MOTHERLODE_MATERIAL: str = 'MotherlodeMaterial'
MOTHERLODE_MATERIAL_LOCALISED: str = 'MotherlodeMaterial_Localised'
MULTICREW: str = 'Multicrew'
MUSIC: str = 'Music'
MUSIC_TRACK: str = 'MusicTrack'
NAME: str = 'Name'
NAME_LOCALISED: str = 'Name_Localised'
NAV_BEACON_DETAIL: str = 'NavBeaconDetail'
NAV_BEACON_SCAN: str = 'NavBeaconScan'
NAV_ROUTE: str = 'NavRoute'
NAV_ROUTE_CLEAR: str = 'NavRouteClear'
NEAREST_DESTINATION: str = 'NearestDestination'
NEAREST_DESTINATION_LOCALISED: str = 'NearestDestination_Localised'
NEW_COMMANDER: str = 'NewCommander'
NEW_DESTINATION_STATION: str = 'NewDestinationStation'
NEW_DESTINATION_SYSTEM: str = 'NewDestinationSystem'
NEW_SHIP_ID: str = 'NewShipID'
NEW_TRAITS_DISCOVERED: str = 'NewTraitsDiscovered'
NON_BODY_COUNT: str = 'NonBodyCount'
NPC_CREW_ID: str = 'NpcCrewId'
NPC_CREW_NAME: str = 'NpcCrewName'
NPC_CREW_RANK: str = 'NpcCrewRank'
NUM_BODIES: str = 'NumBodies'
ODYSSEY: str = 'Odyssey'
OFFENDER: str = 'Offender'
OLD_DESTINATION_STATION: str = 'OldDestinationStation'
OLD_DESTINATION_SYSTEM: str = 'OldDestinationSystem'
ON: str = 'On'
ON_CRIME: str = 'OnCrime'
ON_FOOT: str = 'OnFoot'
ON_PLANET: str = 'OnPlanet'
ON_STATION: str = 'OnStation'
OPERATION: str = 'Operation'
OPTION: str = 'Option'
ORBITAL_INCLINATION: str = 'OrbitalInclination'
ORBITAL_PERIOD: str = 'OrbitalPeriod'
OTHERS: str = 'Others'
OUTER_RAD: str = 'OuterRad'
OUTFITTING: str = 'Outfitting'
OWNER_ID: str = 'OwnerID'
PACKAGE: str = 'Package'
PAID: str = 'Paid'
PARENTS: str = 'Parents'
PART: str = 'part'
PASSENGERS: str = 'Passengers'
PASSENGER_COUNT: str = 'PassengerCount'
PASSENGER_TYPE: str = 'PassengerType'
PASSENGER_VIPS: str = 'PassengerVIPs'
PASSENGER_WANTED: str = 'PassengerWanted'
PAYEE_FACTION: str = 'PayeeFaction'
PENDING_DECOMMISSION: str = 'PendingDecommission'
PERIAPSIS: str = 'Periapsis'
PILOT_NAME: str = 'PilotName'
PILOT_NAME_LOCALISED: str = 'PilotName_Localised'
PILOT_RANK: str = 'PilotRank'
PLANET: str = 'Planet'
PLANET_CLASS: str = 'PlanetClass'
PLAYER_BALANCE: str = 'PlayerBalance'
PLAYER_CONTROLLED: str = 'PlayerControlled'
PLAYER_PILOT: str = 'PlayerPilot'
POPULATION: str = 'Population'
POWER: str = 'Power'
POWERPLAY: str = 'Powerplay'
POWERPLAY_STATE: str = 'PowerplayState'
POWERPLAY_VOTE: str = 'PowerplayVote'
POWERPLAY_VOUCHER: str = 'PowerplayVoucher'
POWERS: str = 'Powers'
PRICE: str = 'Price'
PRIORITY: str = 'Priority'
PROBES_USED: str = 'ProbesUsed'
PROGRESS: str = 'Progress'
PROSPECTED_ASTEROID: str = 'ProspectedAsteroid'
PVP_KILL: str = 'PVPKill'
QUALITY: str = 'Quality'
QUANTITY: str = 'Quantity'
RADIUS: str = 'Radius'
RANK: str = 'Rank'
RANK_COMBAT: str = 'RankCombat'
RAW: str = 'Raw'
REASON: str = 'Reason'
REBOOT_REPAIR: str = 'RebootRepair'
REBUY: str = 'Rebuy'
RECEIVED: str = 'Received'
RECEIVE_TEXT: str = 'ReceiveText'
REGION: str = 'Region'
REGION_LOCALISED: str = 'Region_Localised'
REMAINING: str = 'Remaining'
REMAINING_JUMPS_IN_ROUTE: str = 'RemainingJumpsInRoute'
REMOVED: str = 'Removed'
REPAIR_DRONE: str = 'RepairDrone'
REPUTATION: str = 'Reputation'
RESERVE: str = 'Reserve'
RESERVE_BALANCE: str = 'ReserveBalance'
RESERVE_LEVEL: str = 'ReserveLevel'
RESERVE_PERCENT: str = 'ReservePercent'
RESERVOIR_REPLENISHED: str = 'ReservoirReplenished'
RETRIEVED_ITEM: str = 'RetrievedItem'
RETRIEVED_ITEM_LOCALISED: str = 'RetrievedItem_Localised'
REWARD: str = 'Reward'
REWARDS: str = 'Rewards'
RING: str = 'Ring'
RINGS: str = 'Rings'
RING_CLASS: str = 'RingClass'
ROCKY: str = 'Rocky'
ROLE: str = 'Role'
ROTATION_PERIOD: str = 'RotationPeriod'
SAA_SCAN_COMPLETE: str = 'SAAScanComplete'
SAA_SIGNALS_FOUND: str = 'SAASignalsFound'
SAMPLE: str = 'Sample'
SCAN: str = 'Scan'
SCANNED: str = 'Scanned'
SCAN_BARY_CENTRE: str = 'ScanBaryCentre'
SCAN_ORGANIC: str = 'ScanOrganic'
SCAN_STAGE: str = 'ScanStage'
SCAN_TYPE: str = 'ScanType'
SCOOPED: str = 'Scooped'
SCREENSHOT: str = 'Screenshot'
SEARCH_AND_RESCUE: str = 'Search_And_Rescue'
SELL_ITEM: str = 'SellItem'
SELL_ITEM_LOCALISED: str = 'SellItem_Localised'
SELL_OLD_SHIP: str = 'SellOldShip'
SELL_PRICE: str = 'SellPrice'
SELL_SHIP_ID: str = 'SellShipID'
SEMI_MAJOR_AXIS: str = 'SemiMajorAxis'
SEND_TEXT: str = 'SendText'
SENT: str = 'Sent'
SERVER_ID: str = 'ServerId'
SHARED_BOOKMARK_TO_SQUADRON: str = 'SharedBookmarkToSquadron'
SHARED_WITH_OTHERS: str = 'SharedWithOthers'
SHIELDS_UP: str = 'ShieldsUp'
SHIELD_HEALTH: str = 'ShieldHealth'
SHIELD_STATE: str = 'ShieldState'
SHIP: str = 'Ship'
SHIPS_HERE: str = 'ShipsHere'
SHIPS_REMOTE: str = 'ShipsRemote'
SHIPYARD: str = 'Shipyard'
SHIPYARD_NEW: str = 'ShipyardNew'
SHIP_ARRIVED: str = 'ShipArrived'
SHIP_ID: str = 'ShipID'
SHIP_IDENT: str = 'ShipIdent'
SHIP_LOCALISED: str = 'Ship_Localised'
SHIP_LOCKER: str = 'ShipLocker'
SHIP_MARKET_ID: str = 'ShipMarketID'
SHIP_NAME: str = 'ShipName'
SHIP_PACKS: str = 'ShipPacks'
SHIP_PRICE: str = 'ShipPrice'
SHIP_TARGETED: str = 'ShipTargeted'
SHIP_TYPE: str = 'ShipType'
SHIP_TYPE_LOCALISED: str = 'ShipType_Localised'
SHUTDOWN: str = 'Shutdown'
SHUT_DOWN: str = 'ShutDown'
SIGNALS: str = 'Signals'
SIGNAL_NAME: str = 'SignalName'
SIGNAL_NAME_LOCALISED: str = 'SignalName_Localised'
SIGNAL_TYPE: str = 'SignalType'
SLOT: str = 'Slot'
SLOT_NAME: str = 'SlotName'
SMUGGLING: str = 'Smuggling'
SOLDIER: str = 'Soldier'
SPACE_USAGE: str = 'SpaceUsage'
SPAWNING_FACTION: str = 'SpawningFaction'
SPAWNING_FACTION_LOCALISED: str = 'SpawningFaction_Localised'
SPAWNING_STATE: str = 'SpawningState'
SPAWNING_STATE_LOCALISED: str = 'SpawningState_Localised'
SPECIES: str = 'Species'
SPECIES_LOCALISED: str = 'Species_Localised'
SQUADRON_CREATED: str = 'SquadronCreated'
SQUADRON_ID: str = 'SquadronID'
SQUADRON_STARTUP: str = 'SquadronStartup'
SRV: str = 'SRV'
SRV_DESTROYED: str = 'SRVDestroyed'
SRV_TYPE: str = 'SRVType'
SRV_TYPE_LOCALISED: str = 'SRVType_Localised'
STAR: str = 'Star'
START_JUMP: str = 'StartJump'
START_LANDED: str = 'StartLanded'
START_MARKET_ID: str = 'StartMarketID'
STAR_CLASS: str = 'StarClass'
STAR_POS: str = 'StarPos'
STAR_SYSTEM: str = 'StarSystem'
STAR_TYPE: str = 'StarType'
STATION_ALLEGIANCE: str = 'StationAllegiance'
STATION_ECONOMIES: str = 'StationEconomies'
STATION_ECONOMY: str = 'StationEconomy'
STATION_ECONOMY_LOCALISED: str = 'StationEconomy_Localised'
STATION_FACTION: str = 'StationFaction'
STATION_GOVERNMENT: str = 'StationGovernment'
STATION_GOVERNMENT_LOCALISED: str = 'StationGovernment_Localised'
STATION_NAME: str = 'StationName'
STATION_SERVICES: str = 'StationServices'
STATION_STATE: str = 'StationState'
STATION_TYPE: str = 'StationType'
STATUS: str = 'Status'
STELLAR_MASS: str = 'StellarMass'
STOLEN: str = 'Stolen'
STORAGE_SLOT: str = 'StorageSlot'
STORED_ITEM: str = 'StoredItem'
STORED_ITEM_LOCALISED: str = 'StoredItem_Localised'
STORED_MODULES: str = 'StoredModules'
STORE_OLD_SHIP: str = 'StoreOldShip'
STORE_SHIP_ID: str = 'StoreShipID'
SUBCLASS: str = 'Subclass'
SUBMITTED: str = 'Submitted'
SUBSYSTEM: str = 'Subsystem'
SUBSYSTEM_HEALTH: str = 'SubsystemHealth'
SUBSYSTEM_LOCALISED: str = 'Subsystem_Localised'
SUB_CATEGORY: str = 'SubCategory'
SUB_CATEGORY_LOCALISED: str = 'SubCategory_Localised'
SUIT_ID: str = 'SuitID'
SUIT_LOADOUT: str = 'SuitLoadout'
SUIT_MODS: str = 'SuitMods'
SUIT_MODULE_ID: str = 'SuitModuleID'
SUIT_NAME: str = 'SuitName'
SUIT_NAME_LOCALISED: str = 'SuitName_Localised'
SUPERCRUISE_ENTRY: str = 'SupercruiseEntry'
SUPERCRUISE_EXIT: str = 'SupercruiseExit'
SURFACE_GRAVITY: str = 'SurfaceGravity'
SURFACE_PRESSURE: str = 'SurfacePressure'
SURFACE_TEMPERATURE: str = 'SurfaceTemperature'
SWAP_OUT_ITEM: str = 'SwapOutItem'
SWAP_OUT_ITEM_LOCALISED: str = 'SwapOutItem_Localised'
SWITCH_SUIT_LOADOUT: str = 'SwitchSuitLoadout'
SYSTEM: str = 'System'
SYSTEMS: str = 'Systems'
SYSTEMS_SHUTDOWN: str = 'SystemsShutdown'
SYSTEM_ADDRESS: str = 'SystemAddress'
SYSTEM_ALLEGIANCE: str = 'SystemAllegiance'
SYSTEM_BODY: str = 'SystemBody'
SYSTEM_BODY_COUNT: str = 'SystemBodyCount'
SYSTEM_COORDS: str = 'SystemCoords'
SYSTEM_COORDS_LOCKED: str = 'SystemCoordsLocked'
SYSTEM_DISTANCE: str = 'SystemDistance'
SYSTEM_ECONOMY: str = 'SystemEconomy'
SYSTEM_ECONOMY_LOCALISED: str = 'SystemEconomy_Localised'
SYSTEM_FACTION: str = 'SystemFaction'
SYSTEM_GOVERNMENT: str = 'SystemGovernment'
SYSTEM_GOVERNMENT_LOCALISED: str = 'SystemGovernment_Localised'
SYSTEM_NAME: str = 'SystemName'
SYSTEM_SECOND_ECONOMY: str = 'SystemSecondEconomy'
SYSTEM_SECOND_ECONOMY_LOCALISED: str = 'SystemSecondEconomy_Localised'
SYSTEM_SECURITY: str = 'SystemSecurity'
SYSTEM_SECURITY_LOCALISED: str = 'SystemSecurity_Localised'
TARGET: str = 'Target'
TARGET_FACTION: str = 'TargetFaction'
TARGET_LOCALISED: str = 'Target_Localised'
TARGET_LOCKED: str = 'TargetLocked'
TARGET_TYPE: str = 'TargetType'
TARGET_TYPE_LOCALISED: str = 'TargetType_Localised'
TAXI: str = 'Taxi'
TAX_RATE_REARM: str = 'TaxRate_rearm'
TAX_RATE_REFUEL: str = 'TaxRate_refuel'
TAX_RATE_REPAIR: str = 'TaxRate_repair'
TELEPRESENCE: str = 'Telepresence'
TERRAFORM_STATE: str = 'TerraformState'
TG_ENCOUNTERS: str = 'TG_ENCOUNTERS'
THREAT: str = 'Threat'
THREAT_LEVEL: str = 'ThreatLevel'
TIDAL_LOCK: str = 'TidalLock'
TIMESTAMP: str = 'timestamp'
TIME_PLEDGED: str = 'TimePledged'
TIME_REMAINING: str = 'TimeRemaining'
TO: str = 'To'
TOTAL: str = 'Total'
TOTAL_COST: str = 'TotalCost'
TOTAL_EARNINGS: str = 'TotalEarnings'
TOTAL_ITEMS_TO_DELIVER: str = 'TotalItemsToDeliver'
TOTAL_QUANTITY: str = 'TotalQuantity'
TOTAL_REWARD: str = 'TotalReward'
TOTAL_SALE: str = 'TotalSale'
TOUCHDOWN: str = 'Touchdown'
TO_ITEM: str = 'ToItem'
TO_ITEM_LOCALISED: str = 'ToItem_Localised'
TO_SLOT: str = 'ToSlot'
TRADE: str = 'Trade'
TRADER_TYPE: str = 'TraderType'
TRADING: str = 'Trading'
TRAITS: str = 'Traits'
TRANSFER_COST: str = 'TransferCost'
TRANSFER_PRICE: str = 'TransferPrice'
TRANSFER_TIME: str = 'TransferTime'
TYPE: str = 'Type'
TYPE_LOCALISED: str = 'Type_Localised'
UNDER_ATTACK: str = 'UnderAttack'
UNLADEN_MASS: str = 'UnladenMass'
UPDATE_TYPE: str = 'UpdateType'
USER_SHIP_ID: str = 'UserShipId'
USER_SHIP_NAME: str = 'UserShipName'
USS_THREAT: str = 'USSThreat'
USS_TYPE: str = 'USSType'
USS_TYPE_LOCALISED: str = 'USSType_Localised'
VALUE: str = 'Value'
VARIANT: str = 'Variant'
VARIANT_LOCALISED: str = 'Variant_Localised'
VEHICLE_SWITCH: str = 'VehicleSwitch'
VESSEL: str = 'Vessel'
VICTIM: str = 'Victim'
VICTIM_FACTION: str = 'VictimFaction'
VICTIM_FACTION_LOCALISED: str = 'VictimFaction_Localised'
VICTIM_LOCALISED: str = 'Victim_Localised'
VOLCANISM: str = 'Volcanism'
VOTES: str = 'Votes'
VOUCHER_AMOUNT: str = 'VoucherAmount'
WANTED: str = 'Wanted'
WAS_DISCOVERED: str = 'WasDiscovered'
WAS_MAPPED: str = 'WasMapped'
WEAPON_MODS: str = 'WeaponMods'
WIDTH: str = 'Width'
WING: str = 'Wing'
WING_ADD: str = 'WingAdd'
WING_INVITE: str = 'WingInvite'
WING_JOIN: str = 'WingJoin'
WING_LEAVE: str = 'WingLeave'

EDSM Integration

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-08

Purpose: EDSM API client classes.

class jsktoolbox.edmctool.edsm.Url[source]

Bases: BData

Url.

Class for serving HTTP/HTTPS requests.

__init__()[source]

Create Url helper object.

Return type:

None

property options: str

Get url options string.

### Returns: str - Formatted URL parameter string.

bodies_url(s_system)[source]

Returns proper API url for getting bodies information data.

### Arguments: * s_system: StarsSystem - System object containing name or address.

### Returns: str - Formatted URL for bodies query.

### Raises: * TypeError: If s_system is not a StarsSystem instance.

Parameters:

s_system (StarsSystem)

Return type:

str

system_url(s_system)[source]

Returns proper API url for getting system data.

### Arguments: * s_system: StarsSystem - System object containing name.

### Returns: str - Formatted URL for system query.

### Raises: * TypeError: If s_system is not a StarsSystem instance.

Parameters:

s_system (StarsSystem)

Return type:

str

radius_url(s_system, radius)[source]

Returns proper API url for getting systems data in radius.

### Arguments: * s_system: StarsSystem - System object containing name. * radius: int - Search radius in light years (clamped to 5-100).

### Returns: str - Formatted URL for sphere-systems query.

### Raises: * TypeError: If s_system is not a StarsSystem instance.

Parameters:
Return type:

str

cube_url(s_system, size)[source]

Returns proper API url for getting systems data in cube.

### Arguments: * s_system: StarsSystem - System object containing name. * size: int - Cube size in light years (clamped to 10-200).

### Returns: str - Formatted URL for cube-systems query.

### Raises: * TypeError: If s_system is not a StarsSystem instance.

Parameters:
Return type:

str

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

system_query(s_system)[source]

Returns result of query for system data.

### Arguments: * s_system: StarsSystem - System object containing name.

### Returns: Optional[Dict] - System data from EDSM API or None on failure.

### Raises: * TypeError: If s_system is not a StarsSystem instance.

Parameters:

s_system (StarsSystem)

Return type:

Dict | None

url_query(url)[source]

Returns result of query for url.

### Arguments: * url: str - Full API URL to query.

### Returns: Union[List[Dict[str, Any]], Dict[str, Any]] - Response data from EDSM API or empty list on failure.

Parameters:

url (str)

Return type:

List[Dict[str, Any]] | Dict[str, Any]

EDSM Keys

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-08

Purpose: EDSM API response keys definition container.

class jsktoolbox.edmctool.edsm_keys.EdsmKeys[source]

Bases: object

EDSM API Keys container class.

ABSOLUTE_MAGNITUDE: str = 'absoluteMagnitude'
AGE: str = 'age'
ALLEGIANCE: str = 'allegiance'
API_KEY: str = 'apiKey'
ARG_OF_PERIAPSIS: str = 'argOfPeriapsis'
AXIAL_TILT: str = 'axialTilt'
BODIES: str = 'bodies'
BODY_COUNT: str = 'bodyCount'
BODY_ID: str = 'bodyId'
BODY_NAME: str = 'bodyName'
BREAKDOWN: str = 'breakdown'
CARGO: str = 'cargo'
COMMANDER_NAME: str = 'commanderName'
COMMENT: str = 'comment'
CONTROLLING_FACTION: str = 'controllingFaction'
COORDS: str = 'coords'
COORDS_LOCKED: str = 'coordsLocked'
CREDITS: str = 'credits'
DATA: str = 'data'
DATE: str = 'date'
DAY: str = 'day'
DEATHS: str = 'deaths'
DISTANCE: str = 'distance'
DISTANCE_TO_ARRIVAL: str = 'distanceToArrival'
DUPLICATES: str = 'duplicates'
ECONOMY: str = 'economy'
END_DATE_TIME: str = 'endDateTime'
ESTIMATED_VALUE: str = 'estimatedValue'
ESTIMATED_VALUE_MAPPED: str = 'estimatedValueMapped'
FACTION: str = 'faction'
FACTION_STATE: str = 'factionState'
FIRST_DISCOVER: str = 'firstDiscover'
FROM_GAME_BUILD: str = 'fromGameBuild'
FROM_GAME_VERSION: str = 'fromGameVersion'
FROM_SOFTWARE: str = 'fromSoftware'
FROM_SOFTWARE_VERSION: str = 'fromSoftwareVersion'
GOVERNMENT: str = 'government'
HAVE_MARKET: str = 'haveMarket'
HAVE_SHIPYARD: str = 'haveShipyard'
HIDDEN_AT: str = 'hidden_at'
ID: str = 'id'
ID64: str = 'id64'
INCLUDE_HIDDEN: str = 'includeHidden'
INFLUENCE: str = 'influence'
INFLUENCE_HISTORY: str = 'influenceHistory'
INFORMATION: str = 'information'
INNER_RADIUS: str = 'innerRadius'
IS_MAIN_STAR: str = 'isMainStar'
IS_PLAYER: str = 'isPlayer'
IS_SCOOPABLE: str = 'isScoopable'
LAST_UPDATE: str = 'lastUpdate'
LOGS: str = 'logs'
LUMINOSITY: str = 'luminosity'
MARKET_ID: str = 'marketId'
MATERIALS: str = 'materials'
MERGED_TO: str = 'mergedTo'
MESSAGE: str = 'message'
MIN_RADIUS: str = 'minRadius'
MSG: str = 'msg'
MSG_NUM: str = 'msgnum'
NAME: str = 'name'
ONLY_KNOWN_COORDINATES: str = 'onlyKnownCoordinates'
ONLY_UNKNOWN_COORDINATES: str = 'onlyUnknownCoordinates'
ORBITAL_ECCENTRICITY: str = 'orbitalEccentricity'
ORBITAL_INCLINATION: str = 'orbitalInclination'
ORBITAL_PERIOD: str = 'orbitalPeriod'
OUTER_RADIUS: str = 'outerRadius'
PENDING_STATES: str = 'pendingStates'
PERIOD: str = 'period'
PERMIT_NAME: str = 'permitName'
POPULATION: str = 'population'
PROGRESS: str = 'progress'
QTY: str = 'qty'
RADIUS: str = 'radius'
RANKS: str = 'ranks'
RANKS_VERBOSE: str = 'ranksVerbose'
RECOVERING_STATES: str = 'recoveringStates'
REQUIRE_PERMIT: str = 'requirePermit'
RINGS: str = 'rings'
ROTATIONAL_PERIOD: str = 'rotationalPeriod'
ROTATIONAL_PERIOD_TIDALLY_LOCKED: str = 'rotationalPeriodTidallyLocked'
SECURITY: str = 'security'
SEMI_MAJOR_AXIS: str = 'semiMajorAxis'
SHIP_ID: str = 'shipId'
SHOW_COORDINATES: str = 'showCoordinates'
SHOW_HISTORY: str = 'showHistory'
SHOW_ID: str = 'showId'
SHOW_INFORMATION: str = 'showInformation'
SHOW_PERMIT: str = 'showPermit'
SHOW_PRIMARY_STAR: str = 'showPrimaryStar'
SIZE: str = 'size'
SOLAR_MASSES: str = 'solarMasses'
SOLAR_RADIUS: str = 'solarRadius'
START_DATE_TIME: str = 'startDateTime'
STATE: str = 'state'
STATE_HISTORY: str = 'stateHistory'
STATIONS: str = 'stations'
STATION_NAME: str = 'stationName'
STATUS: str = 'status'
SUB_TYPE: str = 'subType'
SURFACE_TEMPERATURE: str = 'surfaceTemperature'
SYSTEM: str = 'system'
SYSTEM_ID: str = 'systemId'
SYSTEM_NAME: str = 'systemName'
TOTAL: str = 'total'
TRAFFIC: str = 'traffic'
TREND: str = 'trend'
TYPE: str = 'type'
URL: str = 'url'
VALUABLE_BODIES: str = 'valuableBodies'
VALUE_MAX: str = 'valueMax'
WEEK: str = 'week'
X: str = 'x'
Y: str = 'y'
Z: str = 'z'

Logging

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-07

Purpose: EDMC plugins individual logging subsystem classes.

class jsktoolbox.edmctool.logs.Log(level)[source]

Bases: BData

Create Log container class.

Parameters:

level (int)

__init__(level)[source]

Class constructor.

### Arguments: * level: int - Logging level for this log instance.

Parameters:

level (int)

Return type:

None

property loglevel: int

Return loglevel.

### Returns: int - The configured log level.

property log: List[str]

Get list of logs.

### Returns: List[str] - List of log messages.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.logs.LogProcessor(name, logs_dir=None, max_bytes=100000, backup_count=5)[source]

Bases: BData

Log processor access API.

Parameters:
  • name (str)

  • logs_dir (str | None)

  • max_bytes (int)

  • backup_count (int)

__init__(name, logs_dir=None, max_bytes=100000, backup_count=5)[source]

Create instance class object for processing single message.

### Arguments: * name: str - Name of the application or logger. * logs_dir: Optional[str] - Directory path for log files. Defaults to tmpdir if not provided. * max_bytes: int - Maximum size of log file in bytes before rotation. Defaults to 100000. * backup_count: int - Number of backup log files to keep. Defaults to 5.

Parameters:
  • name (str)

  • logs_dir (str | None)

  • max_bytes (int)

  • backup_count (int)

Return type:

None

__del__()[source]

Destroy log instance.

Return type:

None

close()[source]

Close log subsystem.

Return type:

None

send(message)[source]

Send single message to log engine.

### Arguments: * message: Log - Log object containing messages and log level.

### Raises: * TypeError: Provided argument is not a Log instance.

Parameters:

message (Log)

Return type:

None

property loglevel: int

Property that returns loglevel.

### Returns: int - The configured log level.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.logs.LogClient(queue)[source]

Bases: BData

Log client class API.

Parameters:

queue (Queue | SimpleQueue)

__init__(queue)[source]

Create instance class object.

### Arguments: * queue: Union[Queue, SimpleQueue] - Queue object for sending log messages.

Parameters:

queue (Queue | SimpleQueue)

Return type:

None

property queue: Queue | SimpleQueue

Give me queue object.

### Returns: Union[Queue, SimpleQueue] - The queue object for log messages.

property critical: str

Property that returns nothing.

### Returns: str - Empty string.

property debug: str

Property that returns nothing.

### Returns: str - Empty string.

property error: str

Property that returns nothing.

### Returns: str - Empty string.

property info: str

Property that returns nothing.

### Returns: str - Empty string.

property warning: str

Property that returns nothing.

### Returns: str - Empty string.

property notset: str

Property that returns nothing.

### Returns: str - Empty string.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.logs.LogLevels[source]

Bases: NoDynamicAttributes

Log levels keys.

This is a container class with properties that return the proper logging levels defined in the logging module.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

__init__()[source]

Create Log instance.

Return type:

None

get(level)[source]

Get int log level.

Parameters:

level (int | str)

Return type:

int | None

has_key(level)[source]

Check, if level is in proper keys.

### Returns: bool - True if level is valid, False otherwise.

Parameters:

level (int | str)

Return type:

bool

property info: int

Return info level.

### Returns: int - The INFO log level constant.

property debug: int

Return debug level.

### Returns: int - The DEBUG log level constant.

property warning: int

Return warning level.

### Returns: int - The WARNING log level constant.

property error: int

Return error level.

### Returns: int - The ERROR log level constant.

property critical: int

Return critical level.

### Returns: int - The CRITICAL log level constant.

property notset: int

Return notset level.

### Returns: int - The NOTSET log level constant.

Math Utilities

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-10

Purpose: Mathematical algorithms for route optimization in Elite Dangerous.

class jsktoolbox.edmctool.math.IAlg[source]

Bases: ABC

Interface for algorithm class .

abstract run()[source]

Run the work.

Return type:

None

abstract debug(currentframe, message)[source]

Debug formatter for logger.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

abstract property get_final: list

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

abstract property final_distance: float

Return final distance.

### Returns: float - The total distance of the final route.

class jsktoolbox.edmctool.math.Euclid(queue, r_data)[source]

Bases: BLogClient

Euclid.

A class that calculates the length of a vector in Cartesian space.

Parameters:
  • queue (Union[Queue, SimpleQueue])

  • r_data (RscanData)

__init__(queue, r_data)[source]

Create class object.

### Arguments: * queue: Union[Queue, SimpleQueue] - Queue for communication and logging. * r_data: RscanData - Route scan data container.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

benchmark()[source]

Do benchmark test.

Compare the computational efficiency of functions for real data and choose the right priority of their use.

Return type:

None

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

distance(point_1, point_2)[source]

Find the first working algorithm and do the calculations.

Parameters:
Return type:

float

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.math.AlgAStar(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Bases: IAlg, BLogClient

A* pathfinding algorithm implementation for route optimization.

Parameters:
__init__(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Initialize A* pathfinding algorithm.

Sets up the A* algorithm for finding optimal routes between star systems considering jump range constraints and using Euclidean distance calculations.

### Arguments: * start: StarsSystem - Starting point for pathfinding. * systems: List[StarsSystem] - List of available star systems to navigate through. * jump_range: int - Maximum jump distance allowed between systems. * log_queue: Optional[Union[Queue, SimpleQueue]] - Queue for logging operations. * euclid_alg: Euclid - Euclidean distance calculation algorithm instance. * plugin_name: str - Name of the plugin using this algorithm.

### Raises: * TypeError: If log_queue is not Queue or SimpleQueue type. * TypeError: If euclid_alg is not Euclid type. * TypeError: If jump_range is not int type. * TypeError: If start is not StarsSystem type. * TypeError: If systems is not list type.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

run()[source]

Greedy path finder honoring jump range constraints.

Return type:

None

property final_distance: float

Calculate the total distance of the final route.

### Returns: float - Total distance in light years, or 0.0 if no route found.

property get_final: List[StarsSystem]

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.math.AlgTsp(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Bases: IAlg, BLogClient

Travelling salesman problem.

Parameters:
__init__(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Construct instance object.

### Arguments: * start: StarsSystem - Starting position object. * systems: List[StarsSystem] - List of points of interest to visit. * jump_range: int - Maximum jump range in light years. * log_queue: Optional[Union[Queue, SimpleQueue]] - Queue for LogClient communication. * euclid_alg: Euclid - Initialized Euclidean distance calculation object. * plugin_name: str - Name of the plugin for debug logging.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

run()[source]

Run algorithm.

Return type:

None

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

property final_distance: float

Calculate the total distance of the final route.

### Returns: float - Total distance in light years, or 0.0 if no route found.

property get_final: List[StarsSystem]

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.math.AlgGeneric(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Bases: IAlg, BLogClient

Generic optimization algorithm for route planning.

Parameters:
__init__(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Construct instance object.

### Arguments: * start: StarsSystem - Starting position object. * systems: List[StarsSystem] - List of points of interest to visit. * jump_range: int - Maximum jump range in light years. * log_queue: Optional[Union[Queue, SimpleQueue]] - Queue for LogClient communication. * euclid_alg: Euclid - Initialized Euclidean distance calculation object. * plugin_name: str - Name of the plugin for debug logging.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

run()[source]

Algorytm Genetyczny wyszukujący najkrótszą ścieżkę od punktu start, poprzez punkty z listy systems przy założeniach:

  • boki grafu o długości przekraczającej jump_range są wykluczone,

  • algorytm ma przejść przez jak największą liczbę punktów,

  • każdy punkt odwiedzany jest tylko raz,

  • wynikowa lista punktów bez punktu startowego umieszczana jest w self.__final

Return type:

None

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

property final_distance: float

Calculate the total distance of the final route.

### Returns: float - Total distance in light years, or 0.0 if no route found.

property get_final: List[StarsSystem]

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.math.AlgGenetic(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Bases: IAlg, BLogClient

Genetic algorithm solving the problem of finding the best path.

Parameters:
__init__(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Construct instance object.

### Arguments: * start: StarsSystem - Starting position object. * systems: List[StarsSystem] - List of points of interest to visit. * jump_range: int - Maximum jump range in light years. * log_queue: Optional[Union[Queue, SimpleQueue]] - Queue for LogClient communication. * euclid_alg: Euclid - Initialized Euclidean distance calculation object. * plugin_name: str - Name of the plugin for debug logging.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

run()[source]

Run algorithm.

Return type:

None

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

property final_distance: float

Calculate the total distance of the final route.

### Returns: float - Total distance in light years, or 0.0 if no route found.

property get_final: List[StarsSystem]

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.math.AlgGenetic2(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Bases: IAlg, BLogClient

Genetic algorithm implementation (version 2) for route optimization.

Parameters:
__init__(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Construct instance object.

### Arguments: * start: StarsSystem - Starting position object. * systems: List[StarsSystem] - List of points of interest to visit. * jump_range: int - Maximum jump range in light years. * log_queue: Optional[Union[Queue, SimpleQueue]] - Queue for LogClient communication. * euclid_alg: Euclid - Initialized Euclidean distance calculation object. * plugin_name: str - Name of the plugin for debug logging.

Parameters:
Return type:

None

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

run()[source]

Return the best route found after evolution.

Return type:

None

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

property final_distance: float

Calculate the total distance of the final route.

### Returns: float - Total distance in light years, or 0.0 if no route found.

property get_final: List[StarsSystem]

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

class jsktoolbox.edmctool.math.AlgSimulatedAnnealing(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Bases: IAlg, BLogClient

Simulated annealing algorithm for finding optimal routes.

Parameters:
__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

__init__(start, systems, jump_range, log_queue, euclid_alg, plugin_name)[source]

Construct instance object.

### Arguments: * start: StarsSystem - Starting position object. * systems: List[StarsSystem] - List of points of interest to visit. * jump_range: int - Maximum jump range in light years. * log_queue: Optional[Union[Queue, SimpleQueue]] - Queue for LogClient communication. * euclid_alg: Euclid - Initialized Euclidean distance calculation object. * plugin_name: str - Name of the plugin for debug logging.

Parameters:
Return type:

None

property logger: LogClient

Return the logger client handler.

### Returns: LogClient - The client interface for logging operations.

calculate_total_distance(path)[source]

Calculate the total distance of the path, starting from the start point.

Parameters:

path (List[StarsSystem])

Return type:

float

accept_solution(current_distance, new_distance, temperature)[source]

Decide whether to accept the new solution based on the current temperature.

Parameters:
Return type:

bool

run()[source]

Perform the Simulated Annealing optimization.

Return type:

None

debug(currentframe, message='')[source]

Build debug message.

Parameters:
  • currentframe (FrameType | None)

  • message (str)

Return type:

None

property final_distance: float

Calculate the total distance of the final route.

### Returns: float - Total distance in light years, or 0.0 if no route found.

property get_final: List[StarsSystem]

Return final data.

### Returns: List[StarsSystem] - List of star systems in the final route.

Stars Module

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-07

Purpose: StarsSystem container.

class jsktoolbox.edmctool.stars.StarsSystem(name=None, address=None, star_pos=None)[source]

Bases: BData

StarsSystem container class.

Parameters:
  • name (str | None)

  • address (int | None)

  • star_pos (List | None)

__init__(name=None, address=None, star_pos=None)[source]

Create Star System object.

### Arguments: * name: Optional[str] - Name of the star system. * address: Optional[int] - System address identifier. * star_pos: Optional[List] - Position coordinates of the star.

Parameters:
  • name (str | None)

  • address (int | None)

  • star_pos (List | None)

Return type:

None

__repr__()[source]

Give me class dump.

Return type:

str

property address: int | None

Returns address of the star system.

### Returns: Optional[int] - The system address, or None if not set.

property data: Dict

Returns data container.

This is dictionary object for storing various elements.

### Returns: Dict - Dictionary containing system data.

property name: str | None

Returns name of the star system.

### Returns: Optional[str] - The system name, or None if not set.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

property pos_x: float | int | None

Returns pos_x of the star system.

### Returns: Optional[Union[float, int]] - X coordinate value, or None if not set.

property pos_y: float | int | None

Returns pos_y of the star system.

### Returns: Optional[Union[float, int]] - Y coordinate value, or None if not set.

property pos_z: float | int | None

Returns pos_z of the star system.

### Returns: Optional[Union[float, int]] - Z coordinate value, or None if not set.

property star_class: str

Returns star class string.

### Returns: str - Star classification identifier.

property star_pos: List

Returns the star position list.

### Returns: List - List containing [pos_x, pos_y, pos_z] coordinates.

update_from_edsm(data)[source]

Update records from given EDSM Api dict.

### Arguments: * data: Dict - Dictionary containing EDSM API response data.

Parameters:

data (Dict)

Return type:

None

System Module

Author: Jacek ‘Szumak’ Kotlarski –<szumak@virthost.pl> Created: 2024-10-07

Purpose: EDMC plugins system classes.

class jsktoolbox.edmctool.system.Directory[source]

Bases: BData

Container class to store the directory path.

is_directory(path_string)[source]

Check if the given string is a directory.

### Arguments: * path_string: str - Path string to verify.

### Returns: bool - True when path exists and is a directory, False otherwise.

Parameters:

path_string (str)

Return type:

bool

property dir: str

Property that returns directory string.

### Returns: str - The configured directory path.

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

class jsktoolbox.edmctool.system.EnvLocal[source]

Bases: Env

Environmental class.

__init__()[source]

Initialize Env class.

Return type:

None

check_dir(directory)[source]

Check if dir exists, return dir or else HOME.

### Arguments: * directory: str - Directory path to verify.

### Returns: str - Validated directory path or home directory when invalid.

Parameters:

directory (str)

Return type:

str

__setattr__(name, value)

Prevent dynamic attribute assignment on instances.

### Raises: * AttributeError: Attribute not previously declared.

Parameters:
Return type:

None

property home: str

Return the detected home directory path.

### Returns: str - The path to the detected home directory.

property is_64bits: bool

Return True when the interpreter runs in 64-bit mode.

### Returns: bool - True if running in 64-bit mode, False otherwise.

os_arch()

Return the operating system architecture description.

### Returns: str - Human-readable architecture string (e.g. 64-bit).

Return type:

str

property plugin_dir: str

Return plugin dir path.

### Returns: str - The plugin directory path.

property tmpdir: str

Return the detected temporary directory path.

### Returns: str - The path to the detected temporary directory.

property username: str

Return the effective login name if available.

### Returns: str - The effective login name, or empty string if not available.