Skip to main content

Business Prototyping Toolkit for Python

Coverage Status

System Dynamics and Agent-based Modeling in Python

The Business Prototyping Toolkit for Python (BPTK-Py) is a computational modeling framework that enables you to build simulation models using System Dynamics (SD) and/or agent-based modeling (ABM) natively in Python and manage simulation scenarios with ease.

Next to providing the necessary SD and ABM language constructs to build simulation models directly in Python, the framework also includes a compiler for transpiling System Dynamics models conforming to the XMILE standard into Python code.

This means you can build models in a XMILE-compatible visual modeling environment (such as Stella or iThink) and then use them independently in an Python environment.

The best way to get started with BPTK-Py is to read the Quickstart that is part ot the extensive online documentation. The Quickstart provides a single page overview of all the computational modeling techniques supported by BPTK.

Contents: Main Features · Installation · Getting Help · Changelog

Main Features

  • The objective of the framework is to let the modeller concentrate on building simulation models by providing a seamless interface for managing model settings and scenarios and for plotting simulation results.
  • The BPTK-Py framework supports System Dynamics models in XMILE Format, native SD models using a domain-specific language for System Dynamics (SD DSL) and native Agent-based models. You can also build hybrid SD-ABM-Models natively in Python.
  • All plotting is done using Matplotlib, which is installed with the plotting extra — see Installation.
  • Simulation results are returned as Pandas dataframes and thus can easily be used for analytics.
  • Model settings and scenarios are kept in JSON files. These settings are automatically loaded by the framework upon initialization, as are the model classes themselves. This makes interactive modeling, coding and testing very painless, especially if using the Jupyter notebook environment.

Installation

BPTK-Py requires Python 3.11 or later.

pip install bptk-py

That gives you everything needed to build and simulate models: the SD DSL, agent-based modeling, hybrid models, and the Rust execution engine. The engine ships pre-compiled inside the wheel — there is no Rust toolchain to install and nothing to configure.

Capabilities that a modeller does not always need are available as extras:

Install Adds
pip install bptk-py[plotting] Plotting via Matplotlib — plot_scenarios, Element.plot, plot_lookup
pip install bptk-py[xmile] The XMILE compiler, for models built in Stella or iThink
pip install bptk-py[server] BptkServer and the Postgres and Redis state adapters
pip install bptk-py[observability] Logging to Pydantic Logfire

They combine: pip install "bptk-py[plotting,xmile]". Note the quotes — some shells, zsh among them, treat the brackets as a filename pattern.

Using a capability without its extra raises an error naming the extra to install, so nothing fails silently.

Getting Help

BPTK-Py is developed and maintained by transentis labs.

The first place to go to for help and installation instructions is the online documentation.

The Quickstart provides a single page overview of all the modeling techniques supported by BPTK.

The online documentation is generated from an extensive set of Jupyter notebooks, the BPTK Tutorial. The tutorial is available as a git repository on GitHub.

We used BPTK to build our implementation of the infamous Beer Distribution Game.

If you want to build simulation models using a UI and AI, plesae check our Metapad platform.

For any questions our suggestions you have regarding BPTK, please contact us at: support@transentis.com.

Changelog

3.0.2

  • Feature: format="plot" | "axes" | "df" on Model.plot_lookup() and bptk.plot_lookup(), matching Element.plot() and plot_scenarios()
  • Bugfix: plot_scenarios() logs and returns None when a run produced no rows, instead of raising 'NoneType' object has no attribute 'columns'
  • Bugfix: fan-out runs in sequence under Emscripten instead of failing at join()
  • Bugfix: format="axes" no longer leaves its figure in matplotlib's global registry
  • Bugfix: Model.reset() resets the agent id counter, so a reconfigured model no longer raises IndexError
  • Bugfix: list_equations() prints converters and constants once instead of once per flow
  • Bugfix: a scenario constant naming an equation the model does not have is reported instead of silently ignored
  • Bugfix: registering a scenario under a name that already holds a different definition is reported
  • Bugfix: series_names keys that match no column are reported

