Skip to main content

opentimspy: An open-source parser of Bruker Tims Data File (.tdf).

Project description

OpenTIMS

OpenTIMS is a C++ library for accessing timsTOF Pro data format (TDF). It replaces (to a large extent) Bruker's SDK for purposes of data access and provides convenient layer for integration into higher level computer languages. It comes with bindings to Python (through opentimspy) and R languages (through opentimsr). In Python, we extract data into NumPy arrays that are optimized for speed and come with a universe of useful methods for their quick manipulation. In R, we extract data into the native data.frame object.

With OpenTIMS you can access data contained in the analysis.tdf_raw file hapilly produced by your mass spectrometer of choice (as long as it is timsTOF Pro). It also parses some of the information out of the SQLite data base contained in the analysis.raw file. You should have both of these files in one folder to start using our software.

We can also get your data faster in C++ (and so to Python and R):

Prefer userfriendliness over raw power? We have you covered! Check out the children projects TimsR and TimsPy.

Requirements

The software was tested on Linux, Windows, and MacOS. On Windows, install Microsoft Visual Studio from here to make use of C++ or Python code. On Linux, have clang++ or g++ installed (clang produces slightly faster code). Also, do make sure that a developper version of Python is installed. For instance, on Ubuntu, install Python with

sudo apt install python3.8-dev

i.e. with the -dev version. This contains headers needed for pybind to work properly. On macOS, install Xcode Command Line Tools.

Python

From terminal (assuming you have python and pip included in the system PATH) write

pip install opentimspy

We recommend also installing the opentims_bruker_bridge module, containing Bruker's proprietary conversion functions (Linux and Windows only). To do that, do:

pip install opentims_bruker_bridge

On Windows: we have noticed issues with the numpy==1.19.4 due to changes in Intel's fmod function, unrelated to our work. If you keep on experiencing these issues, install numpy==1.19.3.

pip uninstall numpy
pip install numpy==1.19.3

R

From R terminal (opened either in powershell or in RStudio and similar):

install.packages('opentimsr')

or using devtools

install.packages('devtools')
library(devtools)

install_github("michalsta/opentims", subdir="opentimsr")

On Windows the last command might give you a warning about tar stopping with non-zero exit code. It's safe to ignore.

If that does not work, first clone the repository and then install manually with:

git clone https://github.com/michalsta/opentims
cd opentims
R CMD build opentimsr
R CMD INSTALL opentimsr_*.tar.gz

On windows, replace R with R.exe. You can download git from here.

Usage

Python

All the functions are documented with doc-strings. The resulting automatic API documentation is available here.

import pathlib
from pprint import pprint

from opentimspy.opentims import OpenTIMS

path = pathlib.Path('path_to_your_data.d')
D = OpenTIMS(path) # get data handle
print(D)
# OpenTIMS(404183877 peaks)

print(len(D)) # The number of peaks.
# 404183877 

D.framesTIC() # Return combined intensity for each frame.
# array([ 95910, 579150, 906718, ..., 406317,   8093,   8629])


try:
    import opentims_bruker_bridge
    all_columns = ('frame','scan','tof','intensity','mz','inv_ion_mobility','retention_time')
except ModuleNotFoundError:
    print("Without Bruker proprietary code we cannot yet perform tof-mz and scan-dt transformations.")
    print("Download 'opentims_bruker_bridge' if you are on Linux or Windows.")
    print("Otherwise, you will be able to use only these columns:")
    all_columns = ('frame','scan','tof','intensity','retention_time')


# We consider the following columns:
print(all_columns)
# ('frame', 'scan', 'tof', 'intensity', 'mz', 'inv_ion_mobility', 'retention_time')


# Get a dict with data from frames 1, 5, and 67.
pprint(D.query(frames=[1,5,67], columns=all_columns))
# {'frame': array([ 1,  1,  1, ..., 67, 67, 67], dtype=uint32),
#  'intensity': array([ 9,  9,  9, ..., 19, 57, 95], dtype=uint32),
#  'inv_ion_mobility': array([1.60114183, 1.6       , 1.6       , ..., 0.60077422, 0.60077422,
#        0.60077422]),
#  'mz': array([1174.65579059,  733.48094071,  916.95238879, ...,  672.00166969,
#         802.16055154, 1055.20374969]),
#  'retention_time': array([0.32649208, 0.32649208, 0.32649208, ..., 7.40565443, 7.40565443,
#        7.40565443]),
#  'scan': array([ 33,  34,  34, ..., 917, 917, 917], dtype=uint32),
#  'tof': array([312260, 220720, 261438, ..., 205954, 236501, 289480], dtype=uint32)}

# The outcome of the function is a dictionary of numpy arrays, which is the best one can have without 'Pandas' and stretching the use of numpy.
# If you like 'Pandas', consider 'TimsPy'.


