bitmath

Проекты, которые следуют приведенным ниже лучшим практикам, могут добровольно и самостоятельно оценить себя и продемонстрировать, что они получили значок Open Source Security Foundation (OpenSSF).

Не существует набора практик, гарантирующего, что у программного обеспечения никогда не будет недостатков или уязвимостей; даже формальные методы могут не помочь, если спецификации или допущения ошибочны. Также не существует какой-либо практики, которая могла бы гарантировать, что проект будет поддерживать здоровое и хорошо функционирующее сообщество разработчиков. Однако следующие хорошие правила могут помочь улучшить результаты проектов. Например, некоторые правила описывают ревью несколькими участниками перед выпуском, что может помочь найти технические уязвимости, которые было бы сложно найти другим способом, и помочь построить доверие и желание дальнейшего взаимодействия между разработчиками из разных компаний. Чтобы получить значок, нужно выполнить все критерии с ключевыми словами "НЕОБХОДИМО"/"ОБЯЗАН"/"НЕДОПУСТИМО", все критерии со словом "СЛЕДУЕТ" либо должны удовлетворяться, либо должно быть приведено обоснование их невыполнения, и все критерии со словом "ЖЕЛАТЕЛЬНО" могут быть удовлетворены ИЛИ неудовлетворены (желательно, чтобы они были хотя бы рассмотрены). Если вы хотите ввести общий комментарий вместо объяснения, почему текущая ситуация приемлема, начните текст с '//' и пробела. Приветствуется обратная связь через сайт на GitHub в виде issues или pull requests. Существует также список рассылки для общих вопросов.