3.0.1

  • Fix publication issue: variable pins on the Emscripten platform, so the browser wheel installs with micropip

3.0.0

  • Breaking: introduced extras plotting, xmile, server, observability — see Installation. Base install no longer pulls matplotlib, flask, psycopg, redis, logfire, parsimonious, xmltodict, jinja2
  • Breaking: removed the widget layer — SimpleDashboard, ScenarioWidget, ModelConnection, the BPTK_Py.widgets package, HybridRunner.run_scenario(widget=…), ipywidgets
  • Breaking: removed the unused dependencies cachetools, requests, distlib, the unused BPTK_Py.sdcompiler.sdmodel module, and the Docker image — it had not built since the maturin migration
  • Breaking: configure_logfire() raises ImportError when Logfire is missing instead of returning False
  • Feature: added a pure-Python wheel next to the platform wheels, so micropip can install BPTK in the browser
  • Feature: rebuilt progress_bar on tqdm — works in the terminal, in marimo and in Jupyter
  • Feature: added format="plot" | "axes" | "df" to Element.plot(), matching visualizer.plot()
  • Feature: replaced sympy in the XMILE built-in CGROWTH with a closed form; results unchanged
  • Various small bugfixes

2.4.1

  • Bugfix: Rust backend — a feedback loop whose only time offset is a delay() is no longer rejected as cyclic. This is the standard System Dynamics ordering policy (supply chain, capacity and workforce models), which previously fell back to the Python backend without the caller noticing
  • Bugfix: Rust backend — fixed a crash (PanicException: RustSdModel is unsendable) that killed the process when a threaded WSGI server continued a step-by-step session on another thread
  • Bugfix: Rust backend — constant and graphical-function overrides passed with the first run_step() now take effect in that step, as they do on the Python backend
  • Feature: Rust backend — when a model is rejected because its equations form a circular dependency, the error now names the equations involved (Cyclic dependency among non-stock entities: a → b → a) instead of only reporting that one exists
  • Feature: a fallback from the Rust backend to Python that happens after a step-by-step session has already advanced is now logged as [ERROR] rather than [WARN], because the Python backend cannot see the rounds the Rust engine already played and recomputes them with the settings of the current step

2.4.0

  • Feature: Step-by-step execution on the Rust backend (RustSdModel.init() / step()), wired through bptk.run_step() so server step-by-step sessions can run on Rust
  • Feature: New stateless /execute server endpoint: POST a complete JSON model plus scenarios and get results back (primary path for the visual modeler)
  • Feature: /begin-session accepts a backend field, and bptk accepts a default_backend configuration option, so a server can run Rust-backed sessions
  • Feature: Rust-backed session resume through the external state adapter: the engine's memo grid is externalized and imported on resume (no re-simulation), with seed plumbing for reproducible stochastic models
  • Bugfix: Various XMILE compiler fixes (NORMAL/PREVIOUS code generation, scientific-notation parsing, Windows encoding)
  • Substantially expanded test coverage

2.3.0

  • Feature: Add Rust-based SD execution backend (backend="rust") for significantly faster simulation performance
  • Feature: Rust engine supports stocks, flows, biflows, converters, constants, all arithmetic/logical operators, stochastic/statistical distributions, and graphical functions
  • Feature: Automatic silent fallback to Python backend for unsupported features (arrays, modules, custom functions)
  • Feature: Add Model.to_json() for serializing SD DSL models to JSON
  • Feature: Add ln, log10, floor, ceil, negbinomial functions to SD DSL
  • Bugfix: Fix geometric and pareto distributions in Rust engine to match Python/numpy semantics
  • Bugfix: Fix ScenarioManagerSd.get_cloned_model() to properly copy _equation attribute

2.2.3

  • add unittests
  • fixed typos

2.2.2

  • Bugfix: Fix issue in external state adapter

2.2.1

  • Improve logfire logging.

