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. Ifmu = 0, there is no innovation, and ifmu = 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_COSINEAligned posting rule (eq. 2), - 4:
RANDOM_DISTR: Selection mode that randomly assignsCOSINE,UNIFORM, orHALF_COSINEto 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, andProbabilityTableobjects (see Python probability functions); - 6:
REVERSED_HALF_COSINE: Probability zero ford <= 1, andcos(pi*d/2)**2otherwise; 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.
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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| doces-0.1.0.tar.gz | 53.1 kB | Details |
Built distributions (wheels)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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