# Get a dict with each 10th frame, starting from frame 2, finishing on frame 1000.   
pprint(D.query(frames=slice(2,1000,10), columns=all_columns))
# {'frame': array([  2,   2,   2, ..., 992, 992, 992], dtype=uint32),
#  'intensity': array([9, 9, 9, ..., 9, 9, 9], dtype=uint32),
#  'inv_ion_mobility': array([1.60114183, 1.60114183, 1.6       , ..., 0.60638211, 0.60301731,
#        0.60189576]),
#  'mz': array([ 302.3476711 , 1165.32728084,  391.98410024, ...,  440.96697448,
#        1158.92213271,  749.26470544]),
#  'retention_time': array([  0.43470634,   0.43470634,   0.43470634, ..., 106.71027856,
#        106.71027856, 106.71027856]),
#  'scan': array([ 33,  33,  34, ..., 912, 915, 916], dtype=uint32),
#  'tof': array([ 97298, 310524, 127985, ..., 143270, 309328, 224410], dtype=uint32)}



# Get all MS1 frames 
# pprint(D.query(frames=D.ms1_frames, columns=all_columns))
# ATTENTION: that's quite a lot of data!!! You might exceed your RAM.


# If you want to extract not every possible columnt, but a subset, use the columns argument:
pprint(D.query(frames=slice(2,1000,10), columns=('tof','intensity',)))
# {'intensity': array([9, 9, 9, ..., 9, 9, 9], dtype=uint32),
#  'tof': array([ 97298, 310524, 127985, ..., 143270, 309328, 224410], dtype=uint32)}
# 
# This will reduce your memory usage.


# Still too much memory used up? You can also iterate over frames:
it = D.query_iter(slice(10,100,10), columns=all_columns)
pprint(next(it))
# {'frame': array([10, 10, 10, ..., 10, 10, 10], dtype=uint32),
#  'intensity': array([ 9,  9,  9, ...,  9, 13, 86], dtype=uint32),
#  'inv_ion_mobility': array([1.6       , 1.5977164 , 1.5954329 , ..., 0.60526049, 0.60189576,
#        0.60189576]),
#  'mz': array([538.22572833, 148.90442262, 414.28892487, ..., 677.99334299,
#        290.222999  , 298.18539969]),
#  'retention_time': array([1.29368159, 1.29368159, 1.29368159, ..., 1.29368159, 1.29368159,
#        1.29368159]),
#  'scan': array([ 34,  36,  38, ..., 913, 916, 916], dtype=uint32),
#  'tof': array([171284,  31282, 135057, ..., 207422,  92814,  95769], dtype=uint32)}

pprint(next(it))
# {'frame': array([20, 20, 20, ..., 20, 20, 20], dtype=uint32),
#  'intensity': array([31, 10,  9, ..., 26,  9,  9], dtype=uint32),
#  'inv_ion_mobility': array([1.60114183, 1.60114183, 1.6       , ..., 0.60301731, 0.60301731,
#        0.60189576]),
#  'mz': array([1445.63777755, 1516.85130172,  536.01934412, ...,  421.57926311,
#         422.13747807,  300.13908112]),
#  'retention_time': array([2.36610302, 2.36610302, 2.36610302, ..., 2.36610302, 2.36610302,
#        2.36610302]),
#  'scan': array([ 33,  33,  34, ..., 915, 915, 916], dtype=uint32),
#  'tof': array([359979, 371758, 170678, ..., 137327, 137500,  96488], dtype=uint32)}


# All MS1 frames, but one at a time
iterator_over_MS1 = D.query_iter(D.ms1_frames, columns=all_columns)
pprint(next(it))
pprint(next(it))
# or in a loop, only getting intensities
for fr in D.query_iter(D.ms1_frames, columns=('intensity',)):
    print(fr['intensity'])
# ...
# [ 9  9  9 ... 83 72 82]
# [ 9  9  9 ... 59 86 61]
# [ 9  9 55 ...  9 32  9]
# [ 9  9  9 ... 93  9 80]
# [ 9  9 60 ...  9  9 60]
# [ 9  9  9 ... 46 10  9]
# [ 9  9  9 ... 30 61  9]
# [  9   9   9 ... 117   9  64]
# [ 20 147  69 ...  58   9   9]
# [ 9  9  9 ...  9 91  9]


# The frame lasts a convenient time unit that well suits chromatography peak elution.
# What if you were interested instead in finding out which frames eluted in a given time 
# time of the experiment?
# For this reasone, we have prepared a retention time based query:
# suppose you are interested in all frames corresponding to all that eluted between 10 and 12
# second of the experiment.
D.rt_query(10,12)
# {'frame': array([ 92,  92,  92, ..., 109, 109, 109], dtype=uint32),
#  'scan': array([ 33,  36,  41, ..., 914, 916, 917], dtype=uint32),
#  'tof': array([361758,  65738, 308330, ..., 144566, 138933, 373182], dtype=uint32),
#  'intensity': array([ 9,  9,  9, ..., 58, 91,  9], dtype=uint32),
#  'mz': array([1456.28349866,  222.28224757, 1153.59087822, ...,  445.25277042,
#          426.77550441, 1525.57652881]),
#  'inv_ion_mobility': array([1.60114183, 1.5977164 , 1.59200782, ..., 0.60413889, 0.60189576,
#         0.60077422]),
#  'retention_time': array([10.08689891, 10.08689891, 10.08689891, ..., 11.91001388,
#         11.91001388, 11.91001388])}


