Skip to main content

Mathematical expression parser: cython wrapper around the 'C++ Mathematical Expression Toolkit Library'

Project description

cexprtk: Mathematical Expression Parsing and Evaluation in Python

cexprtk is a cython wrapper around the "ExprTK: C++ Mathematical Expression Toolkit Library " by Arash Partow. Using cexprtk a powerful mathematical expression engine can be incorporated into your python project.

Table of Contents

Installation

The latest version of cexprtk can be installed using pip :

	$ pip install cexprtk

Note: Installation requires a compatible C++ compiler to be installed (unless installing from a binary wheel).

Usage

The following examples show the major features of cexprtk.

Example: Evaluate a simple equation

The following shows how the arithmetic expression (5+5) * 23 can be evaluated:

	>>> import cexprtk
	>>> cexprtk.evaluate_expression("(5+5) * 23", {})
	230.0

Example: Using Variables

Variables can be used within expressions by passing a dictionary to the evaluate_expression function. This maps variable names to their values. The expression from the previous example can be re-calculated using variable values:

	>>> import cexprtk
	>>> cexprtk.evaluate_expression("(A+B) * C", {"A" : 5, "B" : 5, "C" : 23})
	230.0

Example: Re-using expressions

When using the evaluate_expression() function, the mathematical expression is parsed, evaluated and then immediately thrown away. This example shows how to re-use an Expression for multiple evaluations.

  • An expression will be defined to calculate the circumference of circle, this will then be re-used to calculate the value for several different radii.
  • First a Symbol_Table is created containing a variable r (for radius), it is also populated with some useful constants such as π.
	>>> import cexprtk
	>>> st = cexprtk.Symbol_Table({'r' : 1.0}, add_constants= True)
  • Now an instance of Expression is created, defining our function:
	>>> circumference = cexprtk.Expression('2*pi*r', st)
  • The Symbol_Table was initialised with r=1, the expression can be evaluated for this radius simply by calling it:
	>>> circumference()
	6.283185307179586
  • Now update the radius to a value of 3.0 using the dictionary like object returned by the Symbol_Table's .variables property:
	>>> st.variables['r'] = 3.0
	>>> circumference()
	18.84955592153876

Example: Defining custom functions

Python functions can be registered with a Symbol_Table then used in an Expression. In this example a custom function will be defined which produces a random number within a given range.

A suitable function exists in the random module, namely random.uniform. As this is an instance method it needs to be wrapped in function:

>>> import random
>>> def rnd(low, high):
...   return random.uniform(low,high)
...

Our rnd function now needs to be registered with a Symbol_Table:

>>> import cexprtk
>>> st = cexprtk.Symbol_Table({})
>>> st.functions["rand"] = rnd

The functions property of the Symbol_Table is accessed like a dictionary. In the preceding code snippet, a symbol table is created and then the rnd function is assigned to the rand key. This key is used as the function's name in a cexprtk expression. The key cannot be the same as an existing variable, constant or reserved function name.

The rand function will now be used in an expression. This expression chooses a random number between 5 and 8 and then multiplies it by 10. The followin snippet shows the instantiation of the Expression which is then evaluated a few times. You will probably get different numbers out of your expression than shown, this is because your random number generator will have been initialised with a different seed than used in the example.

>>> e = cexprtk.Expression("rand(5,8) * 10", st)
>>> e()
61.4668441077191
>>> e()
77.13523163246415
>>> e()
59.14881842716157
>>> e()
69.1476535568958

Example: Defining an unknown symbol resolver

A callback can be passed to the Expression constructor through the unknown_symbol_resolver_callback parameter. This callback is invoked during expression parsing when a variable or constant is encountered that isn't in the Symbol_Table associated with the Expression.

The callback can be used to provide some logic that leads to a new symbol being registered or for an error condition to be flagged.

The Problem: The following example shows a potential use for the symbol resolver:

  • An expression contains variables of the form m_VARIABLENAME and f_VARIABLENAME.
  • m_ or f_ prefix the actual variable name (perhaps indicating gender).
  • VARIABLENAME should be used to look up the desired value in a dictionary.
  • The dictionary value of VARIABLENAME should then be weighted according to its prefix:
    • m_ variables should be multiplied by 0.8.
    • f_ variables should be multiplied by 1.1.

