Factorio-draftsman

Latest version: v1.1.1

Safety actively analyzes 638741 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 2

1.0.2

* Added `UpgradePlanner` and `DeconstructionPlanner` (40)
* Created an abstract class `Blueprintable` which now implements `Blueprint`, `BlueprintBook`, `UpgradePlanner`, and `DeconstructionPlanner` to increase code reuse
* Added `description` attribute to `Blueprint` and `BlueprintBook` (41)
* Changed the behavior of `draftsman-update` to normalize all mod names to have no spaces (probably not perfect, but should work for now) (49)
* Added a `--path` argument to `draftsman-update` so you can specify exactly where to load mods from instead of only the installation directory (49)
* Draftsman now distributes with a vanilla set of pickle data files, so you no longer need to run `draftsman-update` on first install (suggestion from rpdelaney)
* Rolling Stock (Locomotives and Wagons) should now have proper collisions that are based on their `orientation` and issue correct warnings (47)
* Updated the documentation around `draftsman-update` to make it more clear and reflect recent changes
* Updated all `Blueprintable` documentation files such that they now include a plaintext representation of their JSON structure

1.0.1

* Updated `factorio-data` to version `1.1.65`
* Fixed 38 and 39

1.0.0

This ones' a doozy; for a more verbose explanation see [here](https://github.com/redruin1/factorio-draftsman/discussions/37).

* Updated `factorio-data` to version `1.1.61`
* Added a `Vector` class to represent 2d positions, and changed most of the code to reflect this change
* This is a breaking change, but it should be much more natural to access positions by attribute `x` and `y` instead of `["x"]` and `["y"]`
* By specifying a class like this, custom operators are allowed such as vector math, which means that offsetting positions and other operations have become much easier as a result
* `Vector` has a static member function `from_other()` that constructs a `Vector` object from all valid formats accepted in the past (`tuple`, `dict`, `list`, etc.) which is used in all standard functions, so you shouldn't have to change any of their signatures
* `Vector` also has a `to_dict()` method to turn it back into it's dictionary format for exporting (`{"x": ..., "y": ...}`)
* The `Vector` class is only used on the "outermost" layer due to performance reasons, internally the most common representation is still `list[float, float]`
* Added an abstract `Shape` class, along with two implementations: `AABB` and `Rectangle`
* `AABB` and `Rectangle` are now used for issuing `OverlappingObjectWarning`
* All functions that used to use `Sequences` or `list[list[float], list[float]]` have been changed to `Vector` and `AABB` respectively for user clarity
* Added another class: `CollisionSet`, which is a list of `Shapes` used for checking if two `Entity`s intersect one another
* This was needed because curved rails have 2 collision boxes instead of a single one
* Collision sets also support rotations, which means that rotations are automatically generated or specified manually for edge cases like rails
* In essence, `CollisionSets` provide more flexibility for entity footprints on a per-entity-type (or even per-entity) level
* Added `find_entity_at_position()` so you can simply check for any entity in particular at a position instead of having to use fully-blown `find_entities_filtered` or the more-specific `find_entity()` function
* Abstracted `SpatialHashMap` to be an implementation of abstract class `SpatialDataStructure`, which will allow for different implementations such as quadtrees or other algorithms if they happen to be more performant than hash-mapping (For now all `Collections` still use `SpatialHashMap` though)
* Renamed `entity_hashmap` and `tile_hashmap` to more generic `entity_map` and `tile_map` to reflect the above change
* Move almost all entity insert/set/remove logic to `EntityCollection.on_entity_insert`, `on_entity_set`, and `on_entity_remove`, which gets called from `EntityList.insert` and related
* Added `on_tile_insert`, `on_tile_set`, and `on_tile_remove` to `TileCollection` to mirror the changes to `EntityCollection`
* Added `copy` keyword to `TileList.insert` and `TileList.append` to mirror `EntityList.insert` and `EntityList.append`
* Added Entity/Tile merging
* Added `merge` keyword to both `EntityList.insert/append` and `TileList.insert/append`
* Attempting to use `merge=True` keywords and `copy=False` will result in a `ValueError`, as this behavior is loosely defined (for now at least)
* Rails now properly issue `OverlappingObjectsWarnings`; Rails can overlap each other provided they don't have the exact same position + direction + type
* Another big documentation pass
* Split the `signatures.CONTROL_BEHAVIOR` into many sub implementations, which should improve both safety and (hopefully) performance
* Fixed 24, 25, 27, 32, 33, and 34