2.2.0

  • Feature: Add externalStateAdapters for Postgres and Redis
  • Feature: Add option to externalize state completely, thus turning bptkServer into a stateless server
  • Feature: Add pydantic logfire as logging backend
  • Improve return message on bptkServer /stop-instance

2.1.1

  • Update dependencies

2.1.0

  • Feature: extend plot_scenario to accept a format parameter
  • add unittests
  • Bugfix: fix typos for server output
  • Feature: enable operations: not named vector and int/float
  • Bugfix: fix issue with configurable file-path for bptk-object

2.0.0

  • Support for multidimensional sddsl

1.9.6

  • Enable modulo operation for sddsl-elements
  • remove unnecessary code
  • add unittests/pytests

1.9.5

  • Fix publication issues

1.9.4

  • Fix publication issues

1.9.3

  • Fix agent.py serialize method
  • Removed to_string method of agent.py
  • Fix csv_datacollector.py
  • Removed kinesis_datacollector.py, yaml_model_parser.py and serializer.py
  • Fix model.py reset method
  • Adjusted model.py configure_properties method (only dict-values allowed)
  • added unittests

1.9.2

  • Fix to build script

1.9.1

  • Bump versions of key dependencies
  • Update XMILE parser grammar to remove depreciation warning
  • Remove obsolete documentation files
  • Update setup to use pyproject.toml
  • Bump Python Version to 3.11

1.9.0

  • BPTKServer: run endpoint now also works for agent-based models
  • Model: Add configure_agent, configure_properties and delete_agent(s) methods
  • Bump versions of key dependencies

1.8.0

  • BPTKServer: Add new endpoint start-instances that starts multiple instances in one goo

1.7.6

  • BPTK: Improve handling of floating point numbers when using small DTs
  • ScenarioManagerSD: Fixed an issue that caused models with biflows to be cloned incorrectly

1.7.5

  • BPTK: Fix that caused a crash when using multiple scenario files for hybrid models

1.7.4

  • BPTK: Fix bug in reset_scenarios for Hybrid Scenario Managers

1.7.3

  • BPTK: Update dependencies of Pandas/Matplotlib/Sympy/Parsimonious/Pyyaml/Xlsxwriter/Jinja2/Requests/Jsonpickle/Flask
  • Successfully tested with Python 3.11

1.7.2

  • BPTK: Fix imports of SimpleDashboard class
  • BPTK: Update dependency of Scipy, Numpy and Pyyaml

1.7.1

  • BPTK: reset_cache now also resets the data collector in agent based models
  • BPTK: reset_cache calls the reset_cache method on all agents
  • BPTK: agents now have a reset_cache method that can be used to reset agent state
  • BPTK: Updated dependency on ipywidgets to 8.0.4

1.7.0

  • BPTK Server: Remote authorization for root, full-metrics and metrics endpoints
  • BPTK Server: Add /healthy endpoint
  • BPTK Server: stop-instance and load-state are now POST resources
  • Bug Fix: Remove debug print message

1.6.6

  • BPTK: Defer import of matplotlib and ipywidgets until they are needed

1.6.5

  • BPTK: Hybrid scenarios can now be spread accross multiple scenario files
  • BPTK: Remove filename attribute from hybrid scenario manager as it is obsolete
  • BPTK: Scenario definitions for SD DSL scenarios now accept a runspecs setting to override starttime, stoptime and dt
  • BPTK: begin_session now accepts a settings parameter to override scenario settings
  • BPTK Server: begin_session now accepts a settings parameter to override scenario settings

1.6.4

  • BPTK Server: Simplified bearer token authentication

1.6.3

  • BPTK Server: Added optional bearer token authentication

1.6.2

  • BPTK Server: Fixed unsafe external state adapter code
  • BPTK Server: start_instance now returns correct content type

1.6.1

  • SimpleDashboard: Deleted superfluous import statement
  • bptk: Small improvements to documentation

1.6.0

  • BPTK Server: The run_step methods now also support agent-based models
  • BPTK Server: A new endpoint streams_steps runs all the steps of a model and streams the results, especially useful for models that run for a long-time.
  • SimpleDashboard: A new utility class that allows easy creation of dashboards based on Jupyter Widgets.