The Solution:

  • First the VARIABLENAME dictionary is defined:

     variable_values = { 'county_a' : 82, 'county_b' : 76}
    
  • Now the callback is defined. This takes a single argument, symbol, which gives the name of the missing variable found in the expression:

     def callback(symbol):
     	# Tokenize the symbol name into prefix and VARIABLENAME components.
     	prefix,variablename = symbol.split("_", 1)
     	# Get the value for this VARIABLENAME from the variable_values dict
     	value = variable_values[variablename]
     	# Find the correct weight for the prefix
     	if prefix == 'm':
     		weight = 0.8
     	elif prefix == 'f':
     		weight = 1.1
     	else:
     		# Flag an error condition if prefix not found.
     		errormsg = "Unknown prefix "+ str(prefix)
     		return (False, cexprtk.USRSymbolType.VARIABLE, 0.0, errormsg)
     	# Apply the weight to the 
     	value *= weight
     	# Indicate success and return value to cexprtk
     	return (True, cexprtk.USRSymbolType.VARIABLE, value, "")
    
  • All that remains is to register the callback with an instance of Expression and to evaluate an expression. The expression to be evaluated is:

    • (m_county_a - f_county_b)
    • This should give a value of (0.8*82) - (1.1*76) = -18
     	>>> st = cexprtk.Symbol_Table({})
     	>>> e = cexprtk.Expression("(m_county_a - f_county_b)", st, callback)
     	>>> e.value()
     	-18.0
    

Example: expressions that contain return statements to produce multiple values

Exprtk expressions can return multiple values the results these expressions can be accessed through the results() method.

The following example shows the result of adding a constant value to a vector containing numbers:

	>>> st = cexprtk.Symbol_Table({})
	>>> e = cexprtk.Expression("var v[3] := {1,2,3}; return [v+1];", st)
	>>> e.value()
	nan
	>>> e.results()
	[[2.0, 3.0, 4.0]]

Note that expression has to be evaluated before calling the results() method.

The value accessed through results() can contain a mixture of strings, vectors and real values:

	>>> st = cexprtk.Symbol_Table({'c' : 3})
	>>> e = cexprtk.Expression("if(c>1){return ['bigger than one', c];} else { return ['not bigger than one',c];};",st)
	>>> e.value()
	nan
	>>> e.results()
	['bigger than one', 3.0]
	>>> st.variables['c']=0.5
	>>> e.value()
	nan
	>>> e.results()
	['not bigger than one', 0.5]

API Reference

For information about expressions supported by cexprtk please refer to the original C++ ExprTK documentation:

Class Reference

class Expression:

Class representing mathematical expression.

  • Following instantiation, the expression is evaluated calling the expression or invoking its value() method.
  • The variable values used by the Expression can be modified through the variables property of the Symbol_Table instance associated with the expression. The Symbol_Table can be accessed using the Expression.symbol_table property.
Defining unknown symbol-resolver:

The unknown_symbol_resolver_callback argument to the Expression constructor accepts a callable which is invoked whenever a symbol (i.e. a variable or a constant), is not found in the Symbol_Table given by the symbol_table argument. The unknown_symbol_resolver_callback can be used to provide a value for the missing value or to set an error condition.

The callable should have following signature:

	def callback(symbol_name):
		...

Where symbol_name is a string identifying the missing symbol.

The callable should return a tuple of the form:

	(HANDLED_FLAG, USR_SYMBOL_TYPE, SYMBOL_VALUE, ERROR_STRING)

Where:

  • HANDLED_FLAG is a boolean:
    • True indicates that callback was able handle the error condition and that SYMBOL_VALUE should be used for the missing symbol.
    • False, flags and error condition, the reason why the unknown symbol could not be resolved by the callback is described by ERROR_STRING.
  • USR_SYMBOL_TYPE gives type of symbol (constant or variable) that should be added to the symbol_table when unkown symbol is resolved. Value should be one of those given in cexprtk.USRSymbolType. e.g.
    • cexprtk.USRSymbolType.VARIABLE
    • cexprtk.USRSymbolType.CONSTANT
  • SYMBOL_VALUE, floating point value that should be used when resolving missing symbol.
  • ERROR_STRING when HANDLED_FLAG is False this can be used to describe error condition.
def init(self, expression, symbol_table, unknown_symbol_resolver_callback = None):

Instantiate Expression from a text string giving formula and Symbol_Table instance encapsulating variables and constants used by the expression.

Parameters:

  • expression (str) String giving expression to be calculated.
  • symbol_table (Symbol_Table) Object defining variables and constants.
  • unknown_symbol_resolver_callback (callable) See description above.