# Get numpy array with raw data in a given range 1:10
pprint(D[1:10])
# array([[     1,     33, 312260,      9],
#        [     1,     34, 220720,      9],
#        [     1,     34, 261438,      9],
#        ...,
#        [     9,    913, 204042,     10],
#        [     9,    914, 358144,      9],
#        [     9,    915, 354086,      9]], dtype=uint32)

R

For a detailed documentation of the R package, consult the CRAN webpage of the project (especially the reference manual linked there).

library(opentimsr)

# path = pathlib.Path('path_to_your_data.d')
path = "/home/matteo/Projects/bruker/BrukerMIDIA/MIDIA_CE10_precursor/20190912_HeLa_Bruker_TEN_MIDIA_200ng_CE10_100ms_Slot1-9_1_488.d"

# Do you want to have access only to 'frame', 'scan', 'time of flight', and 'intensity'?
accept_Bruker_EULA_and_on_Windows_or_Linux = TRUE

if(accept_Bruker_EULA_and_on_Windows_or_Linux){
    folder_to_stode_priopriatary_code = "/home/matteo"
    path_to_bruker_dll = download_bruker_proprietary_code(folder_to_stode_priopriatary_code)
    setup_bruker_so(path_to_bruker_dll)
    all_columns = c('frame','scan','tof','intensity','mz','inv_ion_mobility','retention_time')
} else {
    all_columns = c('frame','scan','tof','intensity','retention_time')
}

D = OpenTIMS(path) # get data handle
D@all_columns

print(D) 
print(length(D)) # The number of peaks.
# 404183877


pprint = function(x,...){ print(head(x,...)); print(tail(x,...)) }

# Get a data,frame with data from frames 1, 5, and 67.
pprint(query(D, frames=c(1,5,67), columns=all_columns))
#   frame scan    tof intensity        mz inv_ion_mobility retention_time
# 1     1   33 312260         9 1174.6558         1.601142      0.3264921
# 2     1   34 220720         9  733.4809         1.600000      0.3264921
# 3     1   34 261438         9  916.9524         1.600000      0.3264921
# 4     1   36  33072         9  152.3557         1.597716      0.3264921
# 5     1   36 242110         9  827.3114         1.597716      0.3264921
# 6     1   38 204868        62  667.5863         1.595433      0.3264921
# 
#        frame scan    tof intensity        mz inv_ion_mobility retention_time
# 224732    67  917 135191       189  414.7175        0.6007742       7.405654
# 224733    67  917 192745        51  619.2850        0.6007742       7.405654
# 224734    67  917 201838        54  655.3439        0.6007742       7.405654
# 224735    67  917 205954        19  672.0017        0.6007742       7.405654
# 224736    67  917 236501        57  802.1606        0.6007742       7.405654
# 224737    67  917 289480        95 1055.2037        0.6007742       7.405654



# Get a dict with each 10th frame, starting from frame 2, finishing on frame 1000.   
pprint(query(D, frames=seq(2,1000,10), columns=all_columns))
#   frame scan    tof intensity        mz inv_ion_mobility retention_time
# 1     2   33  97298         9  302.3477         1.601142      0.4347063
# 2     2   33 310524         9 1165.3273         1.601142      0.4347063
# 3     2   34 127985         9  391.9841         1.600000      0.4347063
# 4     2   35 280460         9 1009.6751         1.598858      0.4347063
# 5     2   37 329377        72 1268.6262         1.596575      0.4347063
# 6     2   38 204900         9  667.7161         1.595433      0.4347063
#        frame scan    tof intensity        mz inv_ion_mobility retention_time
# 669552   992  904 291346         9 1064.7478        0.6153559       106.7103
# 669553   992  909 198994         9  643.9562        0.6097471       106.7103
# 669554   992  909 282616         9 1020.4663        0.6097471       106.7103
# 669555   992  912 143270         9  440.9670        0.6063821       106.7103
# 669556   992  915 309328         9 1158.9221        0.6030173       106.7103
# 669557   992  916 224410         9  749.2647        0.6018958       106.7103



# Get all MS1 frames 
# print(query(D, frames=MS1(D)))
# ATTENTION: that's quite a lot of data!!! And R will first make a stupid copy, because it's bad. You might exceed your RAM.

# Getting subset of columns: simply specify 'columns':
pprint(query(D, frames=c(1,5,67), columns=c('scan','intensity')))
#   scan intensity
# 1   33         9
# 2   34         9
# 3   34         9
# 4   36         9
# 5   36         9
# 6   38        62
#        scan intensity
# 224732  917       189
# 224733  917        51
# 224734  917        54
# 224735  917        19
# 224736  917        57
# 224737  917        95
# 
# this is also the only way to get data without accepting Bruker terms of service and on MacOS (for time being).