1.5.3

  • BPTK Server: Since v 1.5.0, BPTK Server requires a Python version >= 3.9. The package now informs the user about this upon import. Other parts of the BPTK framework should work fine with older Python3 versions.

1.5.2

  • BPTK Server: Added file adapter as a concrete example of an external adapter
  • BPTK: Improve cleanup of resources when bptk instance is destroyed

1.5.1

  • BPTK Server: Improvements to the new state externalisation feature
  • BPTK Server: Improve cleanup of resources when an instance times out

1.5.0

  • SD DSL: Added a new module class that makes it easy to structure large models
  • BPTK Server: Add new endpoints to allow externalising the instance state
  • BPTK Server: Changed the default timeout for equations for instances to 12h

1.4.3

  • SD DSL: fix to delay function

1.4.2

  • Small bugfixes in prometheus metrics.

1.4.1

  • BPTK: Fix to plot_lookup
  • BPTK Server: 'flat' version of session results
  • SD DSL: small changes to SD functions pulse and delay to make them more robust.

1.4.0

  • BPTK Server: add metrics endpoint
  • SD DSL: fixed missing imports that caused some sddsl functions to throw an exception

1.3.12

  • BPTK Server: fixed an issue that could lead to race conditions leading to server crashes

1.3.11

  • BPTK Server: add a keep-alive method to keep instances from timing out
  • BPTK Server: start-instances now accepts a timeout structure so that instance timeouts can be set flexibly.
  • BPTK Server: fixed an issue that could lead to race conditions leading to server crashes
  • XMILE: fixed an issue regarding lookups (graphical functions) that do not contain values on the x-axis

1.3.10

  • BPTK: fixed an issue in train_scenarios which caused an exception in recent versions of bptk-py

1.3.9

  • XMILE: Array arithmetic (such as array multiplication,...) within array functions such as SUM is now handled correctly.

1.3.8

  • XMILE: Arrayed variables that have non-arrayed inputs with "apply to all" set are now handled correctly

1.3.7

  • XMILE: Ensure the startime and stoptime in transpiled XMILE models are floating point values (e.g. 1.0, not 1)
  • XMILE: Top level variables in a model that contains modules are now referenced correctly from submodules
  • XMILE: Nested modules are now handled correctly
  • XMILE: Array dimensions of length <3 are now handled correctly

1.3.6

  • Add new method session_results to bptk and corresponding endpoint session-results to Bptk server that allows the session results so far to be retrieved.

1.3.5

  • Fixed an issue that caused bptk-server to crash if start-instance was called after a previous instance had timed out

1.3.4

  • Small improvements to the XMILE/SMILE parser regarding element names that include special characters and regarding operators surrounded by newlines.

1.3.3

  • Return message from end-session resource now correctly reads "session terminated"

1.3.2

  • Rename package due to issues with test pypi

1.3.1

  • Add missing package in setup.py

1.3.0

  • Fix bug in run_scenarios that arose with multiple scenario managers and when return_format was json or dict
  • Add begin_session, end_session and run_step methods to bptk
  • Add agent endpoint to BptkServer
  • BptksServer now takes a bptk_factory function instead of a bptk object in its constructor
  • Add start-instance endpoint to BptkServer
  • Add begin-session, end-session and run-step endpoint to BptkServer

1.2.1

  • Improve documentation
  • Bugfix for bptk.export_scenarios

1.2.0

  • Major tidy up of the bptk API, including a number of breaking changes. In particular the run_simulation method has been renamed to run_scenarios and reset_simulation_model was renamed to reset_scenario_cache. A number of rarely used methods have been removed.
  • Documentation improved and extended.
  • Internal refactoring.

1.1.27

  • Fix bug in XMILE compiler regrading parsing of names that start with a keyword

