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 acme/          # 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 acme/ > gl-code-quality-report.json
  artifacts:
    when: always
    reports:
      codequality: gl-code-quality-report.json

Rule tiers

The full list of all 86 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, a module-declared local type or a global type of a declared library (see below) – 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 types of the declared libraries come from their archives. Проект.yaml declares the coordinates only (Поставщик, Имя, Версия), so the names are read from the {Поставщик}-{Имя}-{Версия}.xlib archive, looked up in the project descriptor's directory and above it (up to four levels) - where the archive sits when the sources are shipped. An element becomes known when it is ОбластьВидимости: Глобально; the rest is the library's own business. With no archive next to the sources the library types stay unknown, exactly as they were before libraries were understood at all.

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 acme/app --enable style --write-baseline baseline.json   # freeze the debt once
xbsl acme/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 . acme 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); type_members(name) – the members of a stdlib type with the return-type roots of its methods in one compact answer (cheaper than a docs page when only the member list matters); 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.21.1.tar.gz (359.5 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.21.1-py3-none-any.whl (292.2 kB view details)

Uploaded Python 3

xbsl-0.21.1-cp314-cp314-win_amd64.whl (486.7 kB view details)

Uploaded CPython 3.14Windows x86-64

xbsl-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (801.4 kB view details)

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

xbsl-0.21.1-cp314-cp314-macosx_11_0_arm64.whl (610.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

xbsl-0.21.1-cp314-cp314-macosx_10_15_x86_64.whl (625.8 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

xbsl-0.21.1-cp313-cp313-win_amd64.whl (481.0 kB view details)

Uploaded CPython 3.13Windows x86-64

xbsl-0.21.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (802.9 kB view details)

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

xbsl-0.21.1-cp313-cp313-macosx_11_0_arm64.whl (612.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

xbsl-0.21.1-cp313-cp313-macosx_10_13_x86_64.whl (627.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

xbsl-0.21.1-cp312-cp312-win_amd64.whl (480.6 kB view details)

Uploaded CPython 3.12Windows x86-64

xbsl-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (806.0 kB view details)

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

xbsl-0.21.1-cp312-cp312-macosx_11_0_arm64.whl (615.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

xbsl-0.21.1-cp312-cp312-macosx_10_13_x86_64.whl (632.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

xbsl-0.21.1-cp311-cp311-win_amd64.whl (479.2 kB view details)

Uploaded CPython 3.11Windows x86-64

xbsl-0.21.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (774.8 kB view details)

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

xbsl-0.21.1-cp311-cp311-macosx_11_0_arm64.whl (610.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

xbsl-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl (630.0 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

xbsl-0.21.1-cp310-cp310-win_amd64.whl (479.5 kB view details)

Uploaded CPython 3.10Windows x86-64

xbsl-0.21.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (776.6 kB view details)

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

xbsl-0.21.1-cp310-cp310-macosx_11_0_arm64.whl (612.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

xbsl-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl (632.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for xbsl-0.21.1.tar.gz
Algorithm Hash digest
SHA256 fd7a3d879d35b468e83ef0b21ad9c1c6d8333680afcaa38749ec367eaa4196e3
MD5 ebcb3057562654710027e4d30bd72c64
BLAKE2b-256 403f854cb1c9840cfed5debe7ee4cdb04dc752f581afdc4e0ada7f9268eb52cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1.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.21.1-py3-none-any.whl.

File metadata

  • Download URL: xbsl-0.21.1-py3-none-any.whl
  • Upload date:
  • Size: 292.2 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.21.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0a96e1db1d31434fa6d01b5f25194b5c88cd9c17180c6d91981b007b36f72123
MD5 1cc7a461a6d33d9b9a35db90cd5ebcbc
BLAKE2b-256 5dab5a53c21e8a860081294768c7bc7ec67e0f560ca611af35d3e16159780ab9

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.21.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 486.7 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.21.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 17b67a5ca1c265bfe0e463b37ee66c4cdadb8186afdad57c672f3b9bc00d529e
MD5 c32a361e126d540d39e6121d04cf4f14
BLAKE2b-256 0d45825a5a9291d186f8867971f2bfe35bc5db9d694d205d5e84f30acd7bf85d

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0fe6448c74fa07272c153f3dea6b343c6c78e4e2e8c1dc6b8971e3824ed6d92a
MD5 8f9237fb4048c3599a54e1c8b301cf31
BLAKE2b-256 7ca2e5f491f07a664af5fdeebee658d227674e57aa2bdd01d5d0925cc5fd3984

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 49d8a1ffc0696172ca437460fd5a7ac1e06241f753f9cf9ab42a37127022a365
MD5 ba61ad2a5b40ecdf8328c3f4abc193b2
BLAKE2b-256 68ca334f4973e6f99526c6ab229935a3aa3e142465500f6c16b94eedd7ca7886

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c936e89576b0c53393271bb432f384abc09cc982fbebc068f3fed976286be146
MD5 7af357d6ed678bc919ce893a07bc9a33
BLAKE2b-256 fddf4bd8f34b47a7817044e8532094e7262960c5e1d499d39681ef910d57eda0

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.21.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 481.0 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.21.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 25c1f6f7a082b2e2fc65a06f75820a7ef08b048c3f36bede7e0ff8f0b9625243
MD5 71a7ac5d61324ef58e96412c674f4a59
BLAKE2b-256 ba421b1ecd5eb00380063796e2958d5a76cfcb76b37bce876ec6b22f7bb1a278

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d2d9cb68dff904c78d095a4dfa767ca7bad8f6764b85434e3273f5fedcd0360c
MD5 86c70b4c9c37f644742c5bbde79564d9
BLAKE2b-256 7add9bbe77661a894630970c387e552a54429780bf865d57a84ca1916eb89aaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f81d1e206ec9ebd164232d138732b1138f53bc22ad00a92ad3ed95bad699927b
MD5 4bb89af8662839c19695a6141a3310fc
BLAKE2b-256 d72d3da6204357663e028f6cb3adaaaab70a8839c150b69efe31a3884afb52e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9b180f58164d7c79058d64d3e60d6fb8042ca8ebe7543d5079e6bf6fef50193f
MD5 4d80e1de02bff465ca02ba3c0a9e3ef6
BLAKE2b-256 6595a13e7d22d7037395a14d05e1b95c5cc5791ab7b30db1c262579c78b0b8d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.21.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 480.6 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.21.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 dbd4df6d0cc544f647ad90483e1477e546019c857ca0bc11d3fc78c2dc8edfd8
MD5 8187bc2c1c841b8fb5274859160893af
BLAKE2b-256 e4462d7475ff4112d75959ad942ad2b75983ff103a0b234f74220dca7fb6a075

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2e98f33099dabcfebce2940bab9b71758fc51c3f0b96cb0f2eec8a4a1da6f82f
MD5 c4b4d14a891436b15522dae987ece69a
BLAKE2b-256 09e2b15e1d5147c157e358541803f18634084341a4aa2daf933478c2d846ed44

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99656a598d2f25d89120e3648d4e7a1a4100a0f79d90fa170b3a5bfd7c7f8c36
MD5 28ad4ff77b645ae380e7c854fea15f6e
BLAKE2b-256 e694fab289198abc55bac22223e19484a79575da07a2bf9dbef046e5388aa366

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c7495a3a908a261e03d4adc8d964e40256a55bea777cfca8fe7f3fd991c9f5ae
MD5 ad4cff7295bd3b9e13cb6a2350b19f27
BLAKE2b-256 852e15c76ad5a572ac86a32c8854219d0fd15d6c0cf7563bbbdd4e25c0cb4718

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.21.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 479.2 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.21.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2d03fca529a60643f8b0cedd98301eb31716925ec9234c373f27ab6cc4f3f08c
MD5 4e4a1f0a61ecc936ae6d3ab389d2666b
BLAKE2b-256 d154424a10213771af3cf71755961edb311b9c2cf78788d32a9a1a1dd1354bff

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 71aeea2c9e4efc08e92fae670e341023e76b20b9d3243d43e6a4cda2894cc97a
MD5 dffb07d6056a354c93fff1ddfde34d6e
BLAKE2b-256 6869ad1298e201f66e0b2cda1b742f2f5a9fdffd409cce8b94dd637417f4fd0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 452e0b22a5f14bc3e94abb5387d9c468580bfa747ed71fd92054f933132260bc
MD5 6a20fe2bc45888619a37e5c1c8e11aec
BLAKE2b-256 7ab8380146027977438392d89bcd7efcebd15fdc450e2bc31cbc990f6ae5f47e

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9df63c7636d2a51654a9b9feef16a7236580170797b846a1d10b208a0f67d5fc
MD5 19a7906a1a52f82c02fb2e1bf4861d5d
BLAKE2b-256 adb3a8381e9098163675beb5fac4c3441a6232067e6732affb9aa4bdd50129a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: xbsl-0.21.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 479.5 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.21.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 11b7a0de896dc54b5dec423abc4bf739fc0ef8f5d49bb6e8010babaf039663a5
MD5 76294a6a05319ff2d60be1a93d490b22
BLAKE2b-256 d0aacd10bc6f3fb79e23331daf9c35a1803d73695f1277adb5c932717459590d

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0064945ac9fe4b1faeeff852c2a74e60d11b8b34d570621f27319fc09a59f42
MD5 c586b0e69847ab97dba8d8f02e7dc140
BLAKE2b-256 379aec0e511fba21e4880acf7ef626f87991e503d0ddf6b6831b49b2f92196ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41ebb100574c8644556771b677d1585330a3b27f65f52ac5ce6439876baf1114
MD5 40810d32237fe8930aa2b0151514656c
BLAKE2b-256 0e7f6157f4bf53fae3f4dad2c97747060e896d754e4d0f5bdeddb58a4ecc7914

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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.21.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for xbsl-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 17c1b7ddd43a2f994202377f18bf69a8af73cdc8c80b43a3a68f10e9ea6897ee
MD5 e742f7d63aa100b47642e8e526d1cf44
BLAKE2b-256 e105390c02119b53cb699e4d589414e691bfd676d80bf6bc2f80e56542b8cd25

See more details on using hashes here.

Provenance

The following attestation bundles were made for xbsl-0.21.1-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