Skip to content
Anton Vorobyov edited this page Mar 18, 2015 · 10 revisions

Two core objects you will be dealing with the most often are Fits and Holders.

Holder

Initially this object was called MutableAttributeHolder, now reduced to just Holder. This class makes use of multiple Eos facilities to calculate modified item attributes, update them when necessary and expose to user. You will not be using this class directly - instead, all specific classes like Drone or Skill will be using it as parent. All these specific end-user objects may be referred to as "holders" throughout the doc pages and code.

Following holders are available:

  • Booster
  • Character
  • Charge
  • Drone
  • EffectBeacon
  • Implant
  • ModuleHigh
  • ModuleMed
  • ModuleLow
  • Rig
  • Ship
  • Skill
  • Stance
  • Subsystem

Fit

Fit serves as container for all holders, exposes several high-level methods to the users (e.g. fit validation and stats). Eos' fit model is, most likely, slightly different from what you expect: almost all holders are stored directly on the fit (with the only exception of charges which are stored on modules). It means, that when you change ship on fit - only ship will be changed, everything else (including modules, rigs, subsystems) will be kept on fit. Overall fit structure looks like this:

  • .character (direct)
  • .skills (restricted set)
  • .implants (set)
  • .boosters (set)
  • .ship (direct)
  • .stance (direct)
  • .subsystems (set)
  • .modules.high (list)
  • .modules.med (list)
  • .modules.low (list)
  • .rigs (set)
  • .drones (set)
  • .effect_beacon (direct)

Source

One important thing to remember is that holders are 'hollow' by their nature - they carry just typeIDs of items they represent, and some holder-specific info: states for modules, levels for skills, etc. Fit and holders cannot provide any actual functionality (like calculating attributes of any item or exposing ship stats) without knowing some data about actual EVE objects like base item attributes: if you attempt to access that functionality, it will either fail with NoSourceError or will return None.

To fix it, add at least one source to SourceManager and assign source to fit. It will fill fit's holders with necessary data and enable all of available Eos features for said fit.

You can do it three ways:

Assigning source instance Assigning source alias Implicitly assigning default source

Clone this wiki locally