def results(self):

If an expression contains a return [] statement, the returned values are accessed using this method.

A python list is returned which may contain real values, strings or vectors.

Note: the expression should be evaluated by calling value() before trying to access results.

Returns:

  • (list) List of values produced by expression's return statement.
def value(self):

Evaluate expression using variable values currently set within associated Symbol_Table

Returns:

  • (float) Value resulting from evaluation of expression.
def call(self):

Equivalent to calling value() method.

Returns:

  • (float) Value resulting from evaluation of expression.
symbol_table

Read only property that returns Symbol_Table instance associated with this expression.

Returns:

  • (Symbol_Table) Symbol_Table associated with this Expression.

class Symbol_Table:

Class for providing variable and constant values to Expression instances.

def init(self, variables, constants = {}, add_constants = False, functions = {}, string_variables = {}):

Instantiate Symbol_Table defining variables and constants for use with Expression class.

Example:

  • To instantiate a Symbol_Table with:

    • x = 1
    • y = 5
    • define a constant k = 1.3806488e-23
  • The following code would be used:

     	st = cexprtk.Symbol_Table({'x' : 1, 'y' : 5}, {'k'= 1.3806488e-23})
    

Parameters:

  • variables (dict) Mapping between variable name and initial variable value.
  • constants (dict) Dictionary containing values that should be added to Symbol_Table as constants. These can be used a variables within expressions but their values cannot be updated following Symbol_Table instantiation.
  • add_constants (bool) If True, add the standard constants pi, inf, epsilon to the 'constants' dictionary before populating the Symbol_Table
  • functions (dict) Dictionary containing custom functions to be made available to expressions. Dictionary keys specify function names and values should be functions.
  • string_variables (dict) Mapping between variable name and initial variable value for string variables.
variables

Returns dictionary like object containing variable values. Symbol_Table values can be updated through this object.

Example:

	>>> import cexprtk
	>>> st = cexprtk.Symbol_Table({'x' : 5, 'y' : 5})
	>>> expression = cexprtk.Expression('x+y', st)
	>>> expression()
	10.0

Update the value of x in the symbol table and re-evaluate the expression:

	>>> expression.symbol_table.variables['x'] = 11.0
	>>> expression()
	16.0

Returns:

  • Dictionary like giving variables stored in this Symbol_Table. Keys are variables names and these map to variable values.
constants

Property giving constants stored in this Symbol_Table.

Returns:

  • Read-only dictionary like object mapping constant names stored in Symbol_Table to their values.
functions

Returns dictionary like object containing custom python functions to use in expressions.

Returns:

  • Dictionary like giving function stored in this Symbol_Table. Keys are function names (as used in Expression) and these map to python callable objects including functions, functors, and functools.partial.
string_variables

Returns dictionary like object containing string variable values. Symbol_Table values can be updated through this object.

Example:

	>>> import cexprtk
	>>> st = cexprtk.Symbol_Table({})
	>>> st.string_variables['s1'] = 'he'
	>>> st.string_variables['s2'] = 'l'
	>>> st.string_variables['s3'] = 'lo'
	>>> expression = cexprtk.Expression("return[s1+s2+s3+' world']", st)
	>>> expression.value()
	nan
	>>> expression.results()
	['hello world']

Returns:

  • Dictionary like giving the string variables stored in this Symbol_Table. Keys are variables names and these map to string values.

class USRSymbolType:

Defines constant values used to determine symbol type returned by unknown_symbol_resolver_callback (see Expression constructor documentation for more).

VARIABLE

Value that should be returned by an unknown_symbol_resolver_callback to define a variable.

CONSTANT

Value that should be returned by an unknown_symbol_resolver_callback to define a constant.


Utility Functions

def check_expression (expression)

Check that expression can be parsed. If successful do nothing, if unsuccessful raise ParseException.

Parameters:

  • expression (str) Formula to be evaluated

Raises:

  • ParseException: If expression is invalid.

def evaluate_expression (expression, variables)

Evaluate a mathematical formula using the exprtk library and return result.

For more information about supported functions and syntax see the exprtk C++ library website.

Parameters:

  • expression (str) Expression to be evaluated.
  • variables (dict) Dictionary containing variable name, variable value pairs to be used in expression.

Returns:

  • (float): Evaluated expression

Raises:

  • ParseException: if expression is invalid.

Authors

Cython wrapper by Michael Rushton (m.j.d.rushton@gmail.com), although most credit should go to Arash Partow for creating the underlying ExprTK library.

