Network Wrangler 2.1 Summary:
- supports groups of projects, or plans
- supports co-requisites, pre-requisites, and conflicts
- tighter and more flexible version-compatibility controls
- more enforced documentation
1. Expand the Types to include project, plan, and seed.
- Projects: code representations of changes to a
hwy
ortrn
network. Similar to projects in older versions of wrangler, with updates described below. - Plans: collection of projects and/or other plans. Specified by a file called
planSpecs.csv
with two columns: the first indicates thepath/name
of the project, and the second indicates the Type. - Seed: the baseline starting point for a network. They are similar to projects but are meant to be applied first.
2. Upgrade 'project', 'plan', and 'seed' definition requirements to force more documentation
Every 'project', 'plan', and 'seed' is expected to have an __init__.py
file with functions to return standard information.
champVersion
: This now returns a tuple of the earliest and latest versions of CHAMP this project is compatible with. This is no longer stored inchampVersion.txt
forhwy
projects.wranglerVersion
: A new function that returns a tuple of the earliest and latest versions of NetworkWrangler the a project is compatible withdesc
: Returns a description of the project. This is no longer stored indesc.txt
for hwy projects.year
: Returns the opening year of a project, or the model year if themodelyear
keyword argument is supplied.networks
: A new function that returns a list of the network types that the project applies to. This is used by plans so projects listed in the plan are added to the correct networks.prereqs
: Returns a list of projects which must be applied before this project.coreqs
: Returns a list of projects which should be applied with this project (order doesn't matter though).conflicts
: Returns a list of projects which are known to cause errors when applied with this project.apply
,applyFiles
, andapplyEdits
: Used the same as before, but we recommend using with amodelyear
argument to specify the opening year of a project.
3. Update build_network.py
to support plans and enforce version requirements and corequisites, prerequisites, and conflicts - and checks for potential errors in the begining
- For each 'plan' in each network's project list, the script adds its projects, seeds, and other plans. These are all checked out prior to beginning to build any network.
- For each 'project' in each network's project list (including projects contained within plans), the script checks the project list for prereqs, coreqs, and conflicts, and prompts the user for review and approval before continuing.
- All projects (including projects contained within plans) are cloned and checked out prior to building any network. Only after checking out all projects and checking wranglerVersion, champVersion, prereqs, coreqs, and conflicts are networks built.