0.9.6

* Merged sposker's pull request
* Fixed an bug where `IndexError` would be triggered on setting the final item filter slot
* Updated `signatures.CONTROL_BEHAVIOR` to include the `send_to_train` key
* Merged elswindle's pull request
* Dictionary Blueprints and BlueprintBook's are now properly converted to `Blueprint` and `BlueprintBook` objects when added to a `BlueprintableList`
* Fixed documentation for `FilterMixin.set_item_filters` that labeled `"name"` key as `"signal"`
* Made docs for `FilterMixin.set_item_filters` and `FilterMixin.set_item_filter` more clear
* Changed `signals.raw` to actually be the extraction from `data.raw` so people can query the order strings and other information (17)
* Sorted `signals.raw` according to signal-processing order (virtual -> fluid -> item) instead of item sort order (17)
* Added `signals.type_of` as a more specific structure to fulfill the old functionality of `signals.raw` (17)
* Changed the functionality of `ConstantCombinator` so that attempting to set one of it's signals to a pure virtual signal results in a `DraftsmanWarning` (because for some grotesque reason Factorio actually allows this)
* Renamed `InvalidConnectionError` to more general `InvalidAssociationError` and updated documentation
* Removed requirement for `Groups` to have an ID associated with it (this was required in the past, but is no longer necessary)
* Fixed unable to find connectable entities when calling `Blueprint.generate_power_connections()` on blueprint that contained `Groups` (19)
* Added the capability to specify connections based on entity reference as well instead of just ID or index (`[add/remove]_power_connection`, `[add/remove]_circuit_connection`) (19)
* Made these functions issue `InvalidAssociationError` when attempting to connect two entities that lie outside of the `EntityCollection`
* Added recursive `__contains__` function to `EntityList` to facilitate the above
* Fixed copying of entities between `Blueprints` and `Groups` (20)
* Added capability to deepcopy `Entities`, `Groups`, and `Blueprints`, with appropriate errors
* Added capability to set the `entities` of a `Blueprint` or `Group` to another `Blueprints` or `Groups` `entities` (16)
* Added optional `string` keyword for the constructor of `Group` so you can import a blueprint string directly into a group instead of having to create a "scratch" `Blueprint`

0.9.5

* Added `keywords` to `setup.py`
* Added `__contains__` function to `Blueprint` (I thought it was inferred from `__getitem__`, whoops) (14)
* Added `defines.lua` as a more comprehensive solution to the Factorio `defines` issue (15)
* Added distinguishing between multiple versions of the same mod; the latest mod is always preferred, with warnings for duplicates issued (15)
* Started work on `RailPlanner`
* Other minor documentation changes
* Fixed the old repo link in `setup.py`
* Fixed 13:
* Implemented the functionality according to the game, preserving Factorio safety
* Added the new list `pure_virtual` signals to `draftsman.data.signals` for ease of access/iteration
* Updated documentation to reflect these changes
* Moved initialization of `Blueprint.area` attribute before loading entities in `Blueprint.setup()` (14)

0.9.4

* Added the capability to display any logged messages to during `draftsman-update` with the command line argument `-l` or `--log`
* Added `prep.py` to prepare releases more automatically so I don't miss steps like a fool (maybe I'll integrate something like poetry in the future)
* Updated `env.py` to create the `factorio-mods` folder if it doesn't exist, in case the user accidentally deleted it
* Updated `env.py` so that everything is now sorted (mostly) properly
* Updated readme to point to related Alt-F4 article
* Updated `requirements.txt` to include `build` for development
* Changed the manner in which sort items are searched in `env.py` (related to issue 9)
* Changed the manner in which the order of items are determined so there's less redundancy
* Changed `normalize_module_name` from non-digit characters to alphanumeric characters (duh!) (11)
* Changed `normalize_module_name` to distinguish between "slash" paths and "dot" paths and only convert "dot" paths if found (11)
* Added more duct tape to the local file requiring issue machine (11)
* Removed `temp.py` from Github distribution, it was only really intended as scrap paper for me
* Fixed 10
* Fixed 12

Page 2 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.