Thanks to:

  • jciskey for adding the Expression.results() support.
  • Caleb Hattingh for getting cexprtk to build using MSVC on Windows.

License

cexprtk is released under the same terms as the ExprTK library the Common Public License Version 1.0 (CPL).

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

cexprtk-0.4.2.tar.gz (562.3 kB view details)

Uploaded Source

Built Distributions

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

cexprtk-0.4.2-cp314-cp314-win_amd64.whl (948.6 kB view details)

Uploaded CPython 3.14Windows x86-64

cexprtk-0.4.2-cp314-cp314-win32.whl (877.1 kB view details)

Uploaded CPython 3.14Windows x86

cexprtk-0.4.2-cp314-cp314-musllinux_1_2_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cexprtk-0.4.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (22.9 MB view details)

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

cexprtk-0.4.2-cp314-cp314-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cexprtk-0.4.2-cp314-cp314-macosx_10_15_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

cexprtk-0.4.2-cp313-cp313-win_amd64.whl (925.4 kB view details)

Uploaded CPython 3.13Windows x86-64

cexprtk-0.4.2-cp313-cp313-win32.whl (861.0 kB view details)

Uploaded CPython 3.13Windows x86

cexprtk-0.4.2-cp313-cp313-musllinux_1_2_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cexprtk-0.4.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (22.9 MB view details)

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

cexprtk-0.4.2-cp313-cp313-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cexprtk-0.4.2-cp313-cp313-macosx_10_13_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cexprtk-0.4.2-cp312-cp312-win_amd64.whl (925.6 kB view details)

Uploaded CPython 3.12Windows x86-64

cexprtk-0.4.2-cp312-cp312-win32.whl (861.8 kB view details)

Uploaded CPython 3.12Windows x86

cexprtk-0.4.2-cp312-cp312-musllinux_1_2_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cexprtk-0.4.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (22.9 MB view details)

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

cexprtk-0.4.2-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cexprtk-0.4.2-cp312-cp312-macosx_10_13_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cexprtk-0.4.2-cp311-cp311-win_amd64.whl (925.0 kB view details)

Uploaded CPython 3.11Windows x86-64

cexprtk-0.4.2-cp311-cp311-win32.whl (860.9 kB view details)

Uploaded CPython 3.11Windows x86

cexprtk-0.4.2-cp311-cp311-musllinux_1_2_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cexprtk-0.4.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (22.9 MB view details)

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

cexprtk-0.4.2-cp311-cp311-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cexprtk-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cexprtk-0.4.2-cp310-cp310-win_amd64.whl (924.1 kB view details)

Uploaded CPython 3.10Windows x86-64

cexprtk-0.4.2-cp310-cp310-win32.whl (861.7 kB view details)

Uploaded CPython 3.10Windows x86

cexprtk-0.4.2-cp310-cp310-musllinux_1_2_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cexprtk-0.4.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (22.9 MB view details)

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

cexprtk-0.4.2-cp310-cp310-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cexprtk-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file cexprtk-0.4.2.tar.gz.

File metadata

  • Download URL: cexprtk-0.4.2.tar.gz
  • Upload date:
  • Size: 562.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2.tar.gz
Algorithm Hash digest
SHA256 b012e41dca34bb6884b1d53198f5b638d3ff15ed3ca747ce5492e6cf3dede28b
MD5 c3e20d8b4604e7558b3c23e0778d9510
BLAKE2b-256 c5c9a4117543eabce9ef4cf70264da25caaa8e6aecf6067f5f356bff801df576

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 948.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2283a0b7a05872ecd65e791c3aba7a37b49e26da53142196ec61788bcb66dc3d
MD5 600045dd778841ba4239044e1e80cd84
BLAKE2b-256 76afd28dc798150cbddab329820d329f48c053ae797b55c1413f0aa6a9681064

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp314-cp314-win32.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp314-cp314-win32.whl
  • Upload date:
  • Size: 877.1 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 13fc45221ffc74b51199025ebd3e6850261a68ea7b39fb608f0438245b570819
