[Freeciv-tickets] [freeciv] #43927: Clean up and modernize generate_packets.py

Back to archive index
OSDN Ticket System norep****@osdn*****
Sun Sep 25 09:30:28 JST 2022


#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



More information about the Freeciv-tickets mailing list
Back to archive index