1.1.26

  • Fix bug in XMILE compiler that causes parsing of if/then/else structures to fail under some circumstances
  • Fix bug in XMILE pulse function that causes the function to misbehave in some circumstances
  • Fix bug in XMILE previous function that causes the function to misbehave in some circumstances

1.1.25

  • Improve error handling and fault tolerance on BptkServer

1.1.24

  • Update to BptkServer internals

1.1.23

  • Add a new experimental feature that allows REST APIs for simulation models to be set up easily.

1.1.22

  • SD DSL: Add python power operator (**) to all SD DSL operators
  • XMILE: Ensure SAFEDIV works in complex expressions

1.1.21

  • Improve handling of SAFEDIV in SD compiler

1.1.20

  • Fix for the SD compiler regarding dimension names usage

1.1.19

  • Little fix regarding the SD-Compiler

1.1.18

  • Improvement of SD compiler: Support for empty initial value of DELAY function. Support for dimension names as arguments for functions (e.g. SIZE(<dimension>))

1.1.17

  • Improvement of Extended Data Collector: Renamed to Agent Data Collector and code optimizations

1.1.16

  • Bugfix for the plotting component that solves compatibility issues with newer versions of matplotlib

1.1.15

  • New dataCollector for retrieving agent-wise data (Refer to BPTK-Py Tutorial for more info)

1.1.14

  • Fixed a bug in the interactive scenario component that caused scenarios being plotted multiple times
  • Fixed a bug that caused the SD operator delay to not accept floating point values and fixed a bug that caused the same to be parsed incorrectly in some cases.

1.1.13

  • Fixed a bug in the XMILE Converter that prevented the SAFEDIV operator to be parsed correctly

1.1.12

  • SD-DSL: Fixed a bug that caused converter equations (subtraction and division) to be computed incorrectly.

1.1.11

  • SD-DSL: Added support for right-hand side addition and subtraction to support equations such as converter.equation = 1 - b
  • Visualisation for SD-DSL elements now follows conventions to work properly with Matplotlib 3.3+

1.1.10

  • Visualisation using matplotlib now follows conventions to work properly with Matplotlib 3.3+

1.1.9

  • SD-DSL: System Dynamics element such as converters did not implement comparison operators (">", "<", ">=", "==", "!="). They have been added

1.1.8

  • Another bugfix for series renaming. Simplified the code for renaming by using Pandas' standard method rename

1.1.7

  • Bugfix for plot_scenarios: The series_names replacer did not work properly for when only one scenario manager / scenario is given.

1.1.6

  • Bugfix for XMILE compiler: A little error in the parser prevented certain models being parsed correctly
  • Bugfix for plot_scenarios: The new error messages showed up for Agent based models although the scenarios were present

1.1.5

  • The XMILE compiler is a great tool that handles model conversion from XMILE SD Models to Python. For compatibility and readability, we change the equation names to camelCasing upon conversion. This might be confusing for some users. That's why we decided to give you a new function call that lists all equations for System Dynamics Models. Simply run bptk.list_equations() (optionally add scenario manager(s) and scenario(s)) and get an overview over available model elements. More details in our documentation.
  • Improved error messages. In previous versions, a long error trace was printed when an equation was not found. Now you get a neat error message output wiht hints as to why the plotting failed.
  • If an equation / scenario / scenario manager is not found, BPTK_Py gives hints on which similar equations / scenarios / scenario managers might be available for use.
  • Register XMILE models without having to follow the directory structure: BPTK_PY scans the scenarios folder upon startup to find new scenario managers and XMILE / ABM models. We developed a simpler way to add simulation models during runtime without having to add scenarios beforehand: bptk.register_model("<path_to_itmx_stmx>","<modelname>"). You can then easily simulate the model just as you're used to.

1.1.4

XMILE equations make use of double-quote enclosed identifiers in case it actually looks like a function call. For example, 100*"Identifier(enclosed)" is a valid equation where one element (stock/flow) is called Identifier(enclosed). However, we were not able to parse this, until now. Update BPTK-Py using the new update mechanism: documentation

1.1.3

