Package bitmask using hatch

This commit is contained in:
dogeystamp 2022-07-31 19:35:09 -04:00
parent edc9c4d353
commit 54bd28795b
Signed by: dogeystamp
GPG Key ID: 7225FE3592EFFA38
7 changed files with 124 additions and 23 deletions

3
.gitignore vendored
View File

@ -1 +1,4 @@
__pycache__/ __pycache__/
dist
tags
.coverage

45
README.md Normal file
View File

@ -0,0 +1,45 @@
# Bitmask
Implementation of a Bitmask class in Python, allowing easy manipulation of EnumFlag values.
## Features
* create bitmasks from any EnumFlag type
* simple "flag in Bitmask" syntax
* bitwise operations, e.g. AND (&), OR (|), XOR (^)
* assignment with operators (+=, -=, &=, etc.)
* convenience functions like Bitmask.add(), or Bitmask.discard()
For development and tinkering:
* included unit tests
* ample documentation and examples in code
## Example usage
```python
from bitmask import Bitmask
from enum import IntFlag
class Desc(IntFlag):
SMALL = 1
ROUND = 1 << 1
FUNKY = 1 << 2
LARGE = 1 << 3
marble = Bitmask(Desc, Desc.SMALL, Desc.ROUND, Desc.FUNKY)
Desc.SMALL in marble
>>> True
Desc.LARGE in marble
>>> False
Bitmask(Desc, Desc.SMALL, Desc.ROUND) in marble
>>> True
```

4
bitmask/__about__.py Normal file
View File

@ -0,0 +1,4 @@
# Copyright 2022 dogeystamp <dogeystamp@disroot.org>
# See LICENSE file for more details.
__version__ = "0.0.1"

4
bitmask/__init__.py Normal file
View File

@ -0,0 +1,4 @@
# Copyright 2022 dogeystamp <dogeystamp@disroot.org>
# See LICENSE file for more details.
from .bitmask import Bitmask

View File

@ -1,26 +1,5 @@
# Copyright 2022 dogeystamp <dogeystamp@disroot.org> # Copyright 2022 dogeystamp <dogeystamp@disroot.org>
# # See LICENSE file for more details.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
"""Utilities for manipulating bitmasks.""" """Utilities for manipulating bitmasks."""

View File

@ -1,3 +1,6 @@
# Copyright 2022 dogeystamp <dogeystamp@disroot.org>
# See LICENSE file for more details.
from bitmask import Bitmask from bitmask import Bitmask
from enum import IntFlag from enum import IntFlag
import unittest import unittest

63
pyproject.toml Normal file
View File

@ -0,0 +1,63 @@
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "bitmask"
description = 'Featureful bitmask implementation.'
readme = "README.md"
requires-python = ">=3.7"
license = "MIT"
keywords = []
authors = [
{ name = "dogeystamp", email = "dogeystamp@disroot.org" },
]
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
dependencies = []
dynamic = ["version"]
[project.urls]
Documentation = "https://github.com/dogeystamp/bitmask#readme"
Issues = "https://github.com/dogeystamp/bitmask/issues"
Source = "https://github.com/dogeystamp/bitmask"
[tool.hatch.version]
path = "bitmask/__about__.py"
[tool.hatch.build.targets.sdist]
[tool.hatch.build.targets.wheel]
[tool.hatch.envs.default]
dependencies = [
"pytest",
"pytest-cov",
]
[tool.hatch.envs.default.scripts]
cov = "pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=bitmask --cov=tests"
no-cov = "cov --no-cov"
[[tool.hatch.envs.test.matrix]]
python = ["37", "38", "39", "310"]
[tool.coverage.run]
branch = true
parallel = true
omit = [
"bitmask/__about__.py",
]
[tool.coverage.report]
exclude_lines = [
"no cov",
"if __name__ == .__main__.:",
"if TYPE_CHECKING:",
]