class_docstr: Locations must have the base master at the origin (ie. 0).
  
  If the extrapolate argument is set to True, then values are extrapolated
  outside the axis range.
  
    >>> from pprint import pprint
    >>> locations = [       {'wght':100},       {'wght':-100},       {'wght':-180},       {'wdth':+.3},       {'wght':+120,'wdth':.3},       {'wght':+120,'wdth':.2},       {},       {'wght':+180,'wdth':.3},       {'wght':+180},       ]
    >>> model = VariationModel(locations, axisOrder=['wght'])
    >>> pprint(model.locations)
    [{},
     {'wght': -100},
     {'wght': -180},
     {'wght': 100},
     {'wght': 180},
     {'wdth': 0.3},
     {'wdth': 0.3, 'wght': 180},
     {'wdth': 0.3, 'wght': 120},
     {'wdth': 0.2, 'wght': 120}]
    >>> pprint(model.deltaWeights)
    [{},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0, 4: 1.0, 5: 1.0},
     {0: 1.0, 3: 0.75, 4: 0.25, 5: 1.0, 6: 0.6666666666666666},
     {0: 1.0,
      3: 0.75,
      4: 0.25,
      5: 0.6666666666666667,
      6: 0.4444444444444445,
      7: 0.6666666666666667}]
docstr: Return a sub-model and the items that are not None.
  
  The sub-model is necessary for working with the subset
  of items when some are None.
  
  The sub-model is cached.
docstr_tok: ["Return","a","sub-model","and","the","items","that","are","not","None",".","The","sub-model","is","necessary","for","working","with","the","subset","of","items","when","some","are","None",".","The","sub-model","is","cached","."]
code: def getSubModel(self, items):
      """Return a sub-model and the items that are not None.
  
      The sub-model is necessary for working with the subset
      of items when some are None.
  
      The sub-model is cached."""
      if None not in items:
          return self, items
      key = tuple(v is not None for v in items)
      subModel = self._subModels.get(key)
      if subModel is None:
          subModel = VariationModel(
              subList(key, self.origLocations), self.axisOrder
          )
          self._subModels[key] = subModel
      return subModel, subList(key, items)
  
imports: from fontTools.misc.roundTools import noRound
  from .errors import VariationModelError
label_desc: Use image node_id 2 for calling the VariationModel obj's underlying member method code with example usage: obj.getSubModel(items) and returns: subModel,  subList, self,  items