# _spool_inventory

<table class=".origin_table">
    <tr>
        <td style="text-align: left; border-style: hidden">*module*  of [dascore.core](`dascore.core`)</td>
        <td style="text-align: right; border-style: hidden">[source](https://github.com/DASDAE/dascore/blob/dev/dascore/core/_spool_inventory.py#L1-L1275)</td>
    </tr>
</table>


Spool-side inventory machinery.

Everything a spool needs to answer questions from an attached DASDAE
inventory lives here: resolving index rows to their inventory contexts,
placing channels on the optical path, selecting and splitting along the
fiber, and the reference type a spool carries an unread inventory as.
`dascore.proc.inventory` keeps the patch-level verb (`Patch.enrich`) and
imports the shared projection primitives from this module, so a selector
means one thing whether a patch or an index row answers it.

This module is internal; nothing here is public API.

## Functions

<table class="table">
  <thead>
    <tr>
            <th scope="col"> Name</th>
            <th scope="col"> Description</th>
    </tr>
  </thead>
  <tbody>
        <tr>
            <td>[acquisition_conflicts](`dascore.core._spool_inventory.acquisition_conflicts`)</td>
            <td>Name the patches whose acquisition changes partway through.</td>
        </tr>
        <tr>
            <td>[attr_owner](`dascore.core._spool_inventory.attr_owner`)</td>
            <td>Return the object a possibly-dotted attr name belongs to, and its field.</td>
        </tr>
        <tr>
            <td>[check_stampable](`dascore.core._spool_inventory.check_stampable`)</td>
            <td>Refuse a stamp which would overwrite the plan's own bookkeeping.</td>
        </tr>
        <tr>
            <td>[combine_inventories](`dascore.core._spool_inventory.combine_inventories`)</td>
            <td>Return the (inventory, enrich kwargs) a union of two spools carries.</td>
        </tr>
        <tr>
            <td>[drops_samples](`dascore.core._spool_inventory.drops_samples`)</td>
            <td>Return whether any row keeps less than the whole of itself.</td>
        </tr>
        <tr>
            <td>[get_attr_values](`dascore.core._spool_inventory.get_attr_values`)</td>
            <td>Return the value each resolved context states for one attr name.</td>
        </tr>
        <tr>
            <td>[get_coord_values](`dascore.core._spool_inventory.get_coord_values`)</td>
            <td>Return the values of one requested coordinate, or None if undefined.</td>
        </tr>
        <tr>
            <td>[get_interrogator](`dascore.core._spool_inventory.get_interrogator`)</td>
            <td>Return the resolved interrogator of an acquisition, if it has one.</td>
        </tr>
        <tr>
            <td>[glob_filter](`dascore.core._spool_inventory.glob_filter`)</td>
            <td>Return a predicate deciding which split values to keep.</td>
        </tr>
        <tr>
            <td>[is_unset](`dascore.core._spool_inventory.is_unset`)</td>
            <td>Return True when an attr holds no information.</td>
        </tr>
        <tr>
            <td>[map_axis_coords](`dascore.core._spool_inventory.map_axis_coords`)</td>
            <td>Return each map axis paired with the name it can be read on.</td>
        </tr>
        <tr>
            <td>[match_resolved](`dascore.core._spool_inventory.match_resolved`)</td>
            <td>Return which of the values an inventory states match a selector.</td>
        </tr>
        <tr>
            <td>[normalize_enrich_kwargs](`dascore.core._spool_inventory.normalize_enrich_kwargs`)</td>
            <td>Canonicalize enrich arguments, rejecting any Patch.enrich would.</td>
        </tr>
        <tr>
            <td>[readable_on](`dascore.core._spool_inventory.readable_on`)</td>
            <td>The names a map could be read on, whichever axis answers.</td>
        </tr>
        <tr>
            <td>[refuse_rows](`dascore.core._spool_inventory.refuse_rows`)</td>
            <td>Raise naming the patches an inventory verb cannot handle, and why.</td>
        </tr>
        <tr>
            <td>[report_unconformed](`dascore.core._spool_inventory.report_unconformed`)</td>
            <td>Say what conforming is about to drop, as loudly as it was asked to.</td>
        </tr>
        <tr>
            <td>[resolution_columns](`dascore.core._spool_inventory.resolution_columns`)</td>
            <td>Return the columns a relation resolves against an inventory with.</td>
        </tr>
        <tr>
            <td>[resolve_channel_pieces](`dascore.core._spool_inventory.resolve_channel_pieces`)</td>
            <td>Return the channel dimension, each row's kept pieces, and refusals.</td>
        </tr>
        <tr>
            <td>[resolve_contexts](`dascore.core._spool_inventory.resolve_contexts`)</td>
            <td>Resolve index rows to the one inventory context each has, or to None.</td>
        </tr>
        <tr>
            <td>[resolve_row_epochs](`dascore.core._spool_inventory.resolve_row_epochs`)</td>
            <td>Report how each index row sits against the inventory's epochs.</td>
        </tr>
        <tr>
            <td>[resolve_split_pieces](`dascore.core._spool_inventory.resolve_split_pieces`)</td>
            <td>Return the channel dimension, each row's pieces by value, and refusals.</td>
        </tr>
        <tr>
            <td>[stated_channels](`dascore.core._spool_inventory.stated_channels`)</td>
            <td>Return the channel selectors which actually select something.</td>
        </tr>
        <tr>
            <td>[unsubdividable](`dascore.core._spool_inventory.unsubdividable`)</td>
            <td>Name the patches which must be split but state no sampling interval.</td>
        </tr>
        <tr>
            <td>[validate_enrich_selection](`dascore.core._spool_inventory.validate_enrich_selection`)</td>
            <td>Refuse None, the retired spelling of enrich's False off switch.</td>
        </tr>
  </tbody>
</table>

## Classes

<table class="table">
  <thead>
    <tr>
            <th scope="col"> Name</th>
            <th scope="col"> Description</th>
    </tr>
  </thead>
  <tbody>
        <tr>
            <td>[InventoryRef](`dascore.core._spool_inventory.InventoryRef`)</td>
            <td>An inventory a spool has been pointed at but has not read.</td>
        </tr>
        <tr>
            <td>[PlacedRow](`dascore.core._spool_inventory.PlacedRow`)</td>
            <td>One index row's channels, placed on its optical path.</td>
        </tr>
        <tr>
            <td>[RowEpochs](`dascore.core._spool_inventory.RowEpochs`)</td>
            <td>How one index row sits against the epochs of its acquisition_key.</td>
        </tr>
  </tbody>
</table>