# The frame lasts a convenient time unit that well suits chromatography peak elution.
# What if you were interested instead in finding out which frames eluted in a given time 
# time of the experiment?
# For this reasone, we have prepared a retention time based query:
# suppose you are interested in all frames corresponding to all that eluted between 10 and 12
# second of the experiment.
pprint(rt_query(D, 10, 12))
#   frame scan    tof intensity        mz inv_ion_mobility retention_time
# 1    92   33 361758         9 1456.2835         1.601142        10.0869
# 2    92   36  65738         9  222.2822         1.597716        10.0869
# 3    92   41 308330         9 1153.5909         1.592008        10.0869
# 4    92   43 123618         9  378.5190         1.589725        10.0869
# 5    92   48  65346         9  221.3651         1.584017        10.0869
# 6    92   53 183172         9  582.4251         1.578310        10.0869
#        frame scan    tof intensity        mz inv_ion_mobility retention_time
# 128129   109  913  38170         9  162.4016        0.6052605       11.91001
# 128130   109  914 138760        65  426.2142        0.6041389       11.91001
# 128131   109  914 142129        69  437.2109        0.6041389       11.91001
# 128132   109  914 144566        58  445.2528        0.6041389       11.91001
# 128133   109  916 138933        91  426.7755        0.6018958       11.91001
# 128134   109  917 373182         9 1525.5765        0.6007742       11.91001


# R has no proper in-built iterators :(

# All MS1 frames, but one at a time:
for(fr in MS1(D)){
    print(query(D, fr, columns=all_columns))
}


# Syntactic sugar: only the real bruker data can also be extracted this way:
pprint(head(D[100])) 
#   frame scan    tof intensity
# 1   100   35 389679         9
# 2   100   35 394578         9
# 3   100   37  78036         9
# 4   100   37 210934         9
# 5   100   37 211498         9
# 6   100   37 351984         9
#   frame scan    tof intensity
# 1   100   35 389679         9
# 2   100   35 394578         9
# 3   100   37  78036         9
# 4   100   37 210934         9
# 5   100   37 211498         9
# 6   100   37 351984         9


X = D[10:200]
pprint(X)
#   frame scan    tof intensity
# 1    10   34 171284         9
# 2    10   36  31282         9
# 3    10   38 135057         9
# 4    10   39 135446         9
# 5    10   41 188048         9
# 6    10   42 288608         9
#         frame scan    tof intensity
# 3331314   200  895 318550         9
# 3331315   200  899  57824       126
# 3331316   200  902 314562         9
# 3331317   200  903 375375         9
# 3331318   200  905 358594         9
# 3331319   200  911 146843         9


# Simple access to 'analysis.bin'? Sure:
tables_names(D)
#  [1] "CalibrationInfo"          "DiaFrameMsMsInfo"        
#  [3] "DiaFrameMsMsWindowGroups" "DiaFrameMsMsWindows"     
#  [5] "ErrorLog"                 "FrameMsMsInfo"           
#  [7] "FrameProperties"          "Frames"                  
#  [9] "GlobalMetadata"           "GroupProperties"         
# [11] "MzCalibration"            "Properties"              
# [13] "PropertyDefinitions"      "PropertyGroups"          
# [15] "Segments"                 "TimsCalibration"         
 

# Just choose a table now:
table2df(D, 'TimsCalibration')
#   Id ModelType C0  C1       C2       C3 C4 C5           C6       C7       C8
# 1  1         2  1 917 213.5998 75.81729 33  1 -0.009065829 135.4364 13.32608
#         C9
# 1 1663.341

C++

In C++ we offer several functions for the raw access to the data. To check out how to use the C++ API, check a basic usage example /examples/get_data.cpp, or the full documentation at /docs/opentims++

More options?

Consider TimsPy and TimsR for more user-friendly options.

Development

We will be happy to accept any contributions.

Current limitations

Due to patent restrictions, open source calibration functions used by Bruker cannot be revealed. For this reason, we have to use the original Bruker TDF-SDK for time of flight to mass over charge and scan to inverse ion mobility transformations. To make it as easy at can be, we have prepared a Python module called opentims_bruker_bridge that ships the necessary dll and so files. Please visit the project and follow language-specific instructions for its installation.

Plans for future

  • Together with Bruker we are working on opening up the tof-mz and scan-dt conversions which is scheduled for the next release of the acquisition software.
  • This way fully open source access will be available on all of the commonly used platforms.
  • Adding bindings to other languages.

Licence

OpenTIMS is released under the terms of MIT licence. Full text below in LICENCE file. If you require other licensing terms please contact the authors.

OpenTIMS contains built-in versions of the following software:

  • sqlite3, public domain
  • ZSTD, BSD licence
  • mio, MIT licence

See the respective files for details. Consider TimsPy for Bruker proprietary time of flight to mass to charge ratio and scan to drift time transformations, which are shipped under separate license.

