Skip to main content

Инструментарий XBSL (1С:Элемент): линтер, LSP, документация, индекс проекта, скаффолдинг метаданных

Project description

xbsl

English · Русский

CI

The XBSL (1C:Element) toolkit: a linter with autofixes, an LSP server, a project index, platform documentation search, metadata scaffolding and an MCP server for AI agents. It works on Name.yaml (element description) and Name.xbsl (code module) pairs – before the server-side compilation that happens on deploy.

Before 0.16 the project was named xbsl-lint (the xbsllint package). The old names keep working: the xbsllint* commands are aliases of the new ones, import xbsllint returns the xbsl modules, and both spellings of the environment variables and entry-point groups are honored.

Not affiliated with 1C. "1C:Element", "1C:Fresh" and related names are trademarks of their respective owners. Language data is generated from your own distribution. See NOTICE.

Development notes and updates (in Russian): the 1C × AI: engineering workshop Telegram channel.

Why

1C:Element has no external tooling: the only code check is the server-side compilation on deploy – it is slow and knows nothing about project conventions. xbsl gives fast local feedback, catches what the compiler does not check at all, and takes over the metadata mechanics – creating objects, attributes and forms.

How it works

One engine, four surfaces. The core reads the Имя.yaml + Имя.xbsl pairs, and the scaffolding writes them back; the CLI, the LSP server, the MCP server and the web UI are thin adapters over the same core, so every surface sees the same rules, data and templates:

The engine core (linter, autofixes, project index, docs search) and the metadata scaffolding read and write the project sources; a private plugin adds Element language data and custom rules via entry points; the CLI, the LSP server (VS Code), the MCP server (AI agents) and the web UI are surfaces over the same core

Step 1: generate the language data

The linter relies on language tables (bilingual keywords, operators), an stdlib type catalog, and the configuration metamodel (element properties). XBSL is built on Eclipse Xtext + ANTLR; these are extracted from your 1C:Element distribution (the InternalBsl.g grammar, the documentation, and the .xcore metamodel) and are NOT bundled in this repository. Generate them locally:

python tools/extract_grammar.py   --dist "<path to the 1C:Element distribution>"
python tools/extract_stdlib.py    --dist "<path to the 1C:Element distribution>"
python tools/extract_metamodel.py --dist "<path to the 1C:Element distribution>"

The scripts auto-detect the platform version and place the data under xbsl/data/element/<version>/ (this folder is gitignored). Without the data, the linter and the tests will tell you to generate it. Pass --data-dir (or set XBSL_DATA_DIR) to write the data somewhere else – for instance into a private package that ships it, see Extending.

Step 2: install and run

pip install xbsl            # or, from a clone: pip install -e .
xbsl path/to/sources        # or: python -m xbsl path/to/sources
xbsl self-update            # upgrade to the latest PyPI version

