Skip to main content

icon

DOCES (Dynamical Opinion Clusters Exploration Suite) is an experimental Python library to simulate opinion dynamics on adaptive complex networks. Its background is implemented in C for performance.

Install

DOCES 0.1.0 supports Python 3.9–3.14 and NumPy 2.x. Installation selects a NumPy version compatible with your Python version.

To install DOCES, simply use the following:

pip install doces

If the first command does not find a compatible version of DOCES for your Python version, use the following command to install the package:

pip install git+https://github.com/hfarruda/doces.git

To build a source distribution and wheel and test the installed package in temporary environments, run bash runtest.sh from the repository root. Set PYTHON=/path/to/python to test a particular interpreter.

Usage

Once installed, you can set up the agent-based simulation by instantiating an object with the constructor Opinion_dynamics() with a network, like in the example below.

import doces
# Initializes the network parameters
...
# Creates a Opinion_dynamics object.
od = doces.Opinion_dynamics( 
    vertex_count, 
    edges,
    directed)

The constructor takes the features of the network connecting agents as arguments. They are:

  • vertex_count - number of nodes/agents in the network;
  • edges - a python list of 2-tuples of nodes denoting the network edges ((source, target) in the case it is directed);
  • directed - a boolean indicating whether the network is directed or not;

Once the od object is initialized, the simulation can be performed by calling its method simulate_dynamics() as

# Initializes the dynamics parameters
...
# Run the dynamics
output_dictionary = od.simulate_dynamics(
    number_of_iterations,
    phi,
    mu, 
    posting_filter, 
    receiving_filter,
    b = None,
    feed_size = 5,
    rewire = True,
    cascade_stats_output_file = None,
    min_opinion = -1, 
    max_opinion = 1,
    delta = 0.1,
    verbose = True,
    rand_seed = None)

opinions = output_dictionary["b"]
edge_list = output_dictionary["edges"]

The method outputs are a list opinions of continuous values between min_opinion and max_opinion for each agent and a Python list of 2-tuples with the network structure after the simulation is finished. Its inputs are:

  • number_of_iterations - an integer (positive value) that is used as the number of iterations for the model to run;
  • phi - a float number which controls the receiving filter;
  • mu - a float number that controls the innovation parameter. If mu = 0, there is no innovation, and if mu = 1, all the posts are new and the feed posts are never re-posted;
  • posting_filter - an integer from 0 to 6 to set which function filters posting activity, according to the below specification;
  • receiving_filter - an integer from 0 to 6 to set which function filters how posts are received, according to the below specification;
  • b - an array of floats corresponding to the initial opinions of agents;
  • feed_size - an integer to set the size of the feed. The default value is 5;
  • rewire - a boolean to allow rewiring in each iteration or not;
  • cascade_stats_output_file - a string representing the output file path for cascade statistics. The default value is None;
  • min_opinion - a float corresponding to the minimum opinion value agents can have;
  • max_opinion - a float corresponding to the maximum opinion value agents can have;
  • delta - a float corresponding to the increment (or decrement) applied to opinions in each iteration;
  • verbose - a boolean that allows the code to print details of each simulation;
  • rand_seed - an integer (positive value) used as a seed for random number generation;

The library provides the following filter functions and selection modes; in the formulas below, d is the absolute, unnormalized difference and phi is the receiving-filter parameter (zero for posting):

  • 0: COSINE: Controversial posting rule (eq. 1);
  • 1: STRETCHED_HALF_COSINE: Stretched squared cosine probability, cos(pi*d/4 + phi)**2;
  • 2: UNIFORM: Priority receiving rule;
  • 3: HALF_COSINE Aligned posting rule (eq. 2),
  • 4: RANDOM_DISTR: Selection mode that randomly assigns COSINE, UNIFORM, or HALF_COSINE to each agent;
  • 5: CUSTOM: Selection mode that activates posting or receiving filters previously configured through their setters. Use one filter for all agents or a list with one entry per agent; entries can mix built-in identifiers, sampled Python functions, and ProbabilityTable objects (see Python probability functions);
  • 6: REVERSED_HALF_COSINE: Probability zero for d <= 1, and cos(pi*d/2)**2 otherwise; the default rewiring probability.