If the above license terms do not suit you, please contact us. We are open to discussion about your particular licensing needs.

Special thanks

We would like to thank Michael Krause, Sascha Winter, and Sven Brehmer, all from Bruker Daltonik GmbH, for their magnificent work in developing tfd-sdk.

Knowns Issues:

pybind11 causes an error upon installation:

  Building wheel for opentimspy (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/matteo/Projects/opentims/timspy/timspyVE/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-06parpqo/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-06parpqo/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-rq1ll2m4
       cwd: /tmp/pip-req-build-06parpqo/
  Complete output (11 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/opentimspy
  copying opentimspy/opentims.py -> build/lib.linux-x86_64-3.8/opentimspy
  copying opentimspy/__init__.py -> build/lib.linux-x86_64-3.8/opentimspy
  running build_ext
  building 'opentimspy_support' extension
  pybind11 not found. Please either install it manually, or install via pip rather than through setuptools directly.
  ----------------------------------------
  ERROR: Failed building wheel for opentimspy

Ignore it: it is pip-related and does not influence the intallation.

R function rt_query

If you see error: Error in col[1] : object of type 'closure' is not subsettable then interpret the following set of functions:

get_left_frame = function(x,y) ifelse(x > y[length(y)], NA, findInterval(x, y, left.open=T) + 1)
get_right_frame = function(x,y) ifelse(x < y[1], NA, findInterval(x, y, left.open=F))

rt_query = function(opentims,
                    min_retention_time,
                    max_retention_time,
                    columns=c('frame','scan','tof','intensity','mz','inv_ion_mobility','retention_time')
){
  RTS = retention_times(opentims)
  
  min_frame = get_left_frame(min_retention_time, RTS)
  max_frame = get_right_frame(max_retention_time, RTS)
  
  if(is.na(min_frame) | is.na(max_frame))
    stop("The [min_retention_time,max_retention_time] interval does not hold any data.")
  
  query(opentims, min_frame:max_frame, columns=columns)
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opentimspy-1.0.20.tar.gz (5.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

opentimspy-1.0.20-cp314-cp314t-win_amd64.whl (384.7 kB view details)

Uploaded CPython 3.14tWindows x86-64

opentimspy-1.0.20-cp314-cp314t-win32.whl (363.1 kB view details)

Uploaded CPython 3.14tWindows x86

opentimspy-1.0.20-cp314-cp314t-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (417.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

opentimspy-1.0.20-cp314-cp314t-macosx_11_0_arm64.whl (378.2 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

opentimspy-1.0.20-cp314-cp314-win_amd64.whl (372.4 kB view details)

Uploaded CPython 3.14Windows x86-64

opentimspy-1.0.20-cp314-cp314-win32.whl (355.1 kB view details)

Uploaded CPython 3.14Windows x86

opentimspy-1.0.20-cp314-cp314-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (415.9 kB view details)

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

opentimspy-1.0.20-cp314-cp314-macosx_11_0_arm64.whl (370.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opentimspy-1.0.20-cp313-cp313-win_amd64.whl (368.1 kB view details)

Uploaded CPython 3.13Windows x86-64

opentimspy-1.0.20-cp313-cp313-win32.whl (350.2 kB view details)

Uploaded CPython 3.13Windows x86

opentimspy-1.0.20-cp313-cp313-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (415.8 kB view details)

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

opentimspy-1.0.20-cp313-cp313-macosx_11_0_arm64.whl (370.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

opentimspy-1.0.20-cp312-cp312-win_amd64.whl (368.1 kB view details)

Uploaded CPython 3.12Windows x86-64

opentimspy-1.0.20-cp312-cp312-win32.whl (350.3 kB view details)

Uploaded CPython 3.12Windows x86

opentimspy-1.0.20-cp312-cp312-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (415.7 kB view details)

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

opentimspy-1.0.20-cp312-cp312-macosx_11_0_arm64.whl (370.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

opentimspy-1.0.20-cp311-cp311-win_amd64.whl (366.5 kB view details)

Uploaded CPython 3.11Windows x86-64

opentimspy-1.0.20-cp311-cp311-win32.whl (349.9 kB view details)

Uploaded CPython 3.11Windows x86

opentimspy-1.0.20-cp311-cp311-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (415.3 kB view details)

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

opentimspy-1.0.20-cp311-cp311-macosx_11_0_arm64.whl (369.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

opentimspy-1.0.20-cp310-cp310-win_amd64.whl (365.5 kB view details)

Uploaded CPython 3.10Windows x86-64

opentimspy-1.0.20-cp310-cp310-win32.whl (349.0 kB view details)

Uploaded CPython 3.10Windows x86

opentimspy-1.0.20-cp310-cp310-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (413.0 kB view details)

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

opentimspy-1.0.20-cp310-cp310-macosx_11_0_arm64.whl (368.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

opentimspy-1.0.20-cp39-cp39-win_amd64.whl (368.1 kB view details)

Uploaded CPython 3.9Windows x86-64

opentimspy-1.0.20-cp39-cp39-win32.whl (349.1 kB view details)

Uploaded CPython 3.9Windows x86

opentimspy-1.0.20-cp39-cp39-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (413.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

opentimspy-1.0.20-cp39-cp39-macosx_11_0_arm64.whl (368.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

opentimspy-1.0.20-cp38-cp38-win_amd64.whl (365.5 kB view details)

Uploaded CPython 3.8Windows x86-64

opentimspy-1.0.20-cp38-cp38-win32.whl (349.0 kB view details)

Uploaded CPython 3.8Windows x86

opentimspy-1.0.20-cp38-cp38-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

opentimspy-1.0.20-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (412.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

opentimspy-1.0.20-cp38-cp38-macosx_11_0_arm64.whl (367.7 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file opentimspy-1.0.20.tar.gz.

File metadata

  • Download URL: opentimspy-1.0.20.tar.gz
  • Upload date:
  • Size: 5.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for opentimspy-1.0.20.tar.gz
Algorithm Hash digest
SHA256 d2df3604aa24bd347ff29702debc9c77feac8aa360d602bf7a417b466be839d0
MD5 239d87dfac941759508184cea73266bd
BLAKE2b-256 282fc0eea953eb36297ef4e6f4566cd823f3bb1a67f37b5831c26175f6435d06

See more details on using hashes here.

File details

Details for the file opentimspy-1.0.20-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 06f306fc5b0818a5e4ffaa4ddc680ed3300868dce1ab874dde0ef929ea1b9af6
MD5 167e84148c2fbe5ae96fdb6fbebedd6a
BLAKE2b-256 d50cbb2f80e9cb1b9429e130e7efe518fab3126a7f901fa225b47da7184e4df3

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314t-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314t-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 363.1 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 9f8eab9fe83f542a7cbd3826b2f45e6dd247ecdc1bf29b702feef0e045542feb
MD5 dabff3cf3b9a4d2a072e9fc8c3338c80
BLAKE2b-256 f605312aea708b87ff87ba22df56921a0ba1f5f3feb6c270436702469c9074ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314t-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5fcb56f3a5ac47ce804234f8bd53fe23dc5932f4a918164eb7c77c026ac1338a
MD5 3e26b41aae84867cc57a3ed0ad66ad9b
BLAKE2b-256 468be9b243735b29b12b439f62b94d1c58f1ad25380a837c3559c07f2e8fe98b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 581d807150f9b0d05f8a8cf78329f0b69aa4d362936b0fce13bc251cf68de849
MD5 8e8ef1634c703c10c91cb97cf64adee0
BLAKE2b-256 517f2428cb8053332b4a1fe1cabee1e199cbd1ea55f93428cc2c5424a903293a

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1e7347f1a4119f37ffdbd1ab9407117723a2a2a07d0a8e4b3e603b5627b7d43
MD5 6dc91281721606b4d47cbe64adbdbb19
BLAKE2b-256 cd6f910f7691a0ac51e1719301e0cfdad6e10c028f2b9807e80b05effb2bc986

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 372.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 795e56eb7a8d40ec842ccda8142dc4be95c8e187df9ea3858d35a722716d3cc3
MD5 f9d60781a1f432998e71c5dd9cd1d875
BLAKE2b-256 af9e39313cd6401394e5dfdff4b5e677045d2ef4f0ba441cfba90d9776b63144

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp314-cp314-win32.whl
  • Upload date:
  • Size: 355.1 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 54dee9045c97644973c2de4f7d28f440b2e05f0b3fce24646964ef67e935166e
MD5 443258cb0611356551cb708b8bb9976d
BLAKE2b-256 e68000a0daeb8375eb812d81097de49687d564a0a8f35f10563071f38d3c829b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a94e27787b5cc008d2efa4343fdba77c73f316c36c1645149b40f17b98823b11
MD5 b3d8ddc16b490adfae7bc9900f6524f5
BLAKE2b-256 5812a53c0eba43c9c785b955fa3c0ea446c2c7d4d419e1dcfeab89fa4562643b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e2baf12d1fe4cff54d7bb02e9b9cd3a7b7c6938d38206018dca792a07957c02
MD5 b448fc4976eaca09329dea9ce5015b25
BLAKE2b-256 89b01772b4ffaf658037813bdf88ac0d293bfcf7f0112b165a6e6208db1a4bca

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 342dbb666e5b1f0e15a5839eb132a37ccf4945f8377ba276e5f881b8bf6fecd9
MD5 4ba6a1b7ba599d579878c505c66c8adb
BLAKE2b-256 d2c8a210d904bf3c23bc1b5a37483c20b5f765e4c1021677955dd468c1eb3379

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 368.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b24fa7e18f436a65828684d95afa0df19505422f5aca921f891404d3e6518fcb
MD5 1c306d965aa3754fcb6cd85e38685832
BLAKE2b-256 7734bbd2ecb02d1723e340e56336aef3c065b0680b19e8abdc611456df2e5fb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp313-cp313-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp313-cp313-win32.whl
  • Upload date:
  • Size: 350.2 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 e0bf2cc9082b4ba33eb091313ab44eeb31f65cea571ec56540a2abf009273677
MD5 e1a37dc26d644bed59afa34d84948ec0
BLAKE2b-256 ef904fd2714d186b1a55df5323fb5ea5d819e3f43bfbcd00da8cd05235e64a4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp313-cp313-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 802322e8cd923a1cd7b0b7e3a109c4e8c64025edd86fb28ab783bcaf0576f68a
MD5 3c05591bc3070e523721fb72291e00d1
BLAKE2b-256 7a0079ba9b1b4befa7d63a5b10241c3f33f66e6b12a1fb2dabff8468ca49590c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b7830574756e5eef7e079b64dd49080e2ca46e6a7ffeab5dffaeb2b0369fd9e
MD5 f493ae1985678db2c9f7ba55d1d1aaa3
BLAKE2b-256 5d536eec8f88b1552b84fbfb720c9c0bf4abf19450365f5200fa373f80648c3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aaa68af138d9a099aeb6256704bac0f3d1e40722114b7215193ac45cf0a9b327
MD5 d75d6d56274387cee06fce3701258854
BLAKE2b-256 f225e7a0c964d89576663df3300ba3b3e48108000dab9ba2fb654554f346b755

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 368.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fa0fc2460a81c3aba5c19829adf636deddbb89f2bc97787c7eb9a05b963bc94e
MD5 c4c5e6c7823515f63bb27a5dbabbbf6f
BLAKE2b-256 2f6de399b8587130fe6ecc94ee46708640d34c05950734603c60692cb7f06a0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp312-cp312-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp312-cp312-win32.whl
  • Upload date:
  • Size: 350.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 7c583321de9cb588045ed8a88d8d0594622e169df285105babb6840236155929
MD5 eb2d1086497e8afcffdf77205b7f5b72
BLAKE2b-256 a48df9edf2f4a6f16899d04c3365f320a2912147a76f69ef7a334c7c25cf9a38

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp312-cp312-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 254769341e2655099779095ba771a3756cc7197c4af14704a2362259fee136d6
MD5 85aecf25dddd276b19ef6d067bb62c67
BLAKE2b-256 93ae2cb0dd3deef7ab1ddf5810fede9331352afed2d74abf0a09838f6e11f1ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2a29e184ec00fdb8f8ffca063ea24543fcf1fffb39733722d8b2e3cb82849267
MD5 b437571ba83d1c5cf051ed3483bb1f91
BLAKE2b-256 93ba8a882a2944c57fecf72a3c7c2a50bf03e488ede2cb690384620fc88e8960

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c857ac55650535502d9b328fdee08b3735c15301b2b90b11831409aa6bace158
MD5 d047b96770434287a0e9ae5f2a9301f6
BLAKE2b-256 b3f5543d307cd16ec25912c41573b58a02899969080f317fceb5a404172a56f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 366.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 521192a03059e26a62b97a1bf7f31539ef5af00c5f3a058f4cbcb4fe1e0a6634
MD5 1e0ae97453364bfd6668c4d3800e33b1
BLAKE2b-256 ddbc1a470c72f9caf17216400dd9b998e2068ffb2be9c483db3dbe22337098ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp311-cp311-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp311-cp311-win32.whl
  • Upload date:
  • Size: 349.9 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 bcde19e4255280fab805e0c589ba7ee3265773d10c2cdc507a09f5c77b41e02a
MD5 fd50ff875956c57e74a806749f06f4c2
BLAKE2b-256 0fa92da7058e059ea6e084cb1e3e4aff3440d3852332cf8812e7922776a41532

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp311-cp311-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4a7190c4e7ebd1384331828b5353895e904fa918ae12ff9be7325cbdf3fe6c21
MD5 0de00b4ca75dcc5e0b921738cb42e14c
BLAKE2b-256 393c5ffb45584578db7ef2018ce2fb98624774f3342f30b038705a05b9baa8a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e943809f508506b0a6cba35555ad7e18faf1b90d53ce5f960967da960998830
MD5 68cc742849e4165f54fa85bcfaec72c9
BLAKE2b-256 dc13ceafa9b3013a73ae6a39e22fb95c0f1abb68ee7d23581717f039dd1aee91

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 842fe19ca098de610ce62d12c71416be730c7bcda24c904b0d824b0b3f44db6d
MD5 6b5975525a91a760d18faf5add74a5f6
BLAKE2b-256 1873bf8c4af8298e425a585be8802c21b65518205e2e235189ba1bcb960f728e

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 365.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 75029f46db729c7b41f95dd1c4d51176eca4c4588baf44f32ad63e1e3a1f9afb
MD5 05d39ae224e2515f399619c3620c33e1
BLAKE2b-256 8d6491187ff3f5d85f7c434067ecc4b45bb3bf5eda7d5664bdee3c74f8cae926

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp310-cp310-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp310-cp310-win32.whl
  • Upload date:
  • Size: 349.0 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 08eb25ec8fc76d15067f757fca0be56cda588a114df76fa404b57b4d95635bc5
MD5 c96479f69a12763534ed1ead8fac022d
BLAKE2b-256 f1301ab0f99b28133df5046f4a4f64b3096c577c3cb35d202856b8fe188c5e89

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp310-cp310-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b6ced1fb4e2b3c413d4c0b95613830983434e842192423107137c4c7c2ee44e
MD5 6ac789ef44353e2501a94873aeda7b12
BLAKE2b-256 6894137825bee8e47259ffadbced9ea95beab4a0e8a08f4089097405498f4b74

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7e4cafffafb12dd46dfa65e8f88195cce637fdcf61f6fa7233d1072cfdc893b
MD5 810d3b07fea2a502498fbca48b0bd647
BLAKE2b-256 910aa31506995f8b23d6d5f838f93f66f1107ec5ec271da138f70821755871ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 713faa1b3d848cdf690538f24be327515eff68fe7a4a2d30588b3b9a0e8a8015
MD5 76051c44f55ce2e99b1e8062fecee5ea
BLAKE2b-256 bfc4014c08733f8164a17b9f84df9f08b4b768f3e06f00dbd3a8baf437d5de5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 368.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a69d25a71806b2bd19a37b36e3d3ee92f249d0669097a57a9494fa57cd3340b0
MD5 49dcfc96e66c67b9c89a1b5c69ee3c7b
BLAKE2b-256 e868e856d710dbc060c297c39edef009a20b721d9de9fe896e73b473b1716203

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp39-cp39-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp39-cp39-win32.whl
  • Upload date:
  • Size: 349.1 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e42d4325bcca0febae8ffc3d7d2356cee16c4468f02a6950e3881f8df2a1b2db
MD5 bf143f3ad9434f8b80917d165a85ce93
BLAKE2b-256 da7ac10704afc6f0df2acee306f3b1b41c6a409ab53fdfb8d02391f61c7db75c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp39-cp39-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4da6f15d1e801fcd369e7c89e846a00ff5f9f24eb437cfb5b29640ef5ed48ce5
MD5 6dcd585c77c2c98583284605763b0110
BLAKE2b-256 0f09db30f74a9c8f09f02a6379d1d10f158f8ed53b1af5f2110bf9df66bf2121

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7f28fcc4223171d9aaff488836fbd3d97d0a87681dc7d55c2668b07e66e951f5
MD5 f955a3549dbca280c5543f72ed7a80cd
BLAKE2b-256 179c771b0a5d6ee3e6085eece381415b5c5cf66d6efc7fbbeaaa293963a57441

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 deea83998b74624b566e85add2a5c7ce6958057d4a6b34959c932e4af4e0d83e
MD5 d0b2cfef5509a20c49f6b191ef06a125
BLAKE2b-256 288fb7b60d58c4de7e36488f5429840b086b405a3bd94d69e3e505417ad09288

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 365.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 8fd3ce635412452c57c484ffc67788e23bd5b1fd96e70fc801c36494bc507b47
MD5 7db6d344599c70c5c16530fc6f23b39f
BLAKE2b-256 284a5dbe46c88b2d38afa114a96c69caf2cecd34bc3abc96cf3b3b13feafc9eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp38-cp38-win_amd64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp38-cp38-win32.whl.

File metadata

  • Download URL: opentimspy-1.0.20-cp38-cp38-win32.whl
  • Upload date:
  • Size: 349.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opentimspy-1.0.20-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 078f7d5f1e8050cd3b868e8e1281ea5e25560b56f9e9f7eb188e977698d6fd32
MD5 1d6d86e34937741d1e79516e2f2334d5
BLAKE2b-256 82be08e0babbb00c9ca28ce82a863872c5a1e0786a46063f3a24e5330cb0f561

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp38-cp38-win32.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18a5ef88b1d7c67b2bc1f98d080ea2db01171cf604a8568ec7fb9a2618dfba7d
MD5 78024866cc42380916030e1d8ba9a587
BLAKE2b-256 59cea4fedc2d0b34ec555250ebc00130295014bf6c5f9d191f7d4f4f7e200ed0

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9765205e29568929f3cd2d64611eaf491c4f4f5751c6852c4e01edb9519afc95
MD5 5431e921ecc0315a0b2d159698992aa3
BLAKE2b-256 f079e899de51e1df184661cc8bf654235041bbe7065167b80d3ddcca381ff181

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentimspy-1.0.20-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opentimspy-1.0.20-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24c32bfab406b3a324ae901d3fc1e4886210ac433999934ff21414a41682317e
MD5 1bff57f27115adbf4bf3f64d1c5a7826
BLAKE2b-256 9182396651757d3b3d990dfc8e745356e2f4c7510c8ed00d1d81ac360d5c2d4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentimspy-1.0.20-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: publish.yml on michalsta/opentims

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page