Metadata-Version: 2.1
Name: dreadlocks
Version: 0.0.2
Summary: A cross-platform cross-parallelization file-locking software library for Python.
License: BSD-2-Clause OR LGPL-3.0-or-later OR GPL-3.0-or-later
Author: proc-2
Author-email: 153316008+proc-2@users.noreply.github.com
Requires-Python: >=3.9,<4.0
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown

`dreadlocks`
==

> :lock: A cross-platform file-locking software library for Python that
> supports thread-level locks, process-level locks, and both simultaneously.


## API Documentation

See [docs](https://techno-solutionist-collective.github.io/dreadlocks/latest).


## Development

The only external requirements are Python and `poetry`.

`poetry` takes care of setting up a minimal environment with `tox` and `pre-commit` installed.
For that run:

```sh
poetry install --only dev
```

All other environments are managed by `tox` (and uses `poetry` internally).


### Lint

```sh
poetry run tox -e lint-check
```

> :information_source: Some linting errors can be automatically fixed with
> `poetry run tox -e lint`.


###  Type check

```sh
poetry run tox -e type-check
```


### Tests

> :information_source: Add the `-cover` suffix to generate coverage
> information.

#### Unit tests

```sh
poetry run tox -e unit
```

#### Doctests

```sh
poetry run tox -e doctest
```


#### Coverage

If tests have been run with the `-cover` suffix, coverage reports can be
generated with `poetry run tox -e coverage`.

The HTML coverage report can be served to port `8000` with `poetry run tox -e
coverage-serve`.


### Dependencies licenses

Dependencies licenses can be checked with `poetry run tox -e licenses`.


### Licensing

This software library is triple-licensed under the BSD 2-clause, LGPLv3 or
later, and GPLv3 or later.

You must choose to be bound by at least one of these licenses when you use
this work.

`SPDX-License-Identifier: BSD-2-Clause OR LGPL-3.0-or-later OR GPL-3.0-or-later`


## See also

  - [On the Brokenness of File Locking](http://0pointer.de/blog/projects/locking) by [Lennart Poettering](http://0pointer.de).
  - [Addendum on the Brokenness of File Locking](http://0pointer.de/blog/projects/locking2) by [Lennart Poettering](http://0pointer.de).

