## testing.compute_pin_id()


Content-address a pin: `<dataset8>.<hash16>`.


Usage

``` python
testing.compute_pin_id(
    kind,
    identity,
    state,
    dataset_id,
)
```


The hash covers `(kind, locator identity, state)` and is stable across processes and machines, so re-committing an unchanged object is a no-op and identical states dedupe to one pin *within a dataset*. The dataset id in front is the namespace: several datasets can pin the same store and each one's `gc` only ever sees its own pins. Callers pass the *content* state (see [tether.backends.base.content_state()](testing.content_state.md#tether.testing.content_state)).