MD5 685e5200ccf52c03ef679a3769a73cef
BLAKE2b-256 10bfd87a77fd0766bb9e264d980a162cfd62ad4a3d746d2345ba683105ed53b3

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a45f089442977a172caadd83d9dafe92a6acc64243fff1bb7a8187732733cd95
MD5 458c3e47c437637bf0fa19879982446e
BLAKE2b-256 8fb3b3a8f914cd7727756e8cf020840ec354eee04a3c15635bfe4298c014b1f4

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7dadb1cd09abda8507f35ed97eb6fc3b453aee3c365c42881709df2803d880da
MD5 93afef947fc86ac95100ed0399b2365a
BLAKE2b-256 9aa253ec41c5e06ff46c05b2148ca6f7356780d2b8c8966a665d8f86465fac9e

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 611997179130803e46d98b5c30388c734a392f0a26c0cac19615a6519f1e0f89
MD5 2dbdfb1789abd285f5ef486673dcbc7b
BLAKE2b-256 2242161276bfb9c1a6125ad66bcecd1b13d8c0aa42b256a0a1e419eb4704988f

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 278b833871d445ea2e8a5da23a49c0948f12eb14330f6275f09a825c50737475
MD5 048cb953ad663427d001d4f2102f3830
BLAKE2b-256 4a12886a881242e105751cf2ac2fb564f9ef9f324148081818f7c35ed1cd1799

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 925.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 240830b08881f5fd509932a1b2ad808210e74c5dd1fee0f3cd4f0947f6742f23
MD5 dd1ca43faa85001e5d64baaed1df8472
BLAKE2b-256 c028ffb786a6eccce29449eff8dee903a852fcb0dd3eaee3a4f50487d94ac37a

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp313-cp313-win32.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 861.0 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 c08eaa5d10f83f679cb26377d7c330bb21bb1e4a9205512972ac885c547c2c83
MD5 08875e7671d540533f8dd377252a1e35
BLAKE2b-256 0c93776c49c2807b3533305299da455586179257835061a6fbf1ad551ad1a8ad

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 305ac294a915f595b44013228cbf5b51bd5c0ad81ccbcfe85c2148e6f260de2a
MD5 2c1f7efed64e771bca80441c1249581c
BLAKE2b-256 c2fe49918a7a7a9f1a6323c353db6be0b774bc75c11a8c11dd8c2038a18d2825

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69c5ab68837cb1548823652bc754ff7f1dc209e0ff564828e7d5260ec593c57f
MD5 b7df54e4cd50787d8a53b8f5d4b80c1c
BLAKE2b-256 7c2e606dd905270ddf406db2351aa73cdbc28cf80d987c24c6ca155f5b9fc4f0

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 531b9a6184eaad32062f0f718dd47c6ab1a73fa1c7bf7a6f510f6fea6914330c
MD5 4944775ca7ab4e4df88b0c8e251b4457
BLAKE2b-256 06f294d6e5550c2e4937de0937ef60affed4beb4989a85d54d01f581324959bf

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 94cd0fb15a014c3477ce4e5d642228f243e8fb5d25ae4bfc8bd0e0fbc641dfc9
MD5 120b229cabbf9be0646aa37540f38f68
BLAKE2b-256 55cc4598916babd01b44882ff47873aa2458fb0a91445162904d46719ed13627

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 925.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3f1948069a3c472c95120dde8198384481cd745b5b3dd455ae87730eddded701
MD5 bd36ad5615e0cfafa965a359ca1c55cf
BLAKE2b-256 058612d802cb9473039dfd8cc3b4a0437cbc8c6d8f2428218c23bab072bb1278

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp312-cp312-win32.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 861.8 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 b1840d51461955d3bb8c15c10ab3ec66c6db313ebb8fbeec78f981ced599e391
MD5 76d45965bdcad5cbcb23bed45f87791a
BLAKE2b-256 421a33a993c9f82c0eda5c7865a9a4f3b6b152739cc84bfe865cd7012f03f804

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7695006663de876858e433264c2c337525930ee1e72d2f26ffb12ca5314ad46b
MD5 466f58b2502bb59404a42291328c1b0b
BLAKE2b-256 3225b2ed5c80c42daaa874583f0d5e7a9f472e03d8737c961e5508c146657d37

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9c1dcb17163d114489d8a516efea222f7ce8fc4ff57c11c4283b80a73aae8989
MD5 bb26610593eb68c593c3c9ac45a09eda
BLAKE2b-256 80b7fb17e0e1d44c711d931013037f37b31614d83a1d2af79a9dd019a141a640

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 970e25f155bfa2ce212dd674175dd6d5662447578b312127ccd7e6cb0b00ee90
MD5 ccdaeb772701bf48d64a774583ea0c84
BLAKE2b-256 ab53855d99187b633dc10ca60162c322db86eab3cb329a0bfe3f9b81758cbbf7

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c202218fbff3c3ba006dc4113f3b0411acbe96e4fbb4ef0ca85442e2b9007485
MD5 d8e090bdc73542843df85348f810d2f1
BLAKE2b-256 1aad793eb0db81b75b87b90c0ca6dd9bb9c5338bb3e15c955e8f80deffccefdf

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 925.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0d6a3275f90da211fb2ce8463b36936eab1af783466f58c0ef7f307283492600
MD5 86be8d976df455cf27334ff13a15f71c
BLAKE2b-256 e2ce2f9932f959adb44c2ada40c212f892a7c67d7cf1f4bed45b70badd86d956

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp311-cp311-win32.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 860.9 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 b878ab1acfa40d67b57cbd77c4aa7440ee8317a80ffd00342ba6305d0280540a
MD5 74a285bf2ec7896b675a60810cda1941
BLAKE2b-256 4b0e825cb4204a5425e88b07239c5aa3cf964fba3e311145580c091111af6ccc

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3191e1c521106bb39c9f9f1d6c5940a768feb23f35d75ba366b867ac93ae1099
MD5 71106f9b54509d005e2592adac9047a8
BLAKE2b-256 6e8551af4d1d4dd26f467ca4c7438854946daf49bdf6b62d61e8601f41c552ee

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4a2cd3b3dd43e4785385a6e15ffdd4494c32ab5dfb9cacfb3152dba74409640
MD5 4c4870fd735345f92716ccaec4650e34
BLAKE2b-256 5fd304ba39abc188f3a328164f19f382a182c7de86cbdea33ebc09e83250eb72

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7131099803342792cfcdfd5a008b79ac2c99edf1c1804a13c18fbb66fd2eb21
MD5 e3c6a15bb82953ced9216278ce367fd8
BLAKE2b-256 d0cc4f6e2993d60ffb7b1c12bc134108f6e690805c85f30cc70e38da027764dd

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eb4bd1397ae2148455c6226596117ace4ec0f93a5d4cca3b02d8a8a0ea264ab6
MD5 6bdcb7489e3a7526f1e1c32dcd78bd28
BLAKE2b-256 d9cbe694f4ca7f1b98a1c9b0079193fb5b0151af03a5d6244dc63a3052b23416

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 924.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 38424acc315bb58352ec6a77c8d695d382e2acf5f69b3e5aa9d78f1c6e3b4b2d
MD5 7a51aa09ee14adb6618aa818182b8ef5
BLAKE2b-256 5fba8568c44804643efcc8a9c5e72602b3a73b84d0cf545675fa6a97183215f0

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp310-cp310-win32.whl.