To use option 5, you can call the methods set_posting_filter() and set_receiving_filter(), as in the example below. Additionally, agents can be set as stubborn by passing a list with integers indicating those agents to the method set_stubborn(). Remember to do this before calling simulate_dynamics().

# Initializes the lists to be set
...
# Set the posting filter
od.set_posting_filter(posting_filter)

# Set the receiving filter
od.set_receiving_filter(receiving_filter)

# Set stubborn users 
od.set_stubborn(stubborn_users)

Python probability functions

set_posting_filter, set_receiving_filter, and set_rewiring_filter also accept a Python function or a doces.ProbabilityTable. Pass one choice for all nodes, or a list with one choice per node; lists can mix tables, functions, and built-in filters (COSINE, STRETCHED_HALF_COSINE, UNIFORM, HALF_COSINE, and REVERSED_HALF_COSINE). Existing integer-array setters continue to work.

import numpy as np

grid = np.linspace(0.0, 2.0, 1001)
od.set_posting_filter(lambda difference: np.exp(-difference**2), grid=grid)
od.set_receiving_filter(doces.ProbabilityTable([0.0, 2.0], [1.0, 0.2]))
od.set_rewiring_filter(lambda difference: (difference / 2.0)**2, grid=grid)
# Run with posting_filter=doces.CUSTOM and receiving_filter=doces.CUSTOM.

Functions receive the absolute, unnormalized difference and must return a finite scalar probability in [0, 1]. Posting uses the difference between a post's value and the posting node's opinion. Receiving uses the difference between the posting node's and follower's opinions; the posting node's assignment selects the receiving filter, preserving the existing model. Rewiring uses the difference between the two nodes' opinions and the assignment of the node changing its connection, after any repulsion update.

Functions are sampled when configured; each repeated function is sampled once per grid point per setter call. C uses the table's interpolation method during simulation, with linear interpolation as the default. Choose the grid resolution to suit the function; this approximates its curve. Changing a captured parameter requires configuring the function again. phi still applies to native cosine filters, and does not alter sampled probabilities. These functions cannot depend on changing simulation state or time during the C loop.

When receiving_filter=doces.CUSTOM and phi is nonzero, DOCES reports doces.FilterParameterWarning once per receiving-filter configuration if it contains a sampled function/table and none of its node assignments uses the native COSINE or STRETCHED_HALF_COSINE filter. In that case, simulation-time phi has no effect. Include the parameter in the sampled function and call set_receiving_filter again when its value changes:

custom_phi = 0.25
receiving = doces.ProbabilityTable.from_function(
    lambda difference: np.cos(np.pi * difference / 2 + custom_phi) ** 2,
    grid,
)
od.set_receiving_filter(receiving)

No warning is shown for phi=0, or when at least one node uses native COSINE or STRETCHED_HALF_COSINE, because phi affects that part of the mixed configuration. Native UNIFORM, HALF_COSINE, and REVERSED_HALF_COSINE do not use phi. To suppress this specific warning when the behavior is intentional:

import warnings
warnings.filterwarnings("ignore", category=doces.FilterParameterWarning)

Both ProbabilityTable and ProbabilityTable.from_function accept interpolation="linear" or interpolation="previous". Linear interpolation joins neighboring samples with a straight line. Previous interpolation holds each sample's probability until the next knot; at an exact knot, that knot's probability applies, including the final endpoint. Include a step's threshold in the grid to represent it exactly:

step = doces.ProbabilityTable(
    [0.0, 0.5, 2.0], [1.0, 0.0, 0.0], interpolation="previous"
)
od.set_posting_filter(step)  # 1 for difference < 0.5; 0 otherwise

Each table chooses its own interpolation method, so per-node lists can mix both modes for posting, receiving, or rewiring. Direct callables passed to setters use linear interpolation; use ProbabilityTable.from_function(..., interpolation="previous") to sample a step function. Queries outside a table's domain remain errors in either mode.

