Skip to main content

bcf

A simple Python implementation of BCF. Manipulation of BCF-XML is available via bcfxml.py and manipulation of BCF-API is available via bcfapi.py.

It tries to support BCF-XML version 2.1 and 3.0, and BCF-API 3.0.

bcfxml

The bcfxml.load function lets you read a BCF-XML file. It takes care of using the right version based on the "bcf.version" file contained in the BCF package.

The BCF files are extracted and parsed on-demand, and edits are stored in memory until you call the save method.

from bcf.bcfxml import load

# Load a project
with load("/path/to/file.bcf") as bcfxml:
    project = bcfxml.project
    print(project.name)

    # To edit a project, just modify the object directly
    bcfxml.project.name = "New name"

    # Get a dictionary of topics
    topics = bcfxml.topics

    for topic_guid, topic_handler in bcfxml.topics.items():
        topic = topic_handler.topic
        print("Topic guid is", topic.guid)
        print("Topic title is", topic.title)

        # Fetch extra data about a topic
        header = topic_handler.header
        comments = topic_handler.comments
        viewpoints = topic_handler.viewpoints

        for comment in comments:
            print(comment.guid)
            print(comment.comment)
            print(comment.author)

    # Get a particular topic
    topic = bcfxml.get_topic(guid)

    # Modify a topic
    topic.title = "New title"

    bcfxml.save()

bcfapi

The bcfapi module lets you interact with the BCF-API standard.

from bcf.v3.bcfapi import FoundationClient, BcfClient

foundation_client = FoundationClient("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "OPENCDE_BASEURL")
auth_methods = foundation_client.get_auth_methods()

# Our library currently only implements the authorization_code flow
if "authorization_code" in auth_methods:
    foundation_client.login()

bcf_client = BcfClient(foundation_client)

versions = foundation_client.get_versions()
for version in versions:
if "3.0" in versions:
    if version["api_id"] == "bcf" and version["version_id"] == "3.0":
        bcf_client.set_version(version)

data = bcf_client.get_projects()
print(data)
project_id = data[0]["project_id"]
print(project_id)
data = bcf_client.get_project(project_id)
print(data)
data = bcf_client.get_extensions(project_id)
print(data)

Metadata

Release files for bcf-client 0.0.230828

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bcf-client 0.0.230828
File Size Uploaded
bcf-client-0.0.230828.tar.gz 49.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bcf-client 0.0.230828
File Interpreter ABI Platform
bcf_client-0.0.230828-py3-none-any.whl Python 3 none any Details

Total release size: 109.7 kB

Release files / bcf-client-0.0.230828.tar.gz

Download URL bcf-client-0.0.230828.tar.gz
Size 49.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cbe5ce12fad2ef022af166779fde55f67e3669bc3e8a8e86c438e5c6f154e21d
BLAKE2b-256 checksum
How to use checksums
35ba6ac14baab197ceb329085f2291e4135f4c7b06080f52912a5f5d951c16b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release files / bcf_client-0.0.230828-py3-none-any.whl

Download URL bcf_client-0.0.230828-py3-none-any.whl
Size 60.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
62a7d2839c0aa62c64f8c381e46a0d36d243f89ccb5d7916a371c78b36702b1d
BLAKE2b-256 checksum
How to use checksums
79ecef3eb017604d22f1c40e8b3cdb6cea3c4b2658c7aa85c3961a83737f5b2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page