We figured that the update mechanisms via pip might be confusing sometimes, especially for non-programmers. This is why we decided to implement an update mechanism. Details are available in the documentation

1.1.2

  • Bugfix to (XMILE) SD Compiler: Added support for array expressions within function calls. We had trouble with equations that contain another expression within a function call. E.g. DELAY(arrayedElement[1,2]*5, 1, 1) was not supported.
  • Improvement to (XMILE) SD Compiler: Removed replacement of currency symbols (€, $ etc.) and percentage signs with abbreviations. We had implemented this in earlier releases but figured it leads to confusion with modellers.

1.1.1

  • The SD DSL now differentiates flows and biflows. Simply add a biflow using biflow = model.biflow(<name>).
  • The SD DSL now supports: RANDOM, IF, NOT, AND, OR, NAN, SQRT, ROUND and all trigonometric and statistical builtins you know from XMILE. Furthermore the operators support Comparison Operators (>, <, >=, <=, ==, !=) and the modulo operator (x % y).
    • RANDOM: converter.equation = sd.Random(<min>, <max>) draws a uniformly distributed float random number between
    • ROUND: converter.equation = sd.Round(sd.random(0,1),2)) rounds a random number between 0 and 1 to a 2 digit float
    • IF: converter.equation = sd.If( <condition>, <then> , <else> ) corresponds to IF <condition> THEN <then> ELSE <else>. Each term inside the IF clause can be a SD term again. Example for a valid If clause: equation = sd.If(sd.time()>10,sd.random(1,2), 100)
    • AND/OR: sd.Or(<left hand side>, <right hand side>) and sd.And(<left hand side>, <right hand side>) for multiple conditions
    • NOT: Use sd.Not(<condition>) for "not" conditions, e.g: sd.If(sd.Not(sd.time()>10), 1, 0 )
    • NAN / INF / PI: sd.nan() returns a NAN value, sd.Inf() gives you the infinity value, sd.pi() returns the number pi.
    • SQRT: sd.sqrt(<value of function>) computes the square root
    • SIN / TAN / COS: sd.sin(x) / sd.cos(x) / sd.tan(x) for sinus, cosinus or tangent of x (radians) and of course we also support ARCCOS, ARCSIN, ARCTAN with the same syntax
    • SINWAVE / COSWAVE: sd.sinwave(amplitude,period) / sd.coswave(amplitude,period) to generate sine / cosine waves with given amplitude and period
    • More documentation and how to use the statistical (random numbers from various distributions) and trigonometric operators can be found in our online documentation
  • We fixed a bug that caused BPTK to crash when an XMILE model was updated while BPTK was monitoring it
  • We fixed SINWAVE in the XMILE transpiler and added support for COSWAVE

1.1.0

  • We are supporting all XMILE operators now. Note that random numbers with seed are never the same as when using Stella Architect's seed! This is due to different random number generators in Python and Stella. We neither support the min / max arguments for the random number operators. Refer to the documentation)
  • RUNCOUNT and SENSIRUNCOUNT are not supported and support is not planned.

1.0.2

  • Bugfix release: Better support for multidimensional arrays

1.0.1

  • Bugfix release: Fixed an issue with plot_lookup

1.0.0

  • SD Compiler: Added new operators
    • Arrays and Array Operators (MIN, MAX, SUM, MEAN, SELF, SIZE, PROD)
    • Statistical operators (COMBINATIONS, BETA, BINOMIAL, FACTORIAL, GAMMA, GAMMALN, EXPRND, GEOMETRIC)
    • Trigonometric operators (ARCSIN, ARCCOS, ARCTAN)
  • The plot_scenarios API now supports array calls such as stock[*] or stock[dim1,dim2]
  • SD DSL: ABS, DT, PULSE, STARTTIME, STOPTIME

Release files for bptk-py 3.0.2

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

Source distribution (sdist)