File metadata

  • Download URL: cexprtk-0.4.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 861.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for cexprtk-0.4.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 1afa8db9b36811f8cde059fb5a33aeee124211e67e251d0baff610d5cfde0ee5
MD5 4ba48f5e361a6465853d32183402bc20
BLAKE2b-256 a74cc9487fdc460ee729b2a9e0e55a8f27c3da080d3c8d0b850d53a7022cf69e

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7c102a105a138a90234f1e6034773c6d0e4cac03963495bd0d45613a1bea07b1
MD5 8db8baa09ee6430b2cfb0837194ae629
BLAKE2b-256 a36d80c392846baa515d21ab79568342cfa3a0f05ddd6dc21eb7deea13ec7188

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 117753a2126fd920fe3016b1abaa1b766507ecc881f079ddef093fedb85f77b0
MD5 797b71c1b174c2097efd57ce1ccd8b39
BLAKE2b-256 dae71a1b617e1490909dee35fd7d005910ab739160a4356fcf893063fa5fa578

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5d61250da1027a5161ef7bcb85c9d406046ab79795277ddaf11ae446696d56bf
MD5 5a444a17857de57eee98f1b74504a45d
BLAKE2b-256 20027e7dc74297c831ea6798b2da6af328ab9eeae3808443446b6dc7f606f250

See more details on using hashes here.

File details

Details for the file cexprtk-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cexprtk-0.4.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ca4c95cfea31fa340744a8091c1f7b42854ce65f14aa7b5c715afeb306349a0
MD5 970a486034fbafa780dab3fcead41836
BLAKE2b-256 1aa556f469f4ca2d6586e7c28d59315616d30b33feda12b3d4f8705120a52b3e

See more details on using hashes here.

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