Мы с удовольствием предоставляем информацию на нескольких языках, однако, если есть какой-либо конфликт или несоответствие между переводами, английская версия является авторитетной.
Если это ваш проект, пожалуйста, отобразите статус вашего базового значка на странице проекта! Статус базового значка выглядит так: Базовый уровень значка для проекта 12749 - baseline-2 Вот как встроить базовый значок:
Вы можете показать статус базового значка, вставив это в ваш файл markdown:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/12749/baseline)](https://www.bestpractices.dev/projects/12749)
или вставив это в ваш HTML:
<a href="https://www.bestpractices.dev/projects/12749"><img src="https://www.bestpractices.dev/projects/12749/baseline"></a>


Это критерии Базового Уровня 2. Это критерии версии v2026.02.19.

Baseline Series: Базовый уровень 1 Базовый Уровень 2 Базовый Уровень 3

        

 Основы

  • Общая

    Обратите внимание, что другие проекты могут использовать то же имя.

    Python module to work with file sizes like numbers - convert, compare, sort, and format across any prefix unit

    Используйте формат выражения лицензии SPDX; примеры включают «Apache-2.0», «BSD-2-Clause», «BSD-3-Clause», «GPL-2.0+», «LGPL-3.0+», «MIT» и «(BSD-2-Clause OR Ruby)».
    Если используется более одного языка, перечислите их через запятую (пробелы необязательны), и отсортируйте их от наиболее до наименее используемого. Если список длинный, пожалуйста, перечислите по крайней мере три наиболее распространенных. Если языка нет (например, это проект только для документации или только для тестирования), используйте один символ «-» (минус). Для каждого языка используйте общепринятую капитализацию названия, например «JavaScript».
    Common Platform Enumeration (CPE) - это структурированная схема именования для информационных систем, программного обеспечения и пакетов. Она используется в ряде систем и баз данных для отчетов об уязвимостях.

 Элементы управления 19/19

  • Элементы управления


    Когда задача CI/CD выполняется без указания прав доступа, система CI/CD ОБЯЗАНА по умолчанию назначать задаче минимальные права, предоставленные в конвейере. [OSPS-AC-04.01]
    Настройте параметры проекта для назначения минимальных доступных прав новым конвейерам по умолчанию, предоставляя дополнительные права только при необходимости для конкретных задач.

    Every workflow in .github/workflows/ declares permissions: read-all at the top level, so any task without an explicit permission block runs read-only. Elevated permissions (security-events: write, id-token: write) are scoped to specific jobs only where required. Verifiable at https://github.com/timlnx/bitmath/tree/master/.github/workflows



    Когда создается официальный выпуск, этому выпуску ОБЯЗАН быть назначен уникальный идентификатор версии. [OSPS-BR-02.01]
    Присваивайте уникальный идентификатор версии каждому выпуску, создаваемому проектом, следуя согласованному соглашению о наименовании или схеме нумерации. Примеры включают SemVer, CalVer или идентификатор коммита git.

    Releases follow Semantic Versioning. The single source of truth is the VERSION file (https://github.com/timlnx/bitmath/blob/master/VERSION), which pyproject.toml reads dynamically via [tool.hatch.version]. Each release is tagged in git and published to PyPI under its SemVer identifier: https://github.com/timlnx/bitmath/releases



    Когда создается официальный выпуск, этот выпуск ОБЯЗАН содержать описательный журнал функциональных изменений и изменений безопасности. [OSPS-BR-04.01]
    Убедитесь, что все выпуски содержат описательный журнал изменений. Рекомендуется обеспечить, чтобы журнал изменений был читаемым человеком и содержал более подробные сведения, чем сообщения коммитов, такие как описания влияния на безопасность или релевантность для различных сценариев использования. Для обеспечения машиночитаемости размещайте содержимое под заголовком markdown, таким как "## Changelog".

    Every release has a corresponding section in NEWS.rst (https://github.com/timlnx/bitmath/blob/master/NEWS.rst) describing functional changes, breaking changes, and security-relevant modifications in human-readable prose well beyond commit-message granularity. The same content is also published to GitHub Releases: https://github.com/timlnx/bitmath/releases



    Когда конвейер сборки и выпуска загружает зависимости, он ОБЯЗАН использовать стандартизированные инструменты, где они доступны. [OSPS-BR-05.01]
    Используйте общие инструменты для вашей экосистемы, такие как менеджеры пакетов или инструменты управления зависимостями для загрузки зависимостей во время сборки. Это может включать использование файла зависимостей, lock-файла или манифеста для указания требуемых зависимостей, которые затем подключаются системой сборки.

    Dependencies are managed through the standard Python packaging stack: pyproject.toml declares build and project metadata per PEP 517/518/621 (https://github.com/timlnx/bitmath/blob/master/pyproject.toml), Hatchling is the build backend, and requirements.txt (https://github.com/timlnx/bitmath/blob/master/requirements.txt) pins the development dependency set. Runtime dependencies are intentionally zero.



    Когда создается официальный выпуск, этот выпуск ОБЯЗАН быть подписан или учтен в подписанном манифесте, включающем криптографические хеши каждого актива. [OSPS-BR-06.01]
    Подписывайте все выпущенные программные активы во время сборки с использованием криптографической подписи или аттестаций, таких как подпись GPG или PGP, подписи Sigstore, происхождение SLSA или SLSA VSA. Включите криптографические хеши каждого актива в подписанный манифест или файл метаданных.

    Releases are published to PyPI via PyPI Trusted Publishing (OIDC), which produces sigstore-backed PEP 740 attestations attached to every artifact. PyPI also publishes a SHA-256 hash for each released file. The publish workflow is at https://github.com/timlnx/bitmath/blob/master/.github/workflows/publish.yml and trust-publisher metadata is visible on the PyPI project page: https://pypi.org/project/bitmath/



    Когда проект создал выпуск, документация проекта ОБЯЗАНА включать описание того, как проект выбирает, получает и отслеживает свои зависимости. [OSPS-DO-06.01]
    Рекомендуется публиковать эту информацию вместе с технической документацией и документацией по дизайну проекта в общедоступном ресурсе, таком как репозиторий исходного кода, веб-сайт проекта или другой канал.

    The "Components" section of the contributing guide (https://bitmath.readthedocs.io/en/latest/contributing.html#components) enumerates every development dependency with its purpose and rationale. The zero-runtime-dependency policy and the use of pyproject.toml + requirements.txt for tracking are documented in CLAUDE.md (https://github.com/timlnx/bitmath/blob/master/CLAUDE.md) and visible in pyproject.toml directly.



    Документация проекта ДОЛЖНА включать инструкции по сборке программного обеспечения, включая необходимые библиотеки, фреймворки, SDK и зависимости. [OSPS-DO-07.01]
    Рекомендуется публиковать эту информацию вместе с документацией для участников проекта, например в файле CONTRIBUTING.md или другой документации по задачам разработчика. Это также может быть задокументировано с помощью целей Makefile или других сценариев автоматизации.

    The contributing guide's "Makefile Targets" section (https://bitmath.readthedocs.io/en/latest/contributing.html#makefile-targets) documents make ci, make build, make docs, and make clean, including their behavior and when to use each. The README also includes a quick-start. The Makefile itself (https://github.com/timlnx/bitmath/blob/master/Makefile) is the authoritative build automation.



    Пока проект активен, документация проекта ОБЯЗАНА включать список членов проекта с доступом к критическим ресурсам. [OSPS-GV-01.01]
    Документируйте участников проекта и их роли с помощью таких артефактов, как members.md, governance.md, maintainers.md или аналогичного файла в репозитории исходного кода проекта. Это может быть просто включение имен или учетных записей в список сопровождающих или более сложное в зависимости от управления проектом.

    MAINTAINERS.md (https://github.com/timlnx/bitmath/blob/master/MAINTAINERS.md) lists the current maintainer (Tim Case / @timlnx) and explicitly enumerates every sensitive resource that person has access to: the GitHub repository (admin), the PyPI project (via OIDC), the Read The Docs project, and the security-reporting email address.



    Пока проект активен, документация проекта ОБЯЗАНА включать описания ролей и обязанностей для членов проекта. [OSPS-GV-01.02]
    Документируйте участников проекта и их роли с помощью таких артефактов, как members.md, governance.md, maintainers.md или аналогичного файла в репозитории исходного кода проекта.

    MAINTAINERS.md (https://github.com/timlnx/bitmath/blob/master/MAINTAINERS.md) describes the maintainer role, responsibilities (PR review, releases, security triage, Code of Conduct enforcement, dependency surface oversight), the decision-making process, and a standing open request for a Debian/Ubuntu co-maintainer (tracked in https://github.com/timlnx/bitmath/issues/117).



    Пока проект активен, документация проекта ОБЯЗАНА включать руководство для участников кода, которое включает требования к приемлемым вкладам. [OSPS-GV-03.02]
    Расширьте содержимое CONTRIBUTING.md или CONTRIBUTING/ в документации проекта, чтобы изложить требования к приемлемым вкладам, включая стандарты кодирования, требования к тестированию и руководства по отправке для участников кода. Рекомендуется, чтобы это руководство было источником истины как для участников, так и для утверждающих.

    The contributing guide (https://bitmath.readthedocs.io/en/latest/contributing.html) documents the requirements for acceptable contributions including: code style (pycodestyle PEP 8 + pylint 10.00/10 target), commit message conventions, the pull request workflow with required CI status checks, testing expectations (unit tests for new functionality), the supported Python version policy, and the Makefile targets contributors should run locally before submitting.



    Пока проект активен, система контроля версий ОБЯЗАНА требовать от всех участников кода утверждать, что они имеют законное право вносить соответствующий вклад в каждом коммите. [OSPS-LE-01.01]
    Включите DCO в репозиторий проекта, требуя от участников кода утверждать, что они имеют законное право вносить соответствующий вклад в каждом коммите. Используйте проверку статуса, чтобы убедиться, что утверждение сделано. CLA также удовлетворяет этому требованию. Некоторые системы контроля версий, такие как GitHub, могут включать это в условия обслуживания платформы.

    bitmath is hosted on GitHub. Per the GitHub Terms of Service, §D.6 "Contributions Under Repository License," every contributor pushing to a public repository licenses their contribution under the repository's license by the act of pushing. The OSPS criterion text itself acknowledges: "Some version control systems, such as GitHub, may include this in the platform terms of service." This control is satisfied via that mechanism.



    При внесении коммита в основную ветку все автоматические проверки статуса для коммитов ДОЛЖНЫ пройти успешно или быть явно обойдены вручную. [OSPS-QA-03.01]
    Настройте систему контроля версий проекта таким образом, чтобы все автоматические проверки статуса должны были пройти успешно или требовать ручного подтверждения перед тем, как коммит может быть объединен с основной веткой. Рекомендуется НЕ настраивать необязательные проверки статуса как требование успешного прохождения или провала, которые утверждающие могут быть склонны обойти.

    Branch protection on master requires 17 status checks to pass before any commit can be merged: the full Python 3.9–3.13 × {macOS, Ubuntu, Windows} test matrix plus CodeQL and Bandit. enforce_admins: true so even the repo owner cannot bypass these checks.



    Перед принятием коммита в проекте ДОЛЖЕН выполняться хотя бы один автоматизированный набор тестов в конвейере CI/CD для обеспечения соответствия изменений ожиданиям. [OSPS-QA-06.01]
    Автоматизированные тесты должны выполняться перед каждым объединением с основной веткой. Набор тестов должен выполняться в конвейере CI/CD, и результаты должны быть видны всем участникам. Набор тестов должен выполняться в согласованной среде и таким образом, чтобы участники могли выполнять тесты локально. Примеры наборов тестов включают модульные тесты, интеграционные тесты и сквозные тесты.

    The .github/workflows/python.yml workflow (https://github.com/timlnx/bitmath/blob/master/.github/workflows/python.yml) runs the full pytest suite on every push and pull request, across Python 3.9, 3.10, 3.11, 3.12, and 3.13 on macOS, Ubuntu, and Windows. Test results are publicly visible on every PR, and the same tests can be run locally via make ci.



    Когда проект выпустил релиз, документация проекта ДОЛЖНА включать проектную документацию, демонстрирующую все действия и участников в системе. [OSPS-SA-01.01]
    Включите в документацию проекта проектные описания, объясняющие действия и участников. Участники включают любую подсистему или сущность, которая может повлиять на другой сегмент в системе. Убедитесь, что эта информация обновляется для новых функций или критических изменений.

    ARCHITECTURE.md (https://github.com/timlnx/bitmath/blob/master/ARCHITECTURE.md) at the repository root documents the system as actors and actions across two scopes: the runtime library (user code → public API → class hierarchy → OS abstraction layer) and the build/release pipeline (PyPI flow plus the parallel Packit-driven Fedora/EPEL RPM flow). The Maintenance section establishes an update contract tied to public API, build pipeline, and trust boundary changes, with review at every minor release.



    Когда проект выпустил релиз, документация проекта ДОЛЖНА включать описания всех внешних программных интерфейсов выпущенных программных активов. [OSPS-SA-02.01]
    Документируйте все программные интерфейсы (API) выпущенных программных активов, объясняя, как пользователи могут взаимодействовать с программным обеспечением и какие данные ожидаются или производятся. Убедитесь, что эта информация обновляется для новых функций или критических изменений.

    Every public class, method, and module-level function in bitmath has reference documentation at https://bitmath.readthedocs.io/ covering inputs, outputs, exceptions, and usage examples. The documentation source is in docsite/source/ and is regenerated from the codebase on every release.



    Когда проект выпустил релиз, проект ДОЛЖЕН провести оценку безопасности для понимания наиболее вероятных и значимых потенциальных проблем безопасности, которые могут возникнуть в программном обеспечении. [OSPS-SA-03.01]
    Проведение оценки безопасности информирует как членов проекта, так и конечных потребителей о том, что проект понимает, какие проблемы могут возникнуть в программном обеспечении. Понимание того, какие угрозы могут быть реализованы, помогает проекту управлять рисками и справляться с ними. Эта информация полезна для конечных потребителей для демонстрации компетентности в области безопасности и практик проекта. Убедитесь, что эта информация обновляется для новых функций или критических изменений.

    SECURITY_ASSESSMENT.md (https://github.com/timlnx/bitmath/blob/master/SECURITY_ASSESSMENT.md) is a standing threat model that describes: what bitmath does and deliberately does not do (no network, no eval, no subprocess, zero runtime dependencies); the realistic attack surfaces ranked by concern (parse_string, filesystem helpers, query_device_capacity, the build/release pipeline); the mitigations in place for each; and the automated security tooling continuously assessing the project (Bandit, CodeQL, OSSF Scorecard, Dependabot, GitHub secret scanning). It is committed to revisit at every minor release.



    Пока проект активен, документация проекта ДОЛЖНА включать политику координированного раскрытия уязвимостей (CVD) с четко определенными сроками ответа. [OSPS-VM-01.01]
    Создайте файл SECURITY.md в корневом каталоге, описывающий политику проекта для координированного раскрытия уязвимостей. Включите метод сообщения об уязвимостях. Установите ожидания относительно того, как проект будет реагировать и решать сообщенные проблемы.

    SECURITY.md (https://github.com/timlnx/bitmath/blob/master/SECURITY.md) documents the coordinated vulnerability disclosure process with explicit response timeframes: acknowledgement of receipt within 72 hours, initial triage assessment within 7 days, and coordinated disclosure synchronized with the patch release that contains the fix. Backup contact channels are provided in case the primary email path fails.



    Пока проект активен, документация проекта ДОЛЖНА предоставлять средства для приватного сообщения об уязвимостях непосредственно контактам по безопасности в проекте. [OSPS-VM-03.01]
    Предоставьте средства для того, чтобы исследователи безопасности могли приватно сообщать об уязвимостях в проект. Это может быть специальный адрес электронной почты, веб-форма, специализированные инструменты системы контроля версий, адреса электронной почты контактов по безопасности или другие методы.

    Two private reporting channels are available, both documented in SECURITY.md (https://github.com/timlnx/bitmath/blob/master/SECURITY.md): GitHub's native Private Vulnerability Reporting (enabled on the repository, accessible via the Security tab), and direct email to bitmath@lnx.cx. Bluesky and Instagram are listed as emergency backup channels if both primary methods fail.



    Пока проект активен, документация проекта ДОЛЖНА публично публиковать данные об обнаруженных уязвимостях. [OSPS-VM-04.01]
    Предоставляйте информацию об известных уязвимостях в предсказуемом публичном канале, таком как запись CVE, запись в блоге или другом носителе. По мере возможности эта информация должна включать затронутые версии, как потребитель может определить, уязвим ли он, и инструкции по смягчению последствий или исправлению.

    The project publishes vulnerability information through GitHub Security Advisories (https://github.com/timlnx/bitmath/security/advisories) with CVE numbers when applicable, and through the relevant version's section in NEWS.rst. As of submission, zero vulnerabilities have been reported or confirmed against bitmath, so no advisories exist yet, but the publication channel is configured and operational.



Эти данные доступны по лицензии Community Data License Agreement – Permissive, Version 2.0 (CDLA-Permissive-2.0). Это означает, что получатель данных может распространять данные с изменениями или без них, при условии, что получатель данных предоставляет текст данного соглашения вместе с распространяемыми данными. Пожалуйста, укажите в качестве источника Tim Case и участников OpenSSF Best Practices badge.

Владелец анкеты на значок проекта: Tim Case.
2026-05-04 23:07:38 UTC, последнее изменение сделано 2026-05-24 07:07:48 UTC. Последний раз условия для получения значка были выполнены 2026-05-24 04:07:11 UTC.