Source distribution for bptk-py 3.0.2
File Size Uploaded
bptk_py-3.0.2.tar.gz 4.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for bptk-py 3.0.2
File
bptk_py-3.0.2-py3-none-any.whl Python 3 none any Details
bptk_py-3.0.2-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
bptk_py-3.0.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details
bptk_py-3.0.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
bptk_py-3.0.2-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
bptk_py-3.0.2-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 7.7 MB

Release files / bptk_py-3.0.2.tar.gz

Download URL bptk_py-3.0.2.tar.gz
Size 4.4 MB
Tags Source
SHA-256 checksum
How to use checksums
18e40a3d0193490d4b45f4fe375beb96d17039220814c8f10fd08c1e4530270c
BLAKE2b-256 checksum
How to use checksums
6caf0727a9ef5af55205059035a0a4ab2c93c9629f5f9d6a6ea66ab52e732734
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / bptk_py-3.0.2-py3-none-any.whl

Download URL bptk_py-3.0.2-py3-none-any.whl
Size 197.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e12f7715ecbc590e514a2e054fc291b58a7f47185ed2d9b359068c8b307cfe5f
BLAKE2b-256 checksum
How to use checksums
9a3b8d4ef863db787b44501bb7d24c964d74e4c2b3d7fac07726b5e1c0d37f4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / bptk_py-3.0.2-cp311-abi3-win_amd64.whl

Download URL bptk_py-3.0.2-cp311-abi3-win_amd64.whl
Size 521.5 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
8dee396e3a7135c74b84ec22777f270682bf052a173bca24671faabfaa566cd7
BLAKE2b-256 checksum
How to use checksums
e62b9fbedfd5a8164436274ec07aeaf35cbcc8aaea988ae58527de6c78fe4ce9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / bptk_py-3.0.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bptk_py-3.0.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 666.4 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
c5393a5821c24238b29300d6c70142bb867777d69babd02c594ba2b173f6f77a
BLAKE2b-256 checksum
How to use checksums
3cb9f97942581e56c6d33f2d329296752dfd7b1ea7f71146adee33f7d86cc9c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / bptk_py-3.0.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bptk_py-3.0.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 658.2 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
84ae68a8338705b7b2ddc55d05788a4a33b3d03be3c73ccd8f8818a38d02168b
BLAKE2b-256 checksum
How to use checksums
83255b03fee53972cbbdfd9f1a60ca34028ed6d0d0878cce31256daa97c5ecb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / bptk_py-3.0.2-cp311-abi3-macosx_11_0_arm64.whl

Download URL bptk_py-3.0.2-cp311-abi3-macosx_11_0_arm64.whl
Size 618.3 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f6c82c17663ad7ce28fffb50c5ece9488edd1c441f00941796f7db2f49d37396
BLAKE2b-256 checksum
How to use checksums
a32413563aa70c9ff4aae5201d8a4f8e83cf22906d500b801be739399ace5fe3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / bptk_py-3.0.2-cp311-abi3-macosx_10_12_x86_64.whl

Download URL bptk_py-3.0.2-cp311-abi3-macosx_10_12_x86_64.whl
Size 621.6 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b1e8a22a470190920b2ba6a642e2bc7fb6e4b326d9c6560d68c9cab971dbcf6a
BLAKE2b-256 checksum
How to use checksums
e158ef7bc3f5008ae878fd886d42ca5cfbbcda3b3219975c15f2970215270da6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

3.1.1

7 release files

3.1.0

7 release files

3.0.3

7 release files

This release

3.0.2 This release

7 release files

3.0.1

7 release files

2.4.1

6 release files

2.4.0

6 release files

2.3.0

6 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.9.5

2 release files

1.9.2

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.6

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.12

2 release files

1.3.11

2 release files

1.3.10

2 release files

1.3.9

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.27

2 release files

1.1.26

2 release files

1.1.25

2 release files

1.1.24

2 release files

1.1.22

2 release files

1.1.20

2 release files

1.1.19

2 release files

1.1.18

2 release files

1.1.17

2 release files

1.1.16

2 release files

1.1.13

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.0

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 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