self-update upgrades the package by unpacking the wheel straight into site-packages – safe even when pip install --upgrade fails with WinError 32 because an exe is busy (the typical case: xbsl-lsp.exe held by the VS Code LSP server, xbsl-mcp.exe by an agent's MCP session). The busy stubs are left alone and pick up the new code on the next start; restart the long-living processes after the update. --version X.Y.Z installs a specific version. In an editable install from a clone the command refuses – git pull updates that one.

The extractors from step 1 ship with the repository, not with the PyPI package – clone the repository to generate the data.

The hot modules (the lexer and the parser) can be compiled by mypyc into C extensions: XBSL_MYPYC=1 at build time (needs mypy and a C compiler: MSVC Build Tools on Windows, Xcode CLT on macOS, gcc on Linux). Users never need a compiler: the ready-made native wheels are built by CI (native-wheels.yml), and without a matching wheel the package runs as plain Python – no compiler, no loss of functionality.

Flags: --list-rules, --where (data root, source and versions), --select/--enable/--ignore (by rule id, rule group – the part of the id before / – or tier letter), --fix, --baseline/--write-baseline, --element-version, --data-dir, --lang, --format text|json|codeclimate. --fix repairs the mechanical findings in place – trailing whitespace, typography characters (em dash → en dash, ..., curly quotes and comment guillemets → straight), and mixed newlines (normalized to the dominant style) – then reports whatever is left. It only applies unambiguous edits and only for rules active in the run (so --fix --enable typography also pays down the em-dash/guillemets debt); anything needing judgment is never touched. For editor integration, --stdin --filename NAME checks a single buffer read from stdin (per-file rules only); the JSON payload ({diagnostics, summary}) is the same one the MCP server returns. xbsl --index PATH dumps a JSON index of the project to stdout instead of linting – the objects (with tabular sections, module-declared local types and the member families for dot completion), the method declarations with their annotations and the named form components, with POSIX paths relative to the root and 1-based lines – for go-to-definition and completion in editors. --format codeclimate emits a GitLab Code Quality report (Code Climate issues) with paths relative to the current directory – run it from the repository root and save the output as the codequality artifact.

Output language

Rule titles and diagnostic messages come in Russian and English. The language is picked by --lang ru|en > the XBSL_LANG env var > the system locale > Russian. Type names, keywords and other XBSL text inside a message are never translated – only the wording around them. The MCP server and the web panel follow the same setting (the web panel also has an in-page RU/EN toggle).

Use in CI

xbsl exits non-zero only when a run produces an error-severity finding, so it works as a pipeline gate as-is – warnings and info do not fail the build. The one prerequisite is the language data (see Step 1): generate it in the job (the extractors ship with the repository, so check the repo out), or depend on a package that ships the data via the xbsl.data entry point (see Extending) and just pip install it.

GitHub Actions

lint:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with: { python-version: "3.12" }
    - run: pip install xbsl
    # generate the data from your 1C:Element distribution (or install a package that ships it):
    - run: |
        python tools/extract_grammar.py  --dist "$ELEMENT_DIST"
        python tools/extract_stdlib.py   --dist "$ELEMENT_DIST"
        python tools/extract_metamodel.py --dist "$ELEMENT_DIST"
    - run: xbsl e1c/          # fails the job on any error-severity finding

GitLab CI (Code Quality widget)

--format codeclimate writes a Code Climate report that GitLab renders inline on the merge request. Run it from the repository root and save the output as the codequality report. The command still returns non-zero on error-severity findings, so artifacts.when: always keeps the report even when the job gates the pipeline (drop the gate with a trailing || true if you want the widget only):

lint:
  script:
    - pip install xbsl
    - xbsl --format codeclimate e1c/ > gl-code-quality-report.json
  artifacts:
    when: always
    reports:
      codequality: gl-code-quality-report.json

Rule tiers

The full list of all 80 rules (severity, default state, scope, links to platform documentation sections) is in docs/RULES.md; at runtime – xbsl list-rules. Below is an overview by tier.

  • A. Structure and YAML.xbsl/.yaml pairing, schema validity, Ид as a UUID, Ид uniqueness, Имя matching the file name.
  • B. Text and conventions – typography (en dash, straight quotes), encoding/BOM/newlines/trailing whitespace, indentation and line length.
  • C. Code structure – balance of blocks and ;, brackets, unused local and loop variables, a structure reference field that must be обз, plus the platform's code style conventions (the style/ group, see below).
  • D. Semantics – against platform data and the project itself: types, enumeration values, cross-file consistency (see below).

The type rules of tier D cover every type position in code (новый, как casts, annotations, signatures) and every Тип: value in yaml (unions А|Б|?, generics, nullable): the root must be a known type – stdlib, a project object or a module-declared local type – and a dotted chain rooted at a project object must stay within the family that object generates: the derived types extracted from the distribution docs (Ссылка, Объект, СоздатьОбъект, the automatic forms...), its tabular sections and module structures. Namespace-qualified references (Справочник.X.Ссылка) also check that the object exists under that kind, and the values of project enumerations are verified both in code and in yaml bindings.

The cross-file rules of tier D catch what the compiler reports late or not at all: a yaml handler missing from the paired module, a foreign-subsystem type used without an Импорт: entry, a dynamic list typed by the automatic list form that misses an attribute of its object, a cross-component Компоненты.X.Метод() call to a method without a visibility annotation, environment mismatches (@НаСервере called from a client handler without @ДоступноСКлиента, a client-only module used from an HTTP service), reserved names (Тип/type as a field or parameter, a component property named like a built-in one), methods that nothing references, and top-level yaml properties against the configuration metamodel. The query/ group parses Запрос{ ... } blocks and verifies the tables of ИЗ/СОЕДИНЕНИЕ against the project objects and their tabular sections; a block with constructs outside the supported subset (temporary tables, unions, subqueries) is skipped whole rather than guessed.

Detailed group descriptions - query/ (a composite type in IN with a subquery), project/ (project properties), naming/ (the naming standard, the [morph] extra) and style/ (code-writing conventions and their on/off policy) - live in docs/RULES.md.

Baseline: adopt a rule on a legacy codebase

To enable a rule over code that already violates it without drowning in legacy findings, freeze the current findings into a baseline and hold only new code to the rule:

xbsl e1c/app --enable style --write-baseline baseline.json   # freeze the debt once
xbsl e1c/app --enable style --baseline baseline.json         # only NEW findings surface

A finding's identity is (file, rule, message) with an allowed count, so moving a line keeps its finding suppressed while a genuinely new violation surfaces. The summary reports how many findings the baseline suppressed and how many of its entries are now stale (debt paid down) – a signal to rewrite the file. Paths are stored relative to the baseline file, so commit it at the repository root and run the linter from anywhere.

The same file also records point exclusions with their reasons: an entry's value is either a bare count or {"count": N, "reason": "..."} – the reason says why the code is right on purpose. Reasons are written by the "Exclude the finding" lightbulb action of the VS Code extension (or by hand); --write-baseline keeps the reasons of the identities that survive a rewrite. The LSP server accepts the same --baseline FILE flag, so exclusions disappear in editors too. The identity includes the message text: write and check the baseline under the same output language.

Metadata scaffolding

The toolkit takes over the metadata mechanics: UUIDs, indentation, precise yaml insertions, duplicate checks and section/kind compatibility. The same operations are exposed through the CLI (subcommands, JSON output), MCP (the meta_* tools for agents) and LSP (the xbsl/meta* custom requests that power the VS Code metadata tree).

33 kinds of project element are creatable – from Справочник and Документ to ВиртуальнаяТаблица (paired with its mandatory .xbql query), ЗапланированноеЗадание, contracts, rights and commands. Each kind carries what the docs make mandatory: the platform's own default scope (ВПодсистеме – widen it deliberately with --scope), a module stub for the handler the kind cannot live without, and a note for whatever the generator must not invent for you. Kinds whose content is drawn in the designer (ПанельОтчетов, ПроцессИнтеграции) are deliberately absent.

The VS Code tree, AI agents and the terminal call the same scaffolding core; it writes created and point-edited yaml/xbsl files, the linter checks what was written, and the response carries files, notes and the lint report; the LSP surface returns full texts for the editor to apply

xbsl new-project . vendor App                        # Проект.yaml + Проект.xbsl + a subsystem
xbsl new-object vendor/App/Основное Справочник Товары
xbsl add-field vendor/App/Основное/Товары.yaml реквизит Цвет --type Строка
xbsl add-form . --name Товары                        # object + list forms, registered
xbsl add-form . --name Товары --forms list-cards     # list form as a card grid
xbsl new-object ... HttpСервис Каталог --routes "GET /, POST /, GET /{id}"
xbsl add-route  .../Каталог.yaml "DELETE /{id}"      # url template + handler stub
xbsl add-subsystem vendor/App Задачи
xbsl add-dependency . e1c CurrencyConverter 2.0      # library into the project's Библиотеки
xbsl rename-object . Товары Номенклатура             # rename files + update references
xbsl set-access . --name Товары --default РазрешеноАутентифицированным
xbsl object-info . --name Товары                     # fields, tabulars, forms, namespace
xbsl project-info .                                  # projects, subsystems, objects by kind

Forms are generated with real content: input fields per attribute (including the standard Наименование / Номер / Дата and hierarchy support), dynamic-list columns, tabular-section tables, a report form with parameters; the form is registered in the owner's Интерфейс section. --dry-run prints the changes (with full file texts) without writing – this is how the VS Code extension applies them through its own undo-friendly edits.

--forms list-cards builds the list form as a card grid instead of a table: a ПроизвольныйСписок whose КонтейнерСтрок is a matrix group, plus the row component СтрокаСписка<Имя>. The card takes a title, a photo (a ДвоичныйОбъект.Ссылка attribute switches it to ПроизвольнаяКарточка with the image above the caption) and up to three more fields, dates formatted; notes report what landed on the card and what did not. --card-min-width sets the grid column width (default 400, 250 with a photo) and --card-placeholder the image shown when the photo is empty.

add-dependency attaches a library – the Библиотеки section of Проект.yaml (Имя, Поставщик, Версия). The version is the library's release version: a release is issued in the control panel, and a build version with a suffix (1.0-42) is rejected. Different versions of one library within a project are not allowed, so attaching an already attached library updates the version of the existing entry. What is attached now – project-info (projects[].libraries). The vendor, name, version and the qualified type names of a library come from parsing its archive: elemctl inspect <file.xlib>.

set-access edits КонтрольДоступа.Разрешения in place, aware of what each kind allows: --default sets the ПоУмолчанию right, --permission Чтение=РазрешеноВсем an individual one (custom rights of a ПравоНаЭлемент included), --calc-by fills РасчетРазрешенийПо – mandatory for РазрешенияВычисляютсяДляКаждогоОбъекта. Wrong methods, rights a kind does not have, and per-object rights on a НаборКонстант are rejected; the computed-permission handlers stay yours to write (notes say which). object-info reports the current permissions and the kind's rights, project-info the ПоУмолчанию of every object – no section there means the platform applies РазрешеноАдминистраторам.

rename-object renames the object's files (including its forms and the СтрокаСписка<Имя> row component) and rewrites references context-aware across the whole project: yaml type/table/form keys, = bindings and .xbsl code. Attributes, components or dynamic-list fields that merely share the old name are left alone, and so are string literals (UI text); --new-presentation/--old-presentation update the Заголовок/Представление values of the object and its forms. The object's Ид is untouched, so the platform keeps the stored data.

Extending: your own rules, data and severities

Three entry point groups let a separate package extend the linter without forking it. This exists for teams whose rules or language data cannot be published: keep those in a private package that depends on xbsl.

# pyproject.toml of your package
dependencies = ["xbsl>=0.16"]

[project.entry-points."xbsl.rules"]
myproject = "myproject.rules"        # importing the module runs its @rule decorators

[project.entry-points."xbsl.data"]
myproject = "myproject:data_root"    # a path, or a callable returning one

[project.entry-points."xbsl.severity"]
myproject = "myproject:severity_overrides"   # {rule id: "error"|"warning"|"info"|"off"}

Packages that declared the groups under the pre-rename name (xbsllint.rules/xbsllint.data/ xbsllint.severity) keep working: the legacy groups are scanned after the new ones.

The severity dict (or a zero-argument callable returning one) raises or lowers the default level of any rule – built-in or plugin – for every run in this installation: a project may treat, say, style/abbreviation-case as a warning while the published default stays info. "off" removes a rule from the default set (an explicit --select/--enable still turns it on, at its base level).

Install the package and the CLI, the MCP server and the web UI all pick everything up – no flags, no config file. A failing entry point raises instead of warning: a linter that silently drops a rule stays green in CI and guarantees nothing; an override naming an unknown rule id or level raises for the same reason. XBSL_NO_PLUGINS=1 ignores every external package (built-in rules, bundled data and default severities only).

LSP server (experimental)

xbsl-lsp (the [lsp] extra: pip install "xbsl[lsp]") runs the linter as a long-living Language Server over stdio: live per-file diagnostics as you type, project-wide diagnostics on save, go to definition, completion and hover over a resident project index, and quick-fix code actions - without paying the interpreter start-up cost per call. Flags: --project-root (the sources root relative to the workspace folder), --select/--ignore/ --enable, --data-dir. Any LSP-capable editor (VS Code, Neovim, JetBrains) can spawn it.

Documentation (searching the Element reference)

tools/extract_docs.py extracts the Element reference from a distribution (the server-with-IDE .car) into a docs.sqlite next to the language data: the stdlib pages (a type, its methods, properties, parameters) with cleaned HTML, a full-text index (SQLite FTS5, from the standard library) and canonical links back to the primary source (https://1cmycloud.com/docs/help/..., taken from the distribution's sitemap.xml). Page images are stored alongside. The 1C reference is copyrighted, so the database is not shipped in the package – you generate it from your own distribution, like the language data (step 1).

python tools/extract_docs.py --dist "$ELEMENT_DIST"

The runtime API xbsl.docs (search, page, tree, for_symbol, asset) reads docs.sqlite; with no database the search is simply empty. It powers the MCP tools (below) and – later – the reference panel in the VS Code extension.

MCP server

A thin adapter over the same core: an agent (e.g. Claude Code) can call the checks as tools and receive structured diagnostics.

pip install -e ".[mcp]"
claude mcp add xbsl -- xbsl-mcp

Tools: lint_paths(paths), lint_source(filename, content), list_rules(); documentation search – docs_search(query), docs_page(id), docs_symbol(name) (needs the docs.sqlite database, see above); metadata scaffolding – meta_new_project, meta_new_object, meta_add_field, meta_add_route, meta_add_form, meta_add_subsystem, meta_add_dependency, meta_rename_object (with a dry_run plan mode), meta_set_access, meta_object_info, meta_project_info. Every writing meta_* tool applies the changes and returns the lint of the written files in the same response – creation and validation in one round trip. The core and the CLI do not require mcp – it lives only in the [mcp] extra.

Web interface

A local page: point it at a project folder and see the diagnostics. Standard library only (no external dependencies), binds to 127.0.0.1 only.

xbsl-web            # then open http://127.0.0.1:8771/

Per-tier rule toggles, a data-version selector, severity/text filters, dark/light theme; clicking a diagnostic opens the file in VS Code (vscode://).

Editor support (VS Code)

A VS Code extension in editors/vscode gives .xbsl syntax highlighting, live diagnostics as you type (--stdin), workspace diagnostics on save (a full linter run in the background brings the project-scope rules into the editor), index-based go-to-definition and completion across the project (xbsl --index), a form preview with a properties panel, and a deploy button powered by elemctl. It is published on the Marketplace and Open VSX; its README covers settings, behavior and requirements. See also the companion XBSL Debug extension from the elemctl project.

Element versions

The data is versioned by platform version:

xbsl/data/element/
    index.json            # { available: [...], default: "<version>" }
    <version>/{language.json, stdlib.json, metamodel.json}

Pick a version with --element-version / the XBSL_ELEMENT_VERSION env var / the index default; --version shows what is available. Add a new version by re-running the extractors with a new --dist.

The data root itself is resolved in this order: --data-dir > XBSL_DATA_DIR > a root supplied by an installed xbsl.data entry point > xbsl/data/element inside the package.

Tests

pip install -e ".[dev]"
pytest

Data-dependent tests are skipped automatically when the data has not been generated.

License

MIT – see LICENSE. Trademarks and data provenance – NOTICE. How to add a rule – CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xbsl-0.19.0.tar.gz (317.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

xbsl-0.19.0-py3-none-any.whl (256.3 kB view details)

Uploaded Python 3

xbsl-0.19.0-cp314-cp314-win_amd64.whl (435.5 kB view details)

Uploaded CPython 3.14Windows x86-64

xbsl-0.19.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (743.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

xbsl-0.19.0-cp314-cp314-macosx_11_0_arm64.whl (553.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

xbsl-0.19.0-cp314-cp314-macosx_10_15_x86_64.whl (568.1 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

xbsl-0.19.0-cp313-cp313-win_amd64.whl (431.3 kB view details)

Uploaded CPython 3.13Windows x86-64

xbsl-0.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (745.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

xbsl-0.19.0-cp313-cp313-macosx_11_0_arm64.whl (555.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

xbsl-0.19.0-cp313-cp313-macosx_10_13_x86_64.whl (569.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

xbsl-0.19.0-cp312-cp312-win_amd64.whl (431.0 kB view details)

Uploaded CPython 3.12Windows x86-64

xbsl-0.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (748.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

xbsl-0.19.0-cp312-cp312-macosx_11_0_arm64.whl (557.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

xbsl-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl (572.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

xbsl-0.19.0-cp311-cp311-win_amd64.whl (429.8 kB view details)

Uploaded CPython 3.11Windows x86-64

xbsl-0.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (718.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

xbsl-0.19.0-cp311-cp311-macosx_11_0_arm64.whl (551.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

xbsl-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl (571.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

xbsl-0.19.0-cp310-cp310-win_amd64.whl (430.1 kB view details)

Uploaded CPython 3.10Windows x86-64

xbsl-0.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (717.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

xbsl-0.19.0-cp310-cp310-macosx_11_0_arm64.whl (553.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

xbsl-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl (572.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file xbsl-0.19.0.tar.gz.

File metadata

  • Download URL: xbsl-0.19.0.tar.gz
  • Upload date:
  • Size: 317.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0.tar.gz
Algorithm Hash digest
SHA256 ddb61cdfef310fdf649c7e783bab6a4c09d8e7c6dd602ee25ddd35edcc1f5515
MD5 fde70e634976408ae0f7f87d99a32856
BLAKE2b-256 c5f97576bd624b75b93f2c35f7cd04aafa1fdf5091c9f20065fc5d39da048540

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0.tar.gz:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-py3-none-any.whl.

File metadata

  • Download URL: xbsl-0.19.0-py3-none-any.whl
  • Upload date:
  • Size: 256.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7bc272b338b39278cd9d423e4a460b04751c508e80504a40045141902b8fcb38
MD5 69f985d76e322a96ec7515687d2a0188
BLAKE2b-256 6d5cf5c3d8d16978715cd30ab0a4589111dea185c34f55c40adea247fabe33f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-py3-none-any.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.19.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 435.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bba1ad922f989ad5ac5c9b261e6c37746442bb8689d5b7382247e1e4bd967530
MD5 b596b1c1ed8e9a05d0ac718d9f53d1f0
BLAKE2b-256 1af26bdea4dd9e2830a2587710515d7f81e8723eb5045a97f32fc8439397f9c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp314-cp314-win_amd64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 493f4e4009b8536372d606189a76b98d725b3c868ef14d566ef3a474eb465c56
MD5 37df9de40b1ccccc96329b87994b69c3
BLAKE2b-256 7b0cbf539b9f4c9b71d3f373c9eea4d5fd1d4c375bb33724c03ba5947fc67f11

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0386873dbc7562773b7cc0b12ba011c4081c191f80d25d825952b7e9d569430e
MD5 01f025bb1aa670257825ceaa0a1b8fe8
BLAKE2b-256 4eb4e2749a73b0c89e7acdd16ac4d91c15396b4ec8ad9240807467b7b1a50757

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d275c6691a31e5d18a6727573bab82c82f8e83f814ca1f504f245dc5c5583c19
MD5 eb4ed72edb8f4fb63138904ef1f5d083
BLAKE2b-256 892e2477c674caa9bc43e7ab0e7472bbba3ff89b41e3edf773342b0b89912bac

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.19.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 431.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dc88c1a23465375f7e273611ebc6bde2b5666a1da3bc7bd7b09c60dd4bb067b1
MD5 bb85c7cf5f66cda402bb5b06f5acc88b
BLAKE2b-256 676dd3c88e8a53006acc69b66e5c92c77ba8bdfd2b98b7389db2b6717c2a5941

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp313-cp313-win_amd64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d16efe5339133847bd587ac2db547ac23bfa1a5fc9d01a066bbd65c131fa77ea
MD5 0cacc9c534274b9af8d16f1060f7bd36
BLAKE2b-256 91b8ece6c758459220a4a7f2921d9fc74107200f8a83feef2dc840c9d5b213e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7faa135b61e5fbe581a426a60e9b4b40fe7ebbf5301f55663733910edd25eaac
MD5 7424796f45ec8bd940aa10715e18748c
BLAKE2b-256 170d241de394bb27c9fb22bbaef348a0827077fa568aa9bbd489b4b0e238fc2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a7908ffb8653a101551a4509ec09f10860e9012309d4de72078430d2af238237
MD5 db4498076552940ac9da2cf4b07eba1c
BLAKE2b-256 d695a378d99d2972f1acb34839d51e3524d0aafac9c50730ba412a40620fc7bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.19.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 431.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9b49087ce49cd6e2129ed3a61ee664ea11fd332cc225f0ceaf8bb4d876d9d060
MD5 838174e7dc515a6a10790a02e9961a0d
BLAKE2b-256 9b7c5508efa47f76817dec732597b1eb5ea3abefe889dd012eccf91b5e915532

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp312-cp312-win_amd64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf66712f9a15347d0d0486ba34923e416d66ab47f373506452bfd5d004dcc1e8
MD5 2ddf98f23fdd3ba3eabaecc156c94570
BLAKE2b-256 2fa28563e99214f0322fdade10d80d9d96cfe3d0388facc7e75abe8b595e6790

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64c14f0c28e1c17225e1ff542adc9441bbb17d40797c2577529949f72295f88a
MD5 52102431e2f825997ee62632a7c31f3f
BLAKE2b-256 a00509003c53f478bbb2213c012ac056753123d24939b669423e8ae7fa9c503b

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 af1ab50e2e274a6b737ba6474ddeed51cc0f1b6fd27286b17789e77ab52a4964
MD5 3d2756a11a454ca3a080ba0f2b9579c2
BLAKE2b-256 7f9b7dbe010b3532e62bfec2bd1fe09cee0153caa9663f1034b1b073e648cf22

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.19.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 429.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2373362f479930eadf406d9c715baac6b0e135e67cc3fed636429fdd2e9cdc7b
MD5 62e0389d381d4854f28c267c002b5f75
BLAKE2b-256 09579496d5c5acfdefb959106e2a67cbe978a5880610bbd89b394d2cdee8b16d

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp311-cp311-win_amd64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0bb625f9bbd1e243652b8dfc29814a21c909bb42fac7d9babe3ab79eff77596d
MD5 d53ff06673486f3524bc4fbdb6d416d8
BLAKE2b-256 a36f773f4963fd68014545e150757f1549f0481866127932528762662beb72b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f4fadeaeea2365e99ea6c6173daec4ad046e791844b8182fb8ef5a381dbb0b0
MD5 c46e1636f85321559b9f754d36a2e264
BLAKE2b-256 dfa0e5260f03eb0b47572c0a74b0675f3060aafafd9e2d33e29c1a383fe62264

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a063b72b3c229b9033111a060688a024fcd9ca050469d64d0069ed5d74531d5a
MD5 c1fd75efd23cb86c166bcd2534bdd998
BLAKE2b-256 b869daa8c2bdb2ed45aadbebc68e247e7e2ccaf8f8f3ce0c0bc5c3fea45c5ded

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.19.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 430.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xbsl-0.19.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 59cc686b858c91ba3621c24e8147a4eedf34a73387c6bc202e67e11521f6fad5
MD5 c79ba152efeb796a724016dfc6deee94
BLAKE2b-256 73b901efd6a1720ef2dd6cd47fa89fd4e9bd289ae99bcb577d9ca12519428c71

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp310-cp310-win_amd64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7aee3181629dfe6e37bf9cc5918677c616be8bd6041581407f91c7a7d90c77d
MD5 a4aeeee85084b032a497234be37c2d4d
BLAKE2b-256 9594045a7ff093bdaf9b719e96c7c5fc621ca5627e49d7aa04792e49c41da57f

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cee40984c1031d31592b59ebde5814ace280d8b6c7f3fc30625d1750262ca32
MD5 ae2c65e6a9649faad0f9fc5cef77cbb4
BLAKE2b-256 12994c168634273b128dae5e766976af6a2914d44f8c69caa142146d1303d9f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xbsl-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 29269c1c64ee2baaa12d7e3ae8f4e5f63ce252449fb7c0081cbc8ef2523f0d20
MD5 4cbf1a56fcbb9f28ef50446954d770eb
BLAKE2b-256 7e117fa7dffd976761418086b367e401c90fc695ae04d335ccf6307c35f6a290

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: pypi-publish.yml on keyfire/xbsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page