Tables require at least two finite, strictly increasing, nonnegative differences and matching probabilities in [0, 1]. Active tables must cover differences from zero through max_opinion - min_opinion ([0, 2] for the defaults), and any wider range needed by retained opinions or posts when resuming. Invalid tables or sampled results are rejected before replacing the configuration; insufficient coverage is rejected before simulation changes state. Tables own copies of their arrays, and C owns its own copies too.

Use CUSTOM in simulate_dynamics to activate configured posting and receiving filters. Selecting a global built-in replaces that role's configuration, as with the existing integer-array setters; configure it again before returning to CUSTOM. The rewiring configuration persists across simulation calls. rewire=True uses it, and rewire=False prevents all rewiring, including stubborn nodes. This fixes the previous stubborn-node exception to rewire=False; seeded trajectories involving that bug can therefore change.

By default, rewire=True retains the original probability: zero for differences d <= 1, and cos(pi*d/2)**2 otherwise. It is also available as doces.REVERSED_HALF_COSINE (6). Calling od.set_rewiring_filter() restores this default with the original random draws. Custom rewiring probabilities keep the existing conditions for considering rewiring and the existing selection of a replacement connection.

See the runnable custom filters tutorial for per-node functions and a check that rewire=False keeps the network fixed with stubborn nodes.

Tested OS

Linux (Debian and Ubuntu), MacOS, and Windows

DOCES Architecture

DOCES combines high-performance C code for computational efficiency with Python for an easy-to-use interface. The architecture is modular, with the Core implemented in C and Methods accessible via Python.

DOCES Architecture

Optional Conda Environment

To use the optional Conda environment provided in this repository, run the following commands from the repository root:

conda env create -f environment.yml
conda activate doces

Citation Request

If you publish a scientific paper using this software, please cite the corresponding reference:

Henrique Ferraz de Arruda, Kleber Andrade Oliveira, and Yamir Moreno. "Dynamical opinion clusters exploration suite: Modeling social media opinion dynamics." SoftwareX, Vol. 30, 2025, p. 102136. DOI: 10.1016/j.softx.2025.102136.

Read the paper here.

The BibTeX entry for this reference can be found here.

In addition, if your work addresses specific aspects of the opinion dynamics modeled in this software, please also cite the relevant references:

  • Henrique Ferraz de Arruda, Felipe Maciel Cardoso, Guilherme Ferraz de Arruda, Alexis R. Hernández, Luciano da Fontoura Costa, and Yamir Moreno. "Modelling how social network algorithms can influence opinion polarization." Information Sciences 588 (2022): 265-278.

The dynamics for directed networks, or with the use of particular types of users (e.g., stubborn and verified) is cited as follows:

  • Henrique Ferraz de Arruda, Kleber Andrade Oliveira, and Yamir Moreno. "Echo chamber formation sharpened by priority users." iScience (2024).

The dynamics with feeds (innovation parameter mu < 1) is cited as follows:

  • Kleber Andrade Oliveira, Henrique Ferraz de Arruda, and Yamir Moreno. "Mechanistic interplay between information spreading and opinion polarization." PNAS Nexus (2026).

Coding Assistant Disclaimer

Starting with version v0.1.0, Codex is used as a coding assistant in the development of this library.

Metadata

Release files for doces 0.1.0

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

Source distribution (sdist)

Source distribution for doces 0.1.0
File Size Uploaded
doces-0.1.0.tar.gz 53.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for doces 0.1.0
File
doces-0.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
doces-0.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
doces-0.1.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
doces-0.1.0-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
doces-0.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
doces-0.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
doces-0.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
doces-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
doces-0.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
doces-0.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
doces-0.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
doces-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
doces-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
doces-0.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
doces-0.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
doces-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
doces-0.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
doces-0.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
doces-0.1.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
doces-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
doces-0.1.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
doces-0.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
doces-0.1.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
doces-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details

Total release size: 1.3 MB

Release files / doces-0.1.0.tar.gz

