Skip to content

Wrangler 2 + Plans!

Latest
Compare
Choose a tag to compare
@e-lo e-lo released this 12 Feb 22:30
· 12 commits to master since this release

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 or trn 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 the path/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 in champVersion.txt for hwy projects.
  • wranglerVersion: A new function that returns a tuple of the earliest and latest versions of NetworkWrangler the a project is compatible with
  • desc: Returns a description of the project. This is no longer stored in desc.txt for hwy projects.
  • year: Returns the opening year of a project, or the model year if the modelyear 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, and applyEdits: Used the same as before, but we recommend using with a modelyear 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.