factorio-draftsman 2.0.3__tar.gz → 3.0.1__tar.gz
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.
- factorio_draftsman-3.0.1/PKG-INFO +309 -0
- factorio_draftsman-3.0.1/README.md +255 -0
- factorio_draftsman-3.0.1/draftsman/__init__.py +48 -0
- factorio_draftsman-3.0.1/draftsman/_factorio_version.py +4 -0
- factorio_draftsman-3.0.1/draftsman/_version.py +4 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/blueprintable.py +35 -23
- factorio_draftsman-3.0.1/draftsman/classes/__init__.py +1 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/association.py +9 -19
- factorio_draftsman-3.0.1/draftsman/classes/blueprint.py +691 -0
- factorio_draftsman-3.0.1/draftsman/classes/blueprint_book.py +213 -0
- factorio_draftsman-3.0.1/draftsman/classes/blueprintable.py +433 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/collection.py +853 -496
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/collision_set.py +1 -1
- factorio_draftsman-3.0.1/draftsman/classes/deconstruction_planner.py +303 -0
- factorio_draftsman-3.0.1/draftsman/classes/entity.py +1147 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/entity_like.py +88 -57
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/entity_list.py +118 -192
- factorio_draftsman-3.0.1/draftsman/classes/exportable.py +483 -0
- factorio_draftsman-3.0.1/draftsman/classes/group.py +409 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/mixins/__init__.py +41 -7
- factorio_draftsman-3.0.1/draftsman/classes/mixins/artillery_auto_target.py +31 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_condition.py +79 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_connectable.py +109 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_enable.py +39 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_read_contents.py +83 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_read_hand.py +58 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_read_resource.py +52 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/circuit_set_filters.py +32 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/color.py +42 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/control_behavior.py +49 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/crafting_machine.py +145 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/directional.py +243 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/energy_source.py +88 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/equipment_grid.py +291 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/filters.py +134 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/input_ingredients.py +17 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/inventory.py +139 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/io_type.py +42 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/logistic_condition.py +101 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/mode_of_operation.py +81 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/modules.py +135 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/orientation.py +123 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/player_description.py +45 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/power_connectable.py +68 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/read_ammo.py +32 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/read_rail_signal.py +98 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/recipe.py +178 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/request_filters.py +176 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/stack_size.py +83 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/target_priorities.py +157 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/variation.py +32 -0
- factorio_draftsman-3.0.1/draftsman/classes/mixins/vehicle.py +128 -0
- factorio_draftsman-3.0.1/draftsman/classes/rail_planner.py +654 -0
- factorio_draftsman-3.0.1/draftsman/classes/schedule.py +612 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/schedule_list.py +18 -18
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/spatial_data_structure.py +3 -34
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/spatial_hashmap.py +80 -98
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/spatial_like.py +4 -5
- factorio_draftsman-3.0.1/draftsman/classes/tile.py +165 -0
- factorio_draftsman-3.0.1/draftsman/classes/tile_list.py +477 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/train_configuration.py +27 -17
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/transformable.py +4 -15
- factorio_draftsman-3.0.1/draftsman/classes/upgrade_planner.py +673 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/classes/vector.py +33 -12
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/compatibility/defines.lua +2 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/compatibility/interface.lua +2 -2
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/constants.py +485 -264
- factorio_draftsman-3.0.1/draftsman/data/entities.pkl +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/entities.py +50 -70
- factorio_draftsman-3.0.1/draftsman/data/equipment.pkl +0 -0
- factorio_draftsman-3.0.1/draftsman/data/equipment.py +36 -0
- factorio_draftsman-3.0.1/draftsman/data/fluids.pkl +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/fluids.py +51 -9
- factorio_draftsman-3.0.1/draftsman/data/instruments.pkl +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/instruments.py +15 -7
- factorio_draftsman-3.0.1/draftsman/data/items.pkl +0 -0
- factorio_draftsman-3.0.1/draftsman/data/items.py +290 -0
- factorio_draftsman-3.0.1/draftsman/data/mods.pkl +0 -0
- factorio_draftsman-3.0.1/draftsman/data/mods.py +16 -0
- factorio_draftsman-3.0.1/draftsman/data/modules.pkl +0 -0
- factorio_draftsman-3.0.1/draftsman/data/modules.py +120 -0
- factorio_draftsman-3.0.1/draftsman/data/planets.pkl +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/planets.py +4 -6
- factorio_draftsman-3.0.1/draftsman/data/qualities.pkl +0 -0
- factorio_draftsman-3.0.1/draftsman/data/qualities.py +16 -0
- factorio_draftsman-3.0.1/draftsman/data/recipes.pkl +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/recipes.py +14 -17
- factorio_draftsman-3.0.1/draftsman/data/signals.pkl +0 -0
- factorio_draftsman-3.0.1/draftsman/data/signals.py +144 -0
- factorio_draftsman-3.0.1/draftsman/data/tiles.pkl +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/tiles.py +8 -3
- factorio_draftsman-3.0.1/draftsman/entity.py +348 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/environment/mod_list.py +53 -30
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/environment/mod_settings.py +6 -3
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/environment/script.py +36 -17
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/environment/update.py +310 -203
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/error.py +17 -5
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/extras.py +11 -13
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/info.json +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/circuit-network.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/entities.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/entity-util.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/projectiles.lua +6 -3
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/remnants.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/turrets.lua +4 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/item.lua +17 -9
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/changelog.txt +177 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/utility-constants.lua +2 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/utility-sprites.lua +2 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/credits.txt +1 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/info.json +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/entity/remnants.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/info.json +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/info.json +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/ambient-sounds.lua +45 -45
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/decorative/decoratives-aquilo.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/decorative/decoratives-vulcanus.lua +3 -3
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/asteroid.lua +1 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/base-frozen-graphics.lua +1 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/enemies.lua +5 -33
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/entities.lua +1 -1
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/explosions.lua +16 -8
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/item.lua +4 -2
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/recipe.lua +1 -1
- factorio_draftsman-3.0.1/draftsman/prototypes/accumulator.py +68 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/agricultural_tower.py +60 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/ammo_turret.py +70 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/arithmetic_combinator.py +557 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/artillery_turret.py +43 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/artillery_wagon.py +42 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/assembling_machine.py +99 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/asteroid_collector.py +137 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/beacon.py +56 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/boiler.py +31 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/burner_generator.py +29 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/car.py +37 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/cargo_bay.py +26 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/cargo_landing_pad.py +36 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/cargo_wagon.py +90 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/constant_combinator.py +186 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/container.py +26 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/curved_rail_a.py +36 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/curved_rail_b.py +36 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/decider_combinator.py +538 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/display_panel.py +164 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/electric_energy_interface.py +133 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/electric_pole.py +37 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/electric_turret.py +45 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/elevated_curved_rail_a.py +38 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/elevated_curved_rail_b.py +38 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/elevated_half_diagonal_rail.py +39 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/elevated_straight_rail.py +60 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/fluid_turret.py +45 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/fluid_wagon.py +28 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/furnace.py +105 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/fusion_generator.py +27 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/fusion_reactor.py +25 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/gate.py +25 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/generator.py +25 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/half_diagonal_rail.py +32 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/heat_interface.py +99 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/heat_pipe.py +22 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/infinity_container.py +189 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/infinity_pipe.py +188 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/inserter.py +268 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/lab.py +89 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/lamp.py +222 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/land_mine.py +22 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/legacy_curved_rail.py +108 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/legacy_straight_rail.py +65 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/lightning_attractor.py +26 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/linked_belt.py +31 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/linked_container.py +83 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/loader.py +31 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/locomotive.py +48 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/logistic_active_container.py +106 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/logistic_buffer_container.py +40 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/logistic_passive_container.py +111 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/logistic_request_container.py +49 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/logistic_storage_container.py +111 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/mining_drill.py +82 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/offshore_pump.py +40 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/pipe.py +22 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/player_port.py +24 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/power_switch.py +86 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/programmable_speaker.py +528 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/pump.py +40 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/radar.py +23 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/rail_chain_signal.py +94 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/rail_ramp.py +31 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/rail_signal.py +102 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/rail_support.py +38 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/reactor.py +79 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/roboport.py +287 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/rocket_silo.py +181 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/selector_combinator.py +446 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/simple_entity_with_force.py +27 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/simple_entity_with_owner.py +29 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/solar_panel.py +23 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/space_platform_hub.py +134 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/spider_vehicle.py +93 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/splitter.py +99 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/storage_tank.py +25 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/straight_rail.py +70 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/thruster.py +24 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/train_stop.py +308 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/transport_belt.py +42 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/underground_belt.py +25 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/underground_pipe.py +25 -0
- factorio_draftsman-3.0.1/draftsman/prototypes/wall.py +101 -0
- factorio_draftsman-3.0.1/draftsman/rail.py +25 -0
- factorio_draftsman-3.0.1/draftsman/serialization.py +443 -0
- factorio_draftsman-3.0.1/draftsman/signatures.py +1515 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/tile.py +0 -4
- factorio_draftsman-3.0.1/draftsman/types.py +9 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/utils.py +163 -27
- factorio_draftsman-3.0.1/draftsman/validators.py +410 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/warning.py +19 -10
- factorio_draftsman-3.0.1/factorio_draftsman.egg-info/PKG-INFO +309 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/factorio_draftsman.egg-info/SOURCES.txt +13 -10
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/factorio_draftsman.egg-info/requires.txt +4 -2
- factorio_draftsman-3.0.1/pyproject.toml +98 -0
- factorio_draftsman-3.0.1/test/test_all_factorio_versions.py +56 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_blueprint.py +627 -376
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_blueprint_book.py +214 -186
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_blueprintable.py +76 -9
- factorio_draftsman-3.0.1/test/test_constants.py +67 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_data.py +2 -32
- factorio_draftsman-3.0.1/test/test_deconstruction_planner.py +249 -0
- factorio_draftsman-3.0.1/test/test_entity.py +794 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_entity_list.py +154 -37
- factorio_draftsman-3.0.1/test/test_examples.py +52 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_group.py +128 -64
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_schedule.py +167 -72
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_schedule_list.py +5 -1
- factorio_draftsman-3.0.1/test/test_serialization.py +23 -0
- factorio_draftsman-3.0.1/test/test_signatures.py +19 -0
- factorio_draftsman-3.0.1/test/test_spatial_hash_map.py +192 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_tile.py +35 -37
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_tile_list.py +24 -18
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_upgrade_planner.py +202 -203
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_utils.py +16 -16
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_vector.py +6 -1
- factorio_draftsman-3.0.1/test/test_version.py +9 -0
- factorio_draftsman-2.0.3/PKG-INFO +0 -187
- factorio_draftsman-2.0.3/README.md +0 -156
- factorio_draftsman-2.0.3/draftsman/__init__.py +0 -17
- factorio_draftsman-2.0.3/draftsman/_factorio_version.py +0 -4
- factorio_draftsman-2.0.3/draftsman/_version.py +0 -4
- factorio_draftsman-2.0.3/draftsman/classes/__init__.py +0 -26
- factorio_draftsman-2.0.3/draftsman/classes/blueprint.py +0 -1206
- factorio_draftsman-2.0.3/draftsman/classes/blueprint_book.py +0 -566
- factorio_draftsman-2.0.3/draftsman/classes/blueprintable.py +0 -579
- factorio_draftsman-2.0.3/draftsman/classes/deconstruction_planner.py +0 -675
- factorio_draftsman-2.0.3/draftsman/classes/entity.py +0 -794
- factorio_draftsman-2.0.3/draftsman/classes/exportable.py +0 -379
- factorio_draftsman-2.0.3/draftsman/classes/group.py +0 -633
- factorio_draftsman-2.0.3/draftsman/classes/mixins/artillery_auto_target.py +0 -50
- factorio_draftsman-2.0.3/draftsman/classes/mixins/burner_energy_source.py +0 -201
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_condition.py +0 -106
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_connectable.py +0 -213
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_enable.py +0 -59
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_read_contents.py +0 -96
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_read_hand.py +0 -97
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_read_resource.py +0 -98
- factorio_draftsman-2.0.3/draftsman/classes/mixins/circuit_set_filters.py +0 -48
- factorio_draftsman-2.0.3/draftsman/classes/mixins/color.py +0 -96
- factorio_draftsman-2.0.3/draftsman/classes/mixins/consumes_ammo.py +0 -5
- factorio_draftsman-2.0.3/draftsman/classes/mixins/control_behavior.py +0 -173
- factorio_draftsman-2.0.3/draftsman/classes/mixins/directional.py +0 -246
- factorio_draftsman-2.0.3/draftsman/classes/mixins/double_grid_aligned.py +0 -50
- factorio_draftsman-2.0.3/draftsman/classes/mixins/eight_way_directional.py +0 -203
- factorio_draftsman-2.0.3/draftsman/classes/mixins/equipment_grid.py +0 -107
- factorio_draftsman-2.0.3/draftsman/classes/mixins/filters.py +0 -209
- factorio_draftsman-2.0.3/draftsman/classes/mixins/input_ingredients.py +0 -106
- factorio_draftsman-2.0.3/draftsman/classes/mixins/inventory.py +0 -217
- factorio_draftsman-2.0.3/draftsman/classes/mixins/inventory_filter.py +0 -337
- factorio_draftsman-2.0.3/draftsman/classes/mixins/io_type.py +0 -83
- factorio_draftsman-2.0.3/draftsman/classes/mixins/logistic_condition.py +0 -105
- factorio_draftsman-2.0.3/draftsman/classes/mixins/mode_of_operation.py +0 -152
- factorio_draftsman-2.0.3/draftsman/classes/mixins/modules.py +0 -169
- factorio_draftsman-2.0.3/draftsman/classes/mixins/orientation.py +0 -113
- factorio_draftsman-2.0.3/draftsman/classes/mixins/player_description.py +0 -56
- factorio_draftsman-2.0.3/draftsman/classes/mixins/power_connectable.py +0 -151
- factorio_draftsman-2.0.3/draftsman/classes/mixins/read_ammo.py +0 -49
- factorio_draftsman-2.0.3/draftsman/classes/mixins/read_rail_signal.py +0 -164
- factorio_draftsman-2.0.3/draftsman/classes/mixins/recipe.py +0 -216
- factorio_draftsman-2.0.3/draftsman/classes/mixins/request_filters.py +0 -318
- factorio_draftsman-2.0.3/draftsman/classes/mixins/request_items.py +0 -235
- factorio_draftsman-2.0.3/draftsman/classes/mixins/stack_size.py +0 -170
- factorio_draftsman-2.0.3/draftsman/classes/mixins/target_priorities.py +0 -202
- factorio_draftsman-2.0.3/draftsman/classes/mixins/vehicle.py +0 -93
- factorio_draftsman-2.0.3/draftsman/classes/rail_planner.py +0 -646
- factorio_draftsman-2.0.3/draftsman/classes/schedule.py +0 -722
- factorio_draftsman-2.0.3/draftsman/classes/tile.py +0 -311
- factorio_draftsman-2.0.3/draftsman/classes/tile_list.py +0 -326
- factorio_draftsman-2.0.3/draftsman/classes/upgrade_planner.py +0 -718
- factorio_draftsman-2.0.3/draftsman/data/entities.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/fluids.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/instruments.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/items.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/items.py +0 -137
- factorio_draftsman-2.0.3/draftsman/data/mods.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/mods.py +0 -11
- factorio_draftsman-2.0.3/draftsman/data/modules.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/modules.py +0 -80
- factorio_draftsman-2.0.3/draftsman/data/planets.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/recipes.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/signals.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/data/signals.py +0 -158
- factorio_draftsman-2.0.3/draftsman/data/tiles.pkl +0 -0
- factorio_draftsman-2.0.3/draftsman/entity.py +0 -315
- factorio_draftsman-2.0.3/draftsman/env.py +0 -2205
- factorio_draftsman-2.0.3/draftsman/prototypes/accumulator.py +0 -107
- factorio_draftsman-2.0.3/draftsman/prototypes/agricultural_tower.py +0 -118
- factorio_draftsman-2.0.3/draftsman/prototypes/ammo_turret.py +0 -103
- factorio_draftsman-2.0.3/draftsman/prototypes/arithmetic_combinator.py +0 -577
- factorio_draftsman-2.0.3/draftsman/prototypes/artillery_turret.py +0 -102
- factorio_draftsman-2.0.3/draftsman/prototypes/artillery_wagon.py +0 -83
- factorio_draftsman-2.0.3/draftsman/prototypes/assembling_machine.py +0 -185
- factorio_draftsman-2.0.3/draftsman/prototypes/asteroid_collector.py +0 -223
- factorio_draftsman-2.0.3/draftsman/prototypes/beacon.py +0 -73
- factorio_draftsman-2.0.3/draftsman/prototypes/boiler.py +0 -60
- factorio_draftsman-2.0.3/draftsman/prototypes/burner_generator.py +0 -107
- factorio_draftsman-2.0.3/draftsman/prototypes/car.py +0 -81
- factorio_draftsman-2.0.3/draftsman/prototypes/cargo_bay.py +0 -56
- factorio_draftsman-2.0.3/draftsman/prototypes/cargo_landing_pad.py +0 -78
- factorio_draftsman-2.0.3/draftsman/prototypes/cargo_wagon.py +0 -77
- factorio_draftsman-2.0.3/draftsman/prototypes/constant_combinator.py +0 -345
- factorio_draftsman-2.0.3/draftsman/prototypes/container.py +0 -65
- factorio_draftsman-2.0.3/draftsman/prototypes/curved_rail_a.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/curved_rail_b.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/decider_combinator.py +0 -690
- factorio_draftsman-2.0.3/draftsman/prototypes/display_panel.py +0 -179
- factorio_draftsman-2.0.3/draftsman/prototypes/electric_energy_interface.py +0 -251
- factorio_draftsman-2.0.3/draftsman/prototypes/electric_pole.py +0 -64
- factorio_draftsman-2.0.3/draftsman/prototypes/electric_turret.py +0 -103
- factorio_draftsman-2.0.3/draftsman/prototypes/elevated_curved_rail_a.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/elevated_curved_rail_b.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/elevated_half_diagonal_rail.py +0 -57
- factorio_draftsman-2.0.3/draftsman/prototypes/elevated_straight_rail.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/filter_inserter.py +0 -187
- factorio_draftsman-2.0.3/draftsman/prototypes/fluid_turret.py +0 -103
- factorio_draftsman-2.0.3/draftsman/prototypes/fluid_wagon.py +0 -58
- factorio_draftsman-2.0.3/draftsman/prototypes/furnace.py +0 -223
- factorio_draftsman-2.0.3/draftsman/prototypes/fusion_generator.py +0 -53
- factorio_draftsman-2.0.3/draftsman/prototypes/fusion_reactor.py +0 -53
- factorio_draftsman-2.0.3/draftsman/prototypes/gate.py +0 -53
- factorio_draftsman-2.0.3/draftsman/prototypes/generator.py +0 -50
- factorio_draftsman-2.0.3/draftsman/prototypes/half_diagonal_rail.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/heat_interface.py +0 -174
- factorio_draftsman-2.0.3/draftsman/prototypes/heat_pipe.py +0 -50
- factorio_draftsman-2.0.3/draftsman/prototypes/infinity_container.py +0 -240
- factorio_draftsman-2.0.3/draftsman/prototypes/infinity_pipe.py +0 -371
- factorio_draftsman-2.0.3/draftsman/prototypes/inserter.py +0 -293
- factorio_draftsman-2.0.3/draftsman/prototypes/lab.py +0 -100
- factorio_draftsman-2.0.3/draftsman/prototypes/lamp.py +0 -179
- factorio_draftsman-2.0.3/draftsman/prototypes/land_mine.py +0 -50
- factorio_draftsman-2.0.3/draftsman/prototypes/legacy_curved_rail.py +0 -113
- factorio_draftsman-2.0.3/draftsman/prototypes/legacy_straight_rail.py +0 -105
- factorio_draftsman-2.0.3/draftsman/prototypes/lightning_attractor.py +0 -51
- factorio_draftsman-2.0.3/draftsman/prototypes/linked_belt.py +0 -58
- factorio_draftsman-2.0.3/draftsman/prototypes/linked_container.py +0 -143
- factorio_draftsman-2.0.3/draftsman/prototypes/loader.py +0 -60
- factorio_draftsman-2.0.3/draftsman/prototypes/locomotive.py +0 -71
- factorio_draftsman-2.0.3/draftsman/prototypes/logistic_active_container.py +0 -85
- factorio_draftsman-2.0.3/draftsman/prototypes/logistic_buffer_container.py +0 -100
- factorio_draftsman-2.0.3/draftsman/prototypes/logistic_passive_container.py +0 -87
- factorio_draftsman-2.0.3/draftsman/prototypes/logistic_request_container.py +0 -116
- factorio_draftsman-2.0.3/draftsman/prototypes/logistic_storage_container.py +0 -95
- factorio_draftsman-2.0.3/draftsman/prototypes/mining_drill.py +0 -129
- factorio_draftsman-2.0.3/draftsman/prototypes/offshore_pump.py +0 -87
- factorio_draftsman-2.0.3/draftsman/prototypes/pipe.py +0 -50
- factorio_draftsman-2.0.3/draftsman/prototypes/player_port.py +0 -46
- factorio_draftsman-2.0.3/draftsman/prototypes/power_switch.py +0 -153
- factorio_draftsman-2.0.3/draftsman/prototypes/programmable_speaker.py +0 -850
- factorio_draftsman-2.0.3/draftsman/prototypes/pump.py +0 -72
- factorio_draftsman-2.0.3/draftsman/prototypes/radar.py +0 -47
- factorio_draftsman-2.0.3/draftsman/prototypes/rail_chain_signal.py +0 -131
- factorio_draftsman-2.0.3/draftsman/prototypes/rail_ramp.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/rail_signal.py +0 -162
- factorio_draftsman-2.0.3/draftsman/prototypes/rail_support.py +0 -55
- factorio_draftsman-2.0.3/draftsman/prototypes/reactor.py +0 -170
- factorio_draftsman-2.0.3/draftsman/prototypes/roboport.py +0 -295
- factorio_draftsman-2.0.3/draftsman/prototypes/rocket_silo.py +0 -190
- factorio_draftsman-2.0.3/draftsman/prototypes/selector_combinator.py +0 -151
- factorio_draftsman-2.0.3/draftsman/prototypes/simple_entity_with_force.py +0 -84
- factorio_draftsman-2.0.3/draftsman/prototypes/simple_entity_with_owner.py +0 -84
- factorio_draftsman-2.0.3/draftsman/prototypes/solar_panel.py +0 -50
- factorio_draftsman-2.0.3/draftsman/prototypes/space_platform_hub.py +0 -136
- factorio_draftsman-2.0.3/draftsman/prototypes/spider_vehicle.py +0 -197
- factorio_draftsman-2.0.3/draftsman/prototypes/splitter.py +0 -192
- factorio_draftsman-2.0.3/draftsman/prototypes/storage_tank.py +0 -59
- factorio_draftsman-2.0.3/draftsman/prototypes/straight_rail.py +0 -105
- factorio_draftsman-2.0.3/draftsman/prototypes/thruster.py +0 -50
- factorio_draftsman-2.0.3/draftsman/prototypes/train_stop.py +0 -426
- factorio_draftsman-2.0.3/draftsman/prototypes/transport_belt.py +0 -92
- factorio_draftsman-2.0.3/draftsman/prototypes/turret.py +0 -60
- factorio_draftsman-2.0.3/draftsman/prototypes/underground_belt.py +0 -60
- factorio_draftsman-2.0.3/draftsman/prototypes/underground_pipe.py +0 -53
- factorio_draftsman-2.0.3/draftsman/prototypes/wall.py +0 -173
- factorio_draftsman-2.0.3/draftsman/rail.py +0 -11
- factorio_draftsman-2.0.3/draftsman/signatures.py +0 -1443
- factorio_draftsman-2.0.3/draftsman/types.py +0 -11
- factorio_draftsman-2.0.3/factorio_draftsman.egg-info/PKG-INFO +0 -187
- factorio_draftsman-2.0.3/pyproject.toml +0 -6
- factorio_draftsman-2.0.3/setup.py +0 -87
- factorio_draftsman-2.0.3/test/test_deconstruction_planner.py +0 -380
- factorio_draftsman-2.0.3/test/test_entity.py +0 -463
- factorio_draftsman-2.0.3/test/test_examples.py +0 -51
- factorio_draftsman-2.0.3/test/test_spatial_hash_map.py +0 -96
- factorio_draftsman-2.0.3/test/test_version.py +0 -9
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/LICENSE +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/MANIFEST.in +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/compatibility/serpent.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/compatibility/settings.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/data/__init__.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/environment/__init__.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/.git +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/README.md +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/data-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/data.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/1.1.0.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/1.2.0 stack inserter rename.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/2.0.0-biter-egg.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/2.0.0-internal.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/2.0.0-internal2.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/2.0.0-internal3.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/2.0.0.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/2.0.0.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/migrations/migrations.txt +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/achievements.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/ambient-sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/autoplace-controls.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/ammo-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/equipment-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/fuel-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/module-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/quality.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/recipe-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/categories/resource-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/collision-layers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/custom-inputs.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/damage-type.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/decorative/decorative-trigger-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/decorative/decoratives.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/demo.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/artillery-cannon-muzzle-flash-shifting.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/assemblerpipes.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/atomic-bomb.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/beacon-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/beams.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/biter-ai-settings.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/biter-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/biter-die-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/cargo-hatch.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/cargo-pod-catalogue.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/character-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/combinator-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/crash-site.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/enemies.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/enemy-autoplace-utils.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/enemy-constants.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/enemy-projectiles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/explosion-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/explosions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/factorio-logo.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/fire.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/flying-robots.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/giga-cargo-hatch.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/hit-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/laser-sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/mining-drill.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/movement-triggers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/pipecovers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/pump-connector.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/rail-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/resources.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/rocket-projectile-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/smoke-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/smoke.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/spawner-animation.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/spidertron-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/spidertron-light-positions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/spitter-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/trains.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/transport-belts.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/trees.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/entity/worm-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/equipment-grid.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/equipment.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/factoriopedia-simulations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/factoriopedia-util.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/fire-util.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/fluid.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/impact-deliver-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/item-groups.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/item-tints.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/item_sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/map-gen-presets.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/map-settings.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/noise-expressions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/particle-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/particles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/planet-map-gen.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/planet.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/procession-audio-catalogue-types.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/procession-graphic-catalogue-types.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/procession-style.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/procession.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/planet/surface-property.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/pollution.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/recipe.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/shortcuts.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/signal.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/technology.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tile/tile-collision-masks.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tile/tile-graphics.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tile/tile-pollution-values.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tile/tile-sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tile/tile-trigger-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tile/tiles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tips-and-tricks-simulations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tips-and-tricks.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/trigger-target-types.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/tutorials.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/base/prototypes/utility-sprites.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/backers.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/data.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/info.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/autoplace_utils.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/bonus-gui-ordering.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/circuit-connector-generated-definitions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/circuit-connector-sprites.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/collision-mask-defaults.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/collision-mask-util.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/crash-site.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/data-duplicate-checker.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/dataloader.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/event_handler.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/kill-score.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/math2d.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/math3d.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/meld.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/mod-gui.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/production-score.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/resource-autoplace.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/silo-script.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/sound-util.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/space-finish-script.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/story.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/surface-render-parameter-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/lualib/util.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/burner-usage.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/cursors.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/editor-controller.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/fonts.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/god-controller.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/noise-functions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/noise-programs.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/parameters.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/remote-controller.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/spectator-controller.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/style.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/unknown.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/core/prototypes/utility-sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/data.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/base-data-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/entity/elevated-rail-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/entity/elevated-rails.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/entity/explosions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/item/elevated-rails.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/particles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/recipe/elevated-rails.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/sloped-trains-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/technology/elevated-rails.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/tips-and-tricks-simulations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/elevated-rails/prototypes/tips-and-tricks.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/map-gen-settings.example.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/map-settings.example.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/data-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/data.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/base-data-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/entity/entity.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/entity/explosions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/entity/recycler-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/entity/remnants.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/item.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/module-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/quality.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/recipe.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/recycling.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/signal.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/technology.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/tips-and-tricks-simulations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/quality/prototypes/tips-and-tricks.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/server-settings.example.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/server-whitelist.example.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/base-data-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/data-updates.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/data.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/migrations/aquilo-tilesets.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/migrations/biolab.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/migrations/internal.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/migrations/jelly-yum-rename.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/migrations/shattered-planet.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/migrations/tungsten-belt-rename.json +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/achievements.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/active-triggers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/autoplace-controls.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/burner-usage.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/categories/ammo-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/categories/fuel-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/categories/recipe-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/categories/resource-category.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/decorative/decoratives-fulgora.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/decorative/decoratives-gleba.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/decorative/decoratives.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/agricultural-tower-crane.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/asteroid-collector-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/beams.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/big-mining-drill.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/biochamber-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/cargo-hatch.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/cargo-pod-catalogue.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/circuit-network.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/crusher-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/cryogenic-plant-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/electromagnetic-plant-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/explosion-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/flying-robots.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/foundry-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/fusion-system-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/giga-cargo-hatch.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/gleba-ai-settings.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/gleba-enemy-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/lightning-collector-graphics.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/lightning-rod-graphics.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/mech-armor-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/plants.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/projectiles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/railgun-turret-pictures.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/remnants.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/resources.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/smoke.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/space-enemy-autoplace-utils.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/space-platform-hub-cockpit.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/transport-belts.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/trees.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/entity/turrets.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/equipment-grid.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/equipment.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/factoriopedia-simulations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/fluid.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/item-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/item-groups.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/item_sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/particle-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/particles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/asteroid-spawn-definitions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/general-functions.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/general-variables.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/audio-events.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/cloud-layers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/pod-layers-a.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/pod-layers-b.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/pod-layers-i.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/rocket-layers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform/space-layers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/planet-to-platform.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet/audio-events.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet/cloud-layers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet/pod-layers-a.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet/pod-layers-b.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet/pod-layers-i.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet/space-layers.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/general/platform-to-planet.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/planet-aquilo-map-gen.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/planet-fulgora-map-gen.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/planet-gleba-map-gen.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/planet-map-gen.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/planet-vulcanus-map-gen.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/planet.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/procession-catalogue-aquilo.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/procession-catalogue-fulgora.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/procession-catalogue-gleba.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/procession-catalogue-vulcanus.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/procession-common.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/planet/procession.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/spores.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/surface.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/technology.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/platform-tile-animations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tile-pollution-values.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tile-sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tile-trigger-effects.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tiles-aquilo.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tiles-fulgora.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tiles-gleba.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tiles-vulcanus.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tile/tiles.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tips-and-tricks-simulations.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/tips-and-tricks.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/utility-sounds.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-data/space-age/prototypes/utility-sprites.lua +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/factorio-mods/.gitignore +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/draftsman/prototypes/__init__.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/factorio_draftsman.egg-info/dependency_links.txt +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/factorio_draftsman.egg-info/entry_points.txt +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/factorio_draftsman.egg-info/top_level.txt +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/setup.cfg +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_association.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_collision_set.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_environment.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_mixins.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_rail_planner.py +0 -0
- {factorio_draftsman-2.0.3 → factorio_draftsman-3.0.1}/test/test_train_configuration.py +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: factorio-draftsman
|
|
3
|
+
Version: 3.0.1
|
|
4
|
+
Summary: A complete, well-tested, and up-to-date module to manipulate Factorio blueprint strings. Compatible with mods.
|
|
5
|
+
Author: redruin01
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2023 redruin1
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
Project-URL: Homepage, https://github.com/redruin1/factorio-draftsman
|
|
29
|
+
Project-URL: Documentation, https://factorio-draftsman.readthedocs.io/en/latest/index.html
|
|
30
|
+
Project-URL: Issues, https://github.com/redruin1/factorio-draftsman/issues
|
|
31
|
+
Project-URL: Changelog, https://github.com/redruin1/factorio-draftsman/blob/main/changelog.md
|
|
32
|
+
Keywords: factorio,blueprint,string
|
|
33
|
+
Classifier: Development Status :: 4 - Beta
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
+
Classifier: Intended Audience :: Developers
|
|
39
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
40
|
+
Classifier: Operating System :: OS Independent
|
|
41
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
42
|
+
Requires-Python: >=3.9
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
License-File: LICENSE
|
|
45
|
+
Requires-Dist: attrs>=25.3.0
|
|
46
|
+
Requires-Dist: cattrs>=24.1.3
|
|
47
|
+
Requires-Dist: lupa>=2.0
|
|
48
|
+
Requires-Dist: GitPython>=3.1.43
|
|
49
|
+
Requires-Dist: thefuzz>=0.20.0
|
|
50
|
+
Requires-Dist: enum_tools>=0.13.0
|
|
51
|
+
Requires-Dist: typing
|
|
52
|
+
Requires-Dist: typing_extensions; python_version < "3.8"
|
|
53
|
+
Dynamic: license-file
|
|
54
|
+
|
|
55
|
+
# factorio-draftsman
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
[](https://badge.fury.io/py/factorio-draftsman)
|
|
60
|
+
[](https://factorio-draftsman.readthedocs.io/en/latest/?badge=latest)
|
|
61
|
+
[](https://codecov.io/gh/redruin1/factorio-draftsman)
|
|
62
|
+
[](https://github.com/psf/black)
|
|
63
|
+
[](https://github.com/astral-sh/ruff)
|
|
64
|
+
|
|
65
|
+
`factorio-draftsman` is a Python module for creating and editing blueprints for the game [Factorio](https://factorio.com/).
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from draftsman.blueprintable import *
|
|
69
|
+
from draftsman.constants import Direction
|
|
70
|
+
from draftsman.entity import *
|
|
71
|
+
|
|
72
|
+
# Create new Blueprints from scratch
|
|
73
|
+
blueprint = Blueprint()
|
|
74
|
+
blueprint.label = "Example"
|
|
75
|
+
blueprint.description = "A blueprint for the readme."
|
|
76
|
+
blueprint.version = (2, 0) # Factorio version 2.0
|
|
77
|
+
|
|
78
|
+
# Add new entities and configure them procedurally
|
|
79
|
+
test_string = "readme"
|
|
80
|
+
for i, char in enumerate(test_string):
|
|
81
|
+
signal_string = "signal-{}".format(char.upper())
|
|
82
|
+
|
|
83
|
+
constant_combinator = ConstantCombinator(tile_position=(i - 2, 0))
|
|
84
|
+
section = constant_combinator.add_section()
|
|
85
|
+
section.set_signal(
|
|
86
|
+
index=0,
|
|
87
|
+
name=signal_string,
|
|
88
|
+
count=0,
|
|
89
|
+
)
|
|
90
|
+
blueprint.entities.append(constant_combinator)
|
|
91
|
+
|
|
92
|
+
display_panel = DisplayPanel(tile_position=(i - 2, 1))
|
|
93
|
+
display_panel.icon = signal_string
|
|
94
|
+
display_panel.always_show_in_alt_mode = True
|
|
95
|
+
blueprint.entities.append(display_panel)
|
|
96
|
+
|
|
97
|
+
# Flexible ways to specify entities
|
|
98
|
+
blueprint.entities.append(
|
|
99
|
+
"constant-combinator",
|
|
100
|
+
id="constant",
|
|
101
|
+
tile_position=(-1, 3),
|
|
102
|
+
direction=Direction.EAST
|
|
103
|
+
)
|
|
104
|
+
blueprint.entities.append(
|
|
105
|
+
"decider-combinator",
|
|
106
|
+
id="clock",
|
|
107
|
+
tile_position=(0, 3),
|
|
108
|
+
direction=Direction.EAST,
|
|
109
|
+
)
|
|
110
|
+
blueprint.entities.append(
|
|
111
|
+
"small-lamp",
|
|
112
|
+
id="blinker",
|
|
113
|
+
tile_position=(2, 3)
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# Use IDs for ease of access on complex blueprints
|
|
117
|
+
constant: ConstantCombinator = blueprint.entities["constant"]
|
|
118
|
+
constant.add_section().set_signal(index=0, name="signal-red", count=1)
|
|
119
|
+
|
|
120
|
+
clock: DeciderCombinator = blueprint.entities["clock"]
|
|
121
|
+
clock.conditions = [
|
|
122
|
+
DeciderCombinator.Condition(
|
|
123
|
+
first_signal="signal-red",
|
|
124
|
+
comparator="<=",
|
|
125
|
+
constant=60
|
|
126
|
+
)
|
|
127
|
+
]
|
|
128
|
+
clock.outputs = [
|
|
129
|
+
DeciderCombinator.Output(
|
|
130
|
+
signal="signal-red"
|
|
131
|
+
)
|
|
132
|
+
]
|
|
133
|
+
|
|
134
|
+
blinker: Lamp = blueprint.entities["blinker"]
|
|
135
|
+
blinker.circuit_enabled = True
|
|
136
|
+
blinker.set_circuit_condition("signal-red", "=", 60)
|
|
137
|
+
blinker.use_colors = True
|
|
138
|
+
|
|
139
|
+
# Sophisticated relationship handling with Associations
|
|
140
|
+
blueprint.add_circuit_connection( # Constant to input of decider
|
|
141
|
+
color="green",
|
|
142
|
+
entity_1="constant",
|
|
143
|
+
entity_2="clock"
|
|
144
|
+
)
|
|
145
|
+
blueprint.add_circuit_connection( # Input of decider to output of decider
|
|
146
|
+
color="red", entity_1="clock", side_1="input", entity_2="clock", side_2="output"
|
|
147
|
+
)
|
|
148
|
+
blueprint.add_circuit_connection( # Output of decider to lamp
|
|
149
|
+
color="green", entity_1="clock", side_1="output", entity_2="blinker", side_2="input"
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
# Import compressed blueprints
|
|
153
|
+
bp_string = """0eNqllGFrwyAQhv/LfdZhkmUl+SujDJNc2wO9FLVjXfC/z2TZBisrLH4S9d7n3pdDJ+jMBc+OOEA7AfUje2ifJ/B0ZG3mM9YWoQXtPdrOEB+l1f2JGGUFUQDxgG/QFnEvADlQIPwkLJvrC19shy4ViLskAefRJ/HIc88EVA+1gOuyxpkdyKzgX4WyWOpkEb87ODwk6iBP+l27QaZQvcOA0uAhJM83CJVNyPewxlC5KVRuCJWdIXsS2YPIn0N5S/iS/u37n6JNnVZ/1RZ/1RZ/d0XpYVJAm+5+/hEBr+j8gqmfyuaxaeqdKutdU8b4AbwVejE="""
|
|
154
|
+
|
|
155
|
+
# Group entities together and treat them all as one unit
|
|
156
|
+
group = Group.from_string(bp_string)
|
|
157
|
+
for i in range(3):
|
|
158
|
+
blueprint.groups.append(group, position=(i * 4 - 3, 7))
|
|
159
|
+
|
|
160
|
+
# Quickly query Blueprints by region or contents
|
|
161
|
+
ccs = blueprint.find_entities_filtered(name="constant-combinator")
|
|
162
|
+
assert len(ccs) == len(test_string) + 1
|
|
163
|
+
asm_machines: list[AssemblingMachine] = blueprint.find_entities_filtered(type="assembling-machine")
|
|
164
|
+
assert len(asm_machines) == 3
|
|
165
|
+
for asm_machine in asm_machines:
|
|
166
|
+
asm_machine.recipe = "low-density-structure"
|
|
167
|
+
|
|
168
|
+
# Every blueprintable type is supported
|
|
169
|
+
blueprint_book = BlueprintBook()
|
|
170
|
+
blueprint_book.blueprints = [blueprint, UpgradePlanner(), DeconstructionPlanner()]
|
|
171
|
+
|
|
172
|
+
print(blueprint_book.to_string(version=(2, 0))) # Blueprint string to import into Factorio
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+

|
|
176
|
+
|
|
177
|
+
# Overview
|
|
178
|
+
|
|
179
|
+
Simply put, Draftsman attempts to provide a universal solution to the task of creating and manipulating Factorio blueprint strings, which are compressed text strings used by players to share their constructions easily with others.
|
|
180
|
+
Draftsman allows users to programmatically create these strings via script, allowing for designs that would normally be too tedious to design by hand, such as combinator computer compilers, image-to-blueprint converters, pumpjack placers, as well as any other complex or repetitive design better suited for a computer's touch.
|
|
181
|
+
|
|
182
|
+
For a user-friendly timeline of how this project came about, as well as some pretty illustrations of it's capabilities, [you can read an article](https://alt-f4.blog/ALTF4-61/) written for the amazing fan-run community spotlight website [Alt-F4](https://alt-f4.blog/).
|
|
183
|
+
|
|
184
|
+
For more information on what exactly Draftsman is and does, as well as its intended purpose and philosophy, [you can read the documentation here](https://factorio-draftsman.readthedocs.io/en/latest/index.html).
|
|
185
|
+
|
|
186
|
+
For more examples on what exactly you can do with Draftsman, take a look at the [examples folder](https://github.com/redruin1/factorio-draftsman/tree/main/examples), which is organized into different categories for ease of navigation.
|
|
187
|
+
|
|
188
|
+
## Features
|
|
189
|
+
* Compatible with Python >= 3.10
|
|
190
|
+
* Compatible with all versions of Factorio >= 1.0.0
|
|
191
|
+
* Compatible with Factorio mods(!)
|
|
192
|
+
* Well documented
|
|
193
|
+
* Intuitive and flexible API
|
|
194
|
+
* Useful constructs for ease-of-use:
|
|
195
|
+
* Give entities unique string IDs to make association between entities easier
|
|
196
|
+
* Filter entities from blueprints by type, region and other parameters [just like Factorio's own API](https://lua-api.factorio.com/latest/classes/LuaSurface.html#find_entities_filtered)
|
|
197
|
+
* Entities are categorized and organized within `draftsman.data` for easy and flexible iteration
|
|
198
|
+
* Group entities together and manipulate them all as one unit
|
|
199
|
+
* Verbose Errors and Warnings (["Factorio-safety" and "Factorio-correctness"](https://factorio-draftsman.readthedocs.io/en/latest/concepts/validation.html))
|
|
200
|
+
* Expansive and rigorous test suite
|
|
201
|
+
|
|
202
|
+
# Installation
|
|
203
|
+
|
|
204
|
+
## For Users:
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
pip install factorio-draftsman
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
This will install the latest version of Draftsman with a copy of pre-generated data from [`factorio-data`](https://github.com/wube/factorio-data) (typically the latest stable version). Having a copy of the game (installed or at all) is not necessary to use Draftsman, but Draftsman can also use data from your user-specific installation.
|
|
211
|
+
|
|
212
|
+
If Factorio updates in-between Draftsman releases, or if you want to update your environment to support mods, then you can modify your Draftsman installation by running the companion command-line tool `draftsman`:
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
draftsman factorio-version latest
|
|
216
|
+
draftsman --mods-path "path/to/mods/folder" update
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
For more information on how to use this tool, you can run `draftsman -h` or see it's documentation [here](https://factorio-draftsman.readthedocs.io/en/latest/reference/environment/script.html).
|
|
220
|
+
|
|
221
|
+
## For Developers
|
|
222
|
+
|
|
223
|
+
Clone the repository using your preferred method (making sure submodules are populated) and navigate to the root of the newly cloned repository:
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
git clone --recurse-submodules https://github.com/redruin1/factorio-draftsman.git
|
|
227
|
+
cd factorio-draftsman
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Create a virtual environment of your personal flavor and enter inside of it. If you are looking to contribute to Draftsman however, it's recommended that you use [`uv`](https://github.com/astral-sh/uv) since most of the CI tools use it:
|
|
231
|
+
|
|
232
|
+
```perl
|
|
233
|
+
pip install uv # or via pipx or standalone script, see uv docs
|
|
234
|
+
uv venv
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Install the package in editable mode, alongside the `dev` dependency group (requires modern pip):
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
pip install -e .
|
|
241
|
+
pip install --group dev
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
You should now be able to run the test suite with [`pytest`](https://docs.pytest.org/en/stable/#):
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
python -m pytest test -Werror -vv
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Or - more succinctly - using [`coverage`](https://coverage.readthedocs.io/en/latest/):
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
coverage run
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
To run a mock CI against all supported Python versions, run [`tox`](https://tox.wiki/en/4.27.0/):
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
tox
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
However, Draftsman (>= 3.0) also provides a [`justfile`](https://github.com/casey/just) which has a number of recipes which make contributing much easier.
|
|
263
|
+
Type `just` to see a list of all options:
|
|
264
|
+
|
|
265
|
+
```perl
|
|
266
|
+
Available recipes:
|
|
267
|
+
ci # Run 'lint + test + report-coverage'
|
|
268
|
+
ci-all # Run 'lint + test-all + report-coverage'
|
|
269
|
+
lint *args # Run black and ruff
|
|
270
|
+
test # Run test suite against {current Factorio version, all Python versions}
|
|
271
|
+
test-all # Run test suite against {all Factorio versions, latest Python version} (LONG)
|
|
272
|
+
report-coverage # Combine all coverage files and create HTML report
|
|
273
|
+
benchmark # Run benchmark tests and save profiles for this Draftsman version
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Note that testing currently is only guaranteed to pass with a vanilla [environment](https://factorio-draftsman.readthedocs.io/en/latest/concepts/environment.html).
|
|
277
|
+
|
|
278
|
+
A html-browsable coverage report can be generated with:
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
coverage html
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
To build + check documentation locally:
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
cd docs
|
|
288
|
+
make clean
|
|
289
|
+
make doctest
|
|
290
|
+
make html
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
and then navigate to `docs/build/index.html` to view.
|
|
294
|
+
|
|
295
|
+
--------------------------------------------------------------------------------
|
|
296
|
+
|
|
297
|
+
# Contributing
|
|
298
|
+
|
|
299
|
+
All support is welcome, whether it be finding/fixing bugs, improving mod compatibility, adding useful features, improving existing documentation, adding new examples, or anything in-between. Check [`TODO.md`](TODO.md) for a list of features which are (eventually) planned for a future version of Draftsman.
|
|
300
|
+
|
|
301
|
+
Bugs are tracked on the issue page; If you have an issue that's affecting you, search here for your issue and create a new one if it's not there. Feature requests also belong here if you can make a strong case for it's inclusion into the project.
|
|
302
|
+
|
|
303
|
+
If you have a feature request that isn't currently on the TODO list and you believe it might be a good fit for the project, but you're not absolutely sure if it belongs or how it should be implemented into Draftsman, start a [discussion thread here](https://github.com/redruin1/factorio-draftsman/discussions/categories/ideas). If a discussed feature is accepted, it should be added to the TODO list and tracked on the issues page. Questions on how to use Draftsman are also recommended to live in the discussions channel.
|
|
304
|
+
|
|
305
|
+
If you want to contribute, fork the project and dive in. When you're ready, submit a PR with the changes towards the intended branch, describing what exactly the changes intend to do (linking against any relevant issues if necessary). If all checks pass, you can expect the PR to merged in a (relatively) timely manner and pushed to the next minor or major version.
|
|
306
|
+
|
|
307
|
+
If Draftsman is useful to you or any of your projects (and you would like to grease it's continued development) then you can send me a dollar or two here:
|
|
308
|
+
|
|
309
|
+
<a href='https://ko-fi.com/L3L3XMUF' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi5.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# factorio-draftsman
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](https://badge.fury.io/py/factorio-draftsman)
|
|
6
|
+
[](https://factorio-draftsman.readthedocs.io/en/latest/?badge=latest)
|
|
7
|
+
[](https://codecov.io/gh/redruin1/factorio-draftsman)
|
|
8
|
+
[](https://github.com/psf/black)
|
|
9
|
+
[](https://github.com/astral-sh/ruff)
|
|
10
|
+
|
|
11
|
+
`factorio-draftsman` is a Python module for creating and editing blueprints for the game [Factorio](https://factorio.com/).
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
from draftsman.blueprintable import *
|
|
15
|
+
from draftsman.constants import Direction
|
|
16
|
+
from draftsman.entity import *
|
|
17
|
+
|
|
18
|
+
# Create new Blueprints from scratch
|
|
19
|
+
blueprint = Blueprint()
|
|
20
|
+
blueprint.label = "Example"
|
|
21
|
+
blueprint.description = "A blueprint for the readme."
|
|
22
|
+
blueprint.version = (2, 0) # Factorio version 2.0
|
|
23
|
+
|
|
24
|
+
# Add new entities and configure them procedurally
|
|
25
|
+
test_string = "readme"
|
|
26
|
+
for i, char in enumerate(test_string):
|
|
27
|
+
signal_string = "signal-{}".format(char.upper())
|
|
28
|
+
|
|
29
|
+
constant_combinator = ConstantCombinator(tile_position=(i - 2, 0))
|
|
30
|
+
section = constant_combinator.add_section()
|
|
31
|
+
section.set_signal(
|
|
32
|
+
index=0,
|
|
33
|
+
name=signal_string,
|
|
34
|
+
count=0,
|
|
35
|
+
)
|
|
36
|
+
blueprint.entities.append(constant_combinator)
|
|
37
|
+
|
|
38
|
+
display_panel = DisplayPanel(tile_position=(i - 2, 1))
|
|
39
|
+
display_panel.icon = signal_string
|
|
40
|
+
display_panel.always_show_in_alt_mode = True
|
|
41
|
+
blueprint.entities.append(display_panel)
|
|
42
|
+
|
|
43
|
+
# Flexible ways to specify entities
|
|
44
|
+
blueprint.entities.append(
|
|
45
|
+
"constant-combinator",
|
|
46
|
+
id="constant",
|
|
47
|
+
tile_position=(-1, 3),
|
|
48
|
+
direction=Direction.EAST
|
|
49
|
+
)
|
|
50
|
+
blueprint.entities.append(
|
|
51
|
+
"decider-combinator",
|
|
52
|
+
id="clock",
|
|
53
|
+
tile_position=(0, 3),
|
|
54
|
+
direction=Direction.EAST,
|
|
55
|
+
)
|
|
56
|
+
blueprint.entities.append(
|
|
57
|
+
"small-lamp",
|
|
58
|
+
id="blinker",
|
|
59
|
+
tile_position=(2, 3)
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Use IDs for ease of access on complex blueprints
|
|
63
|
+
constant: ConstantCombinator = blueprint.entities["constant"]
|
|
64
|
+
constant.add_section().set_signal(index=0, name="signal-red", count=1)
|
|
65
|
+
|
|
66
|
+
clock: DeciderCombinator = blueprint.entities["clock"]
|
|
67
|
+
clock.conditions = [
|
|
68
|
+
DeciderCombinator.Condition(
|
|
69
|
+
first_signal="signal-red",
|
|
70
|
+
comparator="<=",
|
|
71
|
+
constant=60
|
|
72
|
+
)
|
|
73
|
+
]
|
|
74
|
+
clock.outputs = [
|
|
75
|
+
DeciderCombinator.Output(
|
|
76
|
+
signal="signal-red"
|
|
77
|
+
)
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
blinker: Lamp = blueprint.entities["blinker"]
|
|
81
|
+
blinker.circuit_enabled = True
|
|
82
|
+
blinker.set_circuit_condition("signal-red", "=", 60)
|
|
83
|
+
blinker.use_colors = True
|
|
84
|
+
|
|
85
|
+
# Sophisticated relationship handling with Associations
|
|
86
|
+
blueprint.add_circuit_connection( # Constant to input of decider
|
|
87
|
+
color="green",
|
|
88
|
+
entity_1="constant",
|
|
89
|
+
entity_2="clock"
|
|
90
|
+
)
|
|
91
|
+
blueprint.add_circuit_connection( # Input of decider to output of decider
|
|
92
|
+
color="red", entity_1="clock", side_1="input", entity_2="clock", side_2="output"
|
|
93
|
+
)
|
|
94
|
+
blueprint.add_circuit_connection( # Output of decider to lamp
|
|
95
|
+
color="green", entity_1="clock", side_1="output", entity_2="blinker", side_2="input"
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# Import compressed blueprints
|
|
99
|
+
bp_string = """0eNqllGFrwyAQhv/LfdZhkmUl+SujDJNc2wO9FLVjXfC/z2TZBisrLH4S9d7n3pdDJ+jMBc+OOEA7AfUje2ifJ/B0ZG3mM9YWoQXtPdrOEB+l1f2JGGUFUQDxgG/QFnEvADlQIPwkLJvrC19shy4ViLskAefRJ/HIc88EVA+1gOuyxpkdyKzgX4WyWOpkEb87ODwk6iBP+l27QaZQvcOA0uAhJM83CJVNyPewxlC5KVRuCJWdIXsS2YPIn0N5S/iS/u37n6JNnVZ/1RZ/1RZ/d0XpYVJAm+5+/hEBr+j8gqmfyuaxaeqdKutdU8b4AbwVejE="""
|
|
100
|
+
|
|
101
|
+
# Group entities together and treat them all as one unit
|
|
102
|
+
group = Group.from_string(bp_string)
|
|
103
|
+
for i in range(3):
|
|
104
|
+
blueprint.groups.append(group, position=(i * 4 - 3, 7))
|
|
105
|
+
|
|
106
|
+
# Quickly query Blueprints by region or contents
|
|
107
|
+
ccs = blueprint.find_entities_filtered(name="constant-combinator")
|
|
108
|
+
assert len(ccs) == len(test_string) + 1
|
|
109
|
+
asm_machines: list[AssemblingMachine] = blueprint.find_entities_filtered(type="assembling-machine")
|
|
110
|
+
assert len(asm_machines) == 3
|
|
111
|
+
for asm_machine in asm_machines:
|
|
112
|
+
asm_machine.recipe = "low-density-structure"
|
|
113
|
+
|
|
114
|
+
# Every blueprintable type is supported
|
|
115
|
+
blueprint_book = BlueprintBook()
|
|
116
|
+
blueprint_book.blueprints = [blueprint, UpgradePlanner(), DeconstructionPlanner()]
|
|
117
|
+
|
|
118
|
+
print(blueprint_book.to_string(version=(2, 0))) # Blueprint string to import into Factorio
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+

|
|
122
|
+
|
|
123
|
+
# Overview
|
|
124
|
+
|
|
125
|
+
Simply put, Draftsman attempts to provide a universal solution to the task of creating and manipulating Factorio blueprint strings, which are compressed text strings used by players to share their constructions easily with others.
|
|
126
|
+
Draftsman allows users to programmatically create these strings via script, allowing for designs that would normally be too tedious to design by hand, such as combinator computer compilers, image-to-blueprint converters, pumpjack placers, as well as any other complex or repetitive design better suited for a computer's touch.
|
|
127
|
+
|
|
128
|
+
For a user-friendly timeline of how this project came about, as well as some pretty illustrations of it's capabilities, [you can read an article](https://alt-f4.blog/ALTF4-61/) written for the amazing fan-run community spotlight website [Alt-F4](https://alt-f4.blog/).
|
|
129
|
+
|
|
130
|
+
For more information on what exactly Draftsman is and does, as well as its intended purpose and philosophy, [you can read the documentation here](https://factorio-draftsman.readthedocs.io/en/latest/index.html).
|
|
131
|
+
|
|
132
|
+
For more examples on what exactly you can do with Draftsman, take a look at the [examples folder](https://github.com/redruin1/factorio-draftsman/tree/main/examples), which is organized into different categories for ease of navigation.
|
|
133
|
+
|
|
134
|
+
## Features
|
|
135
|
+
* Compatible with Python >= 3.10
|
|
136
|
+
* Compatible with all versions of Factorio >= 1.0.0
|
|
137
|
+
* Compatible with Factorio mods(!)
|
|
138
|
+
* Well documented
|
|
139
|
+
* Intuitive and flexible API
|
|
140
|
+
* Useful constructs for ease-of-use:
|
|
141
|
+
* Give entities unique string IDs to make association between entities easier
|
|
142
|
+
* Filter entities from blueprints by type, region and other parameters [just like Factorio's own API](https://lua-api.factorio.com/latest/classes/LuaSurface.html#find_entities_filtered)
|
|
143
|
+
* Entities are categorized and organized within `draftsman.data` for easy and flexible iteration
|
|
144
|
+
* Group entities together and manipulate them all as one unit
|
|
145
|
+
* Verbose Errors and Warnings (["Factorio-safety" and "Factorio-correctness"](https://factorio-draftsman.readthedocs.io/en/latest/concepts/validation.html))
|
|
146
|
+
* Expansive and rigorous test suite
|
|
147
|
+
|
|
148
|
+
# Installation
|
|
149
|
+
|
|
150
|
+
## For Users:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
pip install factorio-draftsman
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
This will install the latest version of Draftsman with a copy of pre-generated data from [`factorio-data`](https://github.com/wube/factorio-data) (typically the latest stable version). Having a copy of the game (installed or at all) is not necessary to use Draftsman, but Draftsman can also use data from your user-specific installation.
|
|
157
|
+
|
|
158
|
+
If Factorio updates in-between Draftsman releases, or if you want to update your environment to support mods, then you can modify your Draftsman installation by running the companion command-line tool `draftsman`:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
draftsman factorio-version latest
|
|
162
|
+
draftsman --mods-path "path/to/mods/folder" update
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
For more information on how to use this tool, you can run `draftsman -h` or see it's documentation [here](https://factorio-draftsman.readthedocs.io/en/latest/reference/environment/script.html).
|
|
166
|
+
|
|
167
|
+
## For Developers
|
|
168
|
+
|
|
169
|
+
Clone the repository using your preferred method (making sure submodules are populated) and navigate to the root of the newly cloned repository:
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
git clone --recurse-submodules https://github.com/redruin1/factorio-draftsman.git
|
|
173
|
+
cd factorio-draftsman
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Create a virtual environment of your personal flavor and enter inside of it. If you are looking to contribute to Draftsman however, it's recommended that you use [`uv`](https://github.com/astral-sh/uv) since most of the CI tools use it:
|
|
177
|
+
|
|
178
|
+
```perl
|
|
179
|
+
pip install uv # or via pipx or standalone script, see uv docs
|
|
180
|
+
uv venv
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Install the package in editable mode, alongside the `dev` dependency group (requires modern pip):
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
pip install -e .
|
|
187
|
+
pip install --group dev
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
You should now be able to run the test suite with [`pytest`](https://docs.pytest.org/en/stable/#):
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
python -m pytest test -Werror -vv
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Or - more succinctly - using [`coverage`](https://coverage.readthedocs.io/en/latest/):
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
coverage run
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
To run a mock CI against all supported Python versions, run [`tox`](https://tox.wiki/en/4.27.0/):
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
tox
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
However, Draftsman (>= 3.0) also provides a [`justfile`](https://github.com/casey/just) which has a number of recipes which make contributing much easier.
|
|
209
|
+
Type `just` to see a list of all options:
|
|
210
|
+
|
|
211
|
+
```perl
|
|
212
|
+
Available recipes:
|
|
213
|
+
ci # Run 'lint + test + report-coverage'
|
|
214
|
+
ci-all # Run 'lint + test-all + report-coverage'
|
|
215
|
+
lint *args # Run black and ruff
|
|
216
|
+
test # Run test suite against {current Factorio version, all Python versions}
|
|
217
|
+
test-all # Run test suite against {all Factorio versions, latest Python version} (LONG)
|
|
218
|
+
report-coverage # Combine all coverage files and create HTML report
|
|
219
|
+
benchmark # Run benchmark tests and save profiles for this Draftsman version
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Note that testing currently is only guaranteed to pass with a vanilla [environment](https://factorio-draftsman.readthedocs.io/en/latest/concepts/environment.html).
|
|
223
|
+
|
|
224
|
+
A html-browsable coverage report can be generated with:
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
coverage html
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
To build + check documentation locally:
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
cd docs
|
|
234
|
+
make clean
|
|
235
|
+
make doctest
|
|
236
|
+
make html
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
and then navigate to `docs/build/index.html` to view.
|
|
240
|
+
|
|
241
|
+
--------------------------------------------------------------------------------
|
|
242
|
+
|
|
243
|
+
# Contributing
|
|
244
|
+
|
|
245
|
+
All support is welcome, whether it be finding/fixing bugs, improving mod compatibility, adding useful features, improving existing documentation, adding new examples, or anything in-between. Check [`TODO.md`](TODO.md) for a list of features which are (eventually) planned for a future version of Draftsman.
|
|
246
|
+
|
|
247
|
+
Bugs are tracked on the issue page; If you have an issue that's affecting you, search here for your issue and create a new one if it's not there. Feature requests also belong here if you can make a strong case for it's inclusion into the project.
|
|
248
|
+
|
|
249
|
+
If you have a feature request that isn't currently on the TODO list and you believe it might be a good fit for the project, but you're not absolutely sure if it belongs or how it should be implemented into Draftsman, start a [discussion thread here](https://github.com/redruin1/factorio-draftsman/discussions/categories/ideas). If a discussed feature is accepted, it should be added to the TODO list and tracked on the issues page. Questions on how to use Draftsman are also recommended to live in the discussions channel.
|
|
250
|
+
|
|
251
|
+
If you want to contribute, fork the project and dive in. When you're ready, submit a PR with the changes towards the intended branch, describing what exactly the changes intend to do (linking against any relevant issues if necessary). If all checks pass, you can expect the PR to merged in a (relatively) timely manner and pushed to the next minor or major version.
|
|
252
|
+
|
|
253
|
+
If Draftsman is useful to you or any of your projects (and you would like to grease it's continued development) then you can send me a dollar or two here:
|
|
254
|
+
|
|
255
|
+
<a href='https://ko-fi.com/L3L3XMUF' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi5.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# __init__.py
|
|
2
|
+
"""
|
|
3
|
+
Allows the user to import, create, manipulate, and export Factorio blueprint
|
|
4
|
+
strings.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from draftsman._version import (
|
|
8
|
+
__version__ as __version__,
|
|
9
|
+
__version_info__ as __version_info__,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
import attrs
|
|
13
|
+
|
|
14
|
+
__all__ = ["__version__", "__version_info__", "DEFAULT_FACTORIO_VERSION"]
|
|
15
|
+
|
|
16
|
+
DEFAULT_FACTORIO_VERSION = (2, 0, 0)
|
|
17
|
+
"""
|
|
18
|
+
The Factorio version that Draftsman should assume it is operating under if it
|
|
19
|
+
cannot determine the version from it's current environment, due to its absence
|
|
20
|
+
or corruption. Should rarely (if ever) need to be used, intended to be a
|
|
21
|
+
last-ditch fallback.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# def field(*, default=attrs.NOTHING, omittable=True):
|
|
25
|
+
# """
|
|
26
|
+
# TODO
|
|
27
|
+
# """
|
|
28
|
+
# pass
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def define(cls):
|
|
32
|
+
"""
|
|
33
|
+
Custom `attrs.define` wrapper. Handles Draftsman-specific boilerplate to
|
|
34
|
+
reduce repetition.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
# Grab all specified class validators
|
|
38
|
+
model_validators = [
|
|
39
|
+
v for _, v in cls.__dict__.items() if hasattr(v, "__attrs_class_validator__")
|
|
40
|
+
]
|
|
41
|
+
cls = attrs.define(cls) # field_transformer=field_transformer
|
|
42
|
+
|
|
43
|
+
# Attach class validators to the instance
|
|
44
|
+
cls.__attrs_class_validators__ = model_validators
|
|
45
|
+
|
|
46
|
+
# TODO: we could patch __attrs_post_init__ to run the model validators and
|
|
47
|
+
# conjoin that with any existing class implementation
|
|
48
|
+
return cls
|