Download URL doces-0.1.0.tar.gz
Size 53.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3af64f136af4bc2fc5b74cd2638cf1849dc4d72a07988f79bcc1c4949cd64ebe
BLAKE2b-256 checksum
How to use checksums
313c6a43f46aa17ad0159db1e43fe375c88837e5c8faa931f614b53cd5a7e572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp314-cp314-win_amd64.whl

Download URL doces-0.1.0-cp314-cp314-win_amd64.whl
Size 37.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
137424359a81ab5f47003dde3984fc2e7b4d514b23e09da7226d528b6a6002a1
BLAKE2b-256 checksum
How to use checksums
5f50c06aaf7fd25d669c7ed5eaa91f379df7c1231f60ec6a75dbfba29007a0a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL doces-0.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 105.5 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ed33edb08989b49c95be7c481769ad95a451b4d24757f7bd3912edc1dfc5b1b0
BLAKE2b-256 checksum
How to use checksums
87eb9fa8850ca1c8fa065d57db29b50d379ab1eb72503ba1f4e2261f64da1ef8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL doces-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Size 37.6 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
13a0bfcf64e4ba64441e04cb463d73cf9a31b3c90111b85adebfee4aa1793840
BLAKE2b-256 checksum
How to use checksums
475c08b26169f956263504738f5427775d90e942b4be27c36db9b3e93bedb64f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL doces-0.1.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 37.8 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
a410ee5dc5d7bc38c6a9d4c8fc4db95063818c3bd331015c21c3daebad8e0925
BLAKE2b-256 checksum
How to use checksums
7f7aea48336bee4faab6007eb8c70fac0d52905ce90467115096e725cee01a97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp313-cp313-win_amd64.whl

Download URL doces-0.1.0-cp313-cp313-win_amd64.whl
Size 36.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6d62cf2dd44c6a909f26265b03bba8e9fe3d954ead5e48c540fb210a386a89d8
BLAKE2b-256 checksum
How to use checksums
0cf6d3831d72efbb45bf9a09e9b2608d3dfe0f8f3422c9fdce1c3dae100c14a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL doces-0.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 105.5 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
43d0aa402127b2e4db675033493c67e138e3b16583d727b318da46e945055a37
BLAKE2b-256 checksum
How to use checksums
c68d2a6945e9cd2d215c073e6244e3a592609612a91355e551915ad437ff3ac9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL doces-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 37.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9dc6707c92b73e1622fafeba42400d26f577282bc0533f3c74ff0edf84d0b1ee
BLAKE2b-256 checksum
How to use checksums
5082eec010abaf4f46b5515855a9b24d544fb1b105b3829e9eea54c541dde6cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL doces-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 37.7 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
c68eb7f7a1d8f5a8f6682d83f3ae1e803cfbbf0872fabf5d52a41144c3e8c4fb
BLAKE2b-256 checksum
How to use checksums
92b0f948a77a91dbc11d66c18951ae8b224612c34043ac269b1e4d8166ae3159
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp312-cp312-win_amd64.whl

Download URL doces-0.1.0-cp312-cp312-win_amd64.whl
Size 36.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
110996035cbe1dfbfaccf1d8f79e262b4a3f436e261185e950857c73e0fb656c
BLAKE2b-256 checksum
How to use checksums
8f71ebaa8f2d386015ea8665f95d017e9820945d0c8e7efbaad95ab001de3195
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL doces-0.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 105.5 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c9dc4a84a64fd50ee0712319d594f01985e6715d93f90465c6d3dcee1c0c9bd6
BLAKE2b-256 checksum
How to use checksums
868b148a9b72ecad0a547882f8d7a37767b32614bc63147102cbde96273aaf75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL doces-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 37.6 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5e513574ec5ae381273e98b267fa5ff84b8333f7b7c598756486fb2238aae0f0
BLAKE2b-256 checksum
How to use checksums
158be764906c4a38837a8902b8514a9941afc1131800cc215bc21f5bf625d7e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL doces-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 37.7 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
1fb0e50b8ea4ad2022238c44f128ae858720b74c21d0be383af81df54d89eeaa
BLAKE2b-256 checksum
How to use checksums
ec2deb0532c6bbba500cc1aef8749809842b4674bf17d1d7f9d89d27db545214
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp311-cp311-win_amd64.whl

Download URL doces-0.1.0-cp311-cp311-win_amd64.whl
Size 36.2 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
404b79642fa0d746f788f8a0e3c0749dd509573ea14997fdd5f6ec9b8c237fb4
BLAKE2b-256 checksum
How to use checksums
feab0eef9ec558817aa38986740f50f10523f59187fba2a06bca9ccc3b54cb86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL doces-0.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 103.2 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
383acb873ba8838eb83c527c6ff12d3039557efa5f70584fec76116bbe52e09c
BLAKE2b-256 checksum
How to use checksums
987b7001668cdd47f25f93be0bf968b54be508baf737c70c4936281a64ead2c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL doces-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 37.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6b6da3a50761487b9224ca93d91f28d4ec7eab3eb963277feb95621015929a56
BLAKE2b-256 checksum
How to use checksums
148565d3f8816ab03003af2b1f506b477368b304b68b3066de0984222cf7b53f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL doces-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 37.5 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
3cb529616740c63f1be57c314c69f6a13e0ea55dd291718741077fb90cddac7c
BLAKE2b-256 checksum
How to use checksums
2c2a0e234e233cd19e679ee0c49a1141560d48d05e365136a078f6a1a2cc2f9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp310-cp310-win_amd64.whl

Download URL doces-0.1.0-cp310-cp310-win_amd64.whl
Size 36.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
c953e6917db8b635c498bc8692c9665ae565d39ccf65d99e9d50c2cd9975b204
BLAKE2b-256 checksum
How to use checksums
65fb452056ed2c22a8e30f4878c275f72062493fd5fecddd75fbe03f9d4b8db8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL doces-0.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 102.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5fad90fe974bd2c779de5deb7b1644ab9d6bee84d282ff93f3cdc6aec5098439
BLAKE2b-256 checksum
How to use checksums
5711ab0ca99b37346a06b1d49b7894db7fee31eb92611b78c4b600bcba3807b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL doces-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Size 37.6 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3b1e1637b66d4521078d1b2a13a96923f0699dd2757c4bfa07292d74934e1bf4
BLAKE2b-256 checksum
How to use checksums
73127c2c00313d798c4ee452f3498027f4496ec1596572f1314552a58f09f72d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL doces-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 37.5 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
043e6f785a590934a5118c2799b20791f1393c210f48d81ad4ccb6722fa1c6f5
BLAKE2b-256 checksum
How to use checksums
3c5d4539f1c4226747692c67abb07d6d259f23b5bbde7d7ffb1a31c3602e5ac3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp39-cp39-win_amd64.whl

Download URL doces-0.1.0-cp39-cp39-win_amd64.whl
Size 36.2 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
eb464387d7248daa69247e9e43a7dbd5ed456655dce15e6ba23c40afe84fe6ca
BLAKE2b-256 checksum
How to use checksums
5d144b8fc294e510ea65b13b24afed331368c564c241518b61cd56e33f28788a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL doces-0.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 102.7 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
90edc2d9299ec76ca93a63edd48627eab9d7da9b3fe8564d3e7a56428318a991
BLAKE2b-256 checksum
How to use checksums
da0116d96053aaed314a132b481cd092f64661e734ff7c7a6d26406e5286d798
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL doces-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Size 37.6 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
225c76f1273ab3417c60214f1a885f7fe672f801b40a57db98151f6a18e3eea4
BLAKE2b-256 checksum
How to use checksums
ccead5c599a47a075869fed6718d05f62309e9b5977e071e3e4a384bcfbf64a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / doces-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl

Download URL doces-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Size 37.5 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
75733b0d5a9d4ce9a047caa889d57df25068d686bfa32a19e41cf76fd1c597db
BLAKE2b-256 checksum
How to use checksums
9e8aae3a714d2042049ec8fa325b334c3b95e0369e66da7921df323a7752fbe8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

25 release files

0.0.7

23 release files

0.0.6

23 release files

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