#43927: Clean up and modernize generate_packets.py Open Date: 2022-02-19 14:17 Last Update: 2022-09-25 02:30 URL for this Ticket: https://osdn.net//projects/freeciv/ticket/43927 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=12505&tid=43927 --------------------------------------------------------------------- Last Changes/Comment on this Ticket: 2022-09-25 02:30 Updated by: alienvalkyrie Comment: Given that the largest restructuring is done now, I figure it's time to look at what's left before I consider this "cleaned up": Packet keys: correctly handling any number of key fields, and laying the foundation to support any type of key field in the future Cleaning up the (key-related) unfill stuff Turning the type selection if-else into a dictionary Parsing packet flags more straightforwardly (like Field flags) Adding docstrings to everything (and removing then-superfluous doc comments) Unhardcoding the input file (packets.def) path and making it an argument A reasonable general way to name indices for nested arrays of arbitrary depth A bunch of reusability stuff that's mainly intended for importing the module in custom generation scripts (e.g. for things like freeciv-web?): Making it possible to replace the field type hierarchy with a custom set of subclasses Moving all the configuration stuff out of global state (This is roughly the order in which I'll likely do these, based on importance and simplicity.) --------------------------------------------------------------------- Ticket Status: Reporter: alienvalkyrie Owner: alienvalkyrie Type: Tasks Status: Open [Owner assigned] Priority: 5 - Medium MileStone: 3.2.0 Component: Bootstrap Severity: 5 - Medium Resolution: None --------------------------------------------------------------------- Ticket details: This is a meta-ticket for various tasks relating to making common/generate_packets.py more clean and concise. This is mostly a refactoring effort, though some of these changes improve the generated code or make the script work in more contexts. Apart from general code/style cleanup (which should happen at every step along the way), this includes: general cleanup: trailing whitespace, unused imports/variables/functions, etc. #43929 #44011 #44585 use pathlib to handle file paths (in a filesystem-agnostic way) #43930 #43972 use argparse to handle command line arguments #43931 #43938 #43939 use with-blocks and context managers to cleanly manage file access #43932 #43953 #43954 use iteration (generators, list comprehensions and itertools) where appropriate #44007 #44008 #44009 #44010 #44583 #44584 #45190 split large functions into smaller parts #43951 #43952 create new types to better represent certain components #45077 #45080 #45165 #45166 #45206 improve packets.def parsing code #44571 #44572 #44573 #44580 #44582 #45078 #45079 #45081 #45082 #45178 #45179 #45186 modernize string formatting #44574 #44575 #44576 #44577 make use of static type checkers / code analysis #44615 #44762 #44763 clean up fields and methods of classes #44761 #44764 #44765 #44768 remove unneeded / broken features #44975 #45012 simplify and uniformize definition and composition of generated code #44976 #44977 #44978 #45000 #45001 (More to be added as they pop up.) -- Ticket information of Freeciv project Freeciv Project is hosted on OSDN Project URL: https://osdn.net/projects/freeciv/ OSDN: https://osdn.net URL for this Ticket: https://osdn.net/projects/freeciv/ticket/43927 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=12505&tid=43927