Factor graph optimization library with Python bindings
Project description
Factorama Python
A Python interface to the Factorama C++ factor graph optimization library. Factorama provides a simple and efficient framework for factor graph-based optimization, perfect for small to medium-scale SLAM, calibration, and structure-from-motion problems.
Purpose
Factor graphs are a powerful framework for non-linear optimization problems commonly found in robotics and computer vision. Factorama's Python bindings make it easy to:
- Build factor graphs with poses, landmarks, and custom variables
- Add constraints through various factor types (bearing observations, priors, relative constraints)
- Optimize using Gauss-Newton or Levenberg-Marquardt algorithms
- Visualize results with built-in plotting capabilities
Perfect for prototyping SLAM algorithms, camera calibration, bundle adjustment, and sensor fusion applications.
Installation
pip install factorama
Dependencies
Factorama requires:
- numpy - For matrix operations and numerical arrays
- matplotlib - For visualization and plotting (optional, but recommended)
Examples
Basic Robot Localization
from factorama import FactorGraph, PoseVariable, LandmarkVariable, PosePositionPriorFactor, PoseOrientationPriorFactor, BearingObservationFactor
# Create factor graph and add variables
graph = FactorGraph()
robot_pose = PoseVariable(1, initial_pos, initial_dcm)
landmark = LandmarkVariable(2, landmark_pos)
graph.add_variable(robot_pose)
graph.add_variable(landmark)
# Add factors
position_prior = PosePositionPriorFactor(100, robot_pose, prior_pos, 0.1)
orientation_prior = PoseOrientationPriorFactor(101, robot_pose, prior_dcm, 0.1)
bearing_factor = BearingObservationFactor(200, robot_pose, landmark, bearing_obs, 0.01)
graph.add_factor(position_prior)
graph.add_factor(orientation_prior)
graph.add_factor(bearing_factor)
# Optimize
graph.finalize_structure()
optimizer = SparseOptimizer()
settings = OptimizerSettings()
settings.method = OptimizerMethod.LevenbergMarquardt
optimizer.setup(graph, settings)
optimizer.optimize()
→ Complete runnable example: examples/basic_localization.py
Bundle Adjustment with Multiple Views
from factorama import FactorGraph, PoseVariable, LandmarkVariable, PosePositionPriorFactor, PoseOrientationPriorFactor, BearingObservationFactor, PlotFactorGraph
# Create factor graph with multiple poses and landmarks
graph = FactorGraph()
# Add camera poses
poses = []
for i in range(3):
pose = PoseVariable(i + 1, pose_pos, pose_dcm)
poses.append(pose)
graph.add_variable(pose)
# Add landmarks and priors
landmarks = []
for i, pos in enumerate(landmark_positions):
landmark = LandmarkVariable(10 + i, pos)
landmarks.append(landmark)
graph.add_variable(landmark)
# Add bearing observations between all pose-landmark pairs
for pose in poses:
for landmark in landmarks:
factor = BearingObservationFactor(factor_id, pose, landmark, bearing, 0.01)
graph.add_factor(factor)
# Optimize and visualize
graph.finalize_structure()
optimizer.optimize()
PlotFactorGraph(graph)
→ Complete runnable example: examples/bundle_adjustment.py
Inverse Depth Parameterization
import numpy as np
from factorama import FactorGraph, PoseVariable, InverseRangeVariable, InverseRangeBearingFactor, SparseOptimizer, OptimizerSettings
graph = FactorGraph()
# Camera pose
camera_pose = PoseVariable(1, camera_pos, camera_dcm)
graph.add_variable(camera_pose)
# Inverse depth landmark (origin, bearing direction, initial range)
origin_pos = np.array([0.0, 0.0, 0.0])
bearing_direction = np.array([1.0, 0.0, 0.0])
initial_range = 10.0
inv_depth_landmark = InverseRangeVariable(2, origin_pos, bearing_direction, initial_range)
graph.add_variable(inv_depth_landmark)
# Bearing observation factor
bearing_obs = np.array([1.0, 0.0, 0.0])
bearing_factor = InverseRangeBearingFactor(100, camera_pose, inv_depth_landmark, bearing_obs, 0.01)
graph.add_factor(bearing_factor)
# Optimize
graph.finalize_structure()
optimizer = SparseOptimizer()
settings = OptimizerSettings()
optimizer.setup(graph, settings)
optimizer.optimize()
print(f"Final landmark position: {inv_depth_landmark.pos_W()}")
Variables
PoseVariable
Represents SE(3) poses with 6 DOF (position + orientation)
from factorama import PoseVariable
# From position and rotation matrix
pose = PoseVariable(id, position_3d, rotation_matrix_3x3)
# Alternative: From SE(3) vector [tx, ty, tz, rx, ry, rz]
pose = PoseVariable(id, pose_vector)
# Access position and rotation
position = pose.pos_W()
rotation_matrix = pose.dcm_CW()
LandmarkVariable
Represents 3D landmarks with 3 DOF
from factorama import LandmarkVariable
landmark = LandmarkVariable(id, position_3d)
position = landmark.pos_W()
GenericVariable
Represents arbitrary N-dimensional variables
from factorama import GenericVariable
generic = GenericVariable(id, initial_vector)
RotationVariable
Represents SO(3) rotations with 3 DOF
from factorama import RotationVariable
rotation = RotationVariable(id, rotation_matrix_3x3)
dcm = rotation.dcm_AB()
InverseRangeVariable
Represents landmarks using inverse depth parameterization (1 DOF)
from factorama import InverseRangeVariable
inv_range = InverseRangeVariable(id, origin_pos, bearing_direction, initial_range)
position = inv_range.pos_W()
inverse_depth = inv_range.inverse_range()
Factors
Prior Factors
- GenericPriorFactor: Prior constraints on any variable type
- PosePositionPriorFactor: Position-only prior for poses
- PoseOrientationPriorFactor: Orientation-only prior for poses
- RotationPriorFactor: Prior constraints on rotation variables
Observation Factors
- BearingObservationFactor: 3D bearing measurements from poses to landmarks
- InverseRangeBearingFactor: Bearing constraints with inverse depth parameterization
- BearingProjectionFactor2D: 2D bearing projections
Relative Constraint Factors
- GenericBetweenFactor: Relative constraints between any variable types
- PosePositionBetweenFactor: Position-only relative constraints between poses
- PoseOrientationBetweenFactor: Orientation-only relative constraints between poses
Optimization
from factorama import SparseOptimizer, OptimizerSettings, OptimizerMethod
# Create optimizer
optimizer = SparseOptimizer()
# Configure settings
settings = OptimizerSettings()
settings.method = OptimizerMethod.LevenbergMarquardt # or GaussNewton
settings.max_num_iterations = 100
settings.step_tolerance = 1e-6
settings.residual_tolerance = 1e-6
settings.verbose = True
# Setup and optimize
optimizer.setup(factor_graph, settings)
optimizer.optimize()
# Access results
print(f"Iterations: {optimizer.current_stats.current_iteration}")
print(f"Final chi2: {optimizer.current_stats.chi2}")
Utility Functions
from factorama import ExpMapSO3, LogMapSO3, PlotFactorGraph
# SO(3) exponential and logarithm maps
rotation_matrix = ExpMapSO3(rotation_vector)
rotation_vector = LogMapSO3(rotation_matrix)
# Factor graph visualization
PlotFactorGraph(graph, plot_3d=True)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file factorama-1.0.8-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: factorama-1.0.8-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 4.4 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cd4310b9df7d5ee2b5199172b63affba4e1073075e235277b4ff6a10fa43c43
|
|
| MD5 |
056f02c927782e3f5aaf590d188f076f
|
|
| BLAKE2b-256 |
7d3072bda99b71d80af6df32456f3cc7484ca437a3a1e25cd8f0226cc5591a18
|
File details
Details for the file factorama-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.12, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d615eb52961eb28f0147d57b4c4ce343211fb3e43551aba4a7afb7817a63994
|
|
| MD5 |
64bf7302e4d3e291ff892bee94b477a1
|
|
| BLAKE2b-256 |
126da6161cc05b51777a413500f2df95e33791055479fe4581754f47dc7bc715
|
File details
Details for the file factorama-1.0.8-cp312-cp312-musllinux_1_1_i686.whl.
File metadata
- Download URL: factorama-1.0.8-cp312-cp312-musllinux_1_1_i686.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.12, musllinux: musl 1.1+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2602f40389f73f0a4bc192735c14aef972d4ff9bf857f119c348720635a0ec3a
|
|
| MD5 |
cb1575b3f792c2d02d40c40f027de99f
|
|
| BLAKE2b-256 |
1715b5443758708b2dbbb13cdd619f54621d021794432e0c1243c084791791f3
|
File details
Details for the file factorama-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
560742d4c43f7959c6765988af0b4f5f9fd041a347d1ea9fe7b3d3be138ed102
|
|
| MD5 |
60a047913bb4f214ef92c11ea359def6
|
|
| BLAKE2b-256 |
97fdc222a65ea48f0fa1a8c72e2c131ae25f58b7f7270f13f220646073ad6530
|
File details
Details for the file factorama-1.0.8-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: factorama-1.0.8-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1119b2ce91f4472e61665249e2bf953c5b8bd4c5446059457889a0affe55d16
|
|
| MD5 |
c91727df47a143e9babcc8a5d8589910
|
|
| BLAKE2b-256 |
0eeeff95e21c94f5439802b530071f41046ae9620e3b34fc4f3a2a496487b7a9
|
File details
Details for the file factorama-1.0.8-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: factorama-1.0.8-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 4.1 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c66762b765c34911305c7b935deee49abb0b20c435111aa9ac824aec71ad7af
|
|
| MD5 |
fb326860b4eb27f025d3b0f85f0ac8eb
|
|
| BLAKE2b-256 |
8e368db2c16aafaf9b0378e643a755366e72a644565fccece0b1a16dae42eca8
|
File details
Details for the file factorama-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.11, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef92d76e0acdf364317dda66837a22430c48338fe6c2df707843eb5907691a4e
|
|
| MD5 |
5050ddb5287c3dbeebfa41ab81d608ce
|
|
| BLAKE2b-256 |
8082e45c4a9afc51100e64eda4ce170352dde19a02a8a14386d651d7e74dcae3
|
File details
Details for the file factorama-1.0.8-cp311-cp311-musllinux_1_1_i686.whl.
File metadata
- Download URL: factorama-1.0.8-cp311-cp311-musllinux_1_1_i686.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.11, musllinux: musl 1.1+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee183d4bd58aba4988f889de378c6355f4d13468ec4f1b60b5d2040b79fcc3a7
|
|
| MD5 |
fcc27d37dc44f6f595d0d12aba5c04b1
|
|
| BLAKE2b-256 |
ad569ca59e2ccf232d4315a27345ccbe474338e08f7ba80df215cc5091a2493f
|
File details
Details for the file factorama-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a422f9a566588a8bdac0d619b5b39277487c3c49dac25e730ec7a977552fe87f
|
|
| MD5 |
994986ee13d523284cf28a55e5a9a60f
|
|
| BLAKE2b-256 |
161cd0ef5a9fc86098893e40d11a439d9529ef2448d5226b04a8cc82f51f3b13
|
File details
Details for the file factorama-1.0.8-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: factorama-1.0.8-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fae5bb23a1373cefe91b9f598153b143e0d4d4e669646ca79f3fde91d852aeb
|
|
| MD5 |
8dfb606af9cc253ce6e824f4246e200e
|
|
| BLAKE2b-256 |
0caaac134b6b8896dd71288f4fee87def82529cb013e8241b6cde371c6d3f95a
|
File details
Details for the file factorama-1.0.8-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: factorama-1.0.8-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01dbba51dbcf6beba52a338df900bf848ea90b17c5d13ba51d729d3bd3904702
|
|
| MD5 |
a08f5791281b215b6b21fecfe7741b44
|
|
| BLAKE2b-256 |
331cf40e39407501a135f780c42e92cb53229f2a870253a8497df1d9e68614ee
|
File details
Details for the file factorama-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.10, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
624e6ffe0b2a5fd0cf952f8fcb25e14c81dacf769d06c3884bfdbfbd3bf42c81
|
|
| MD5 |
586d46745161e022e765d0ddee4781bb
|
|
| BLAKE2b-256 |
c92a63eb8ce9afa496d41149305e8c1399067cefac001ab9bf5ee31d17b130eb
|
File details
Details for the file factorama-1.0.8-cp310-cp310-musllinux_1_1_i686.whl.
File metadata
- Download URL: factorama-1.0.8-cp310-cp310-musllinux_1_1_i686.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.10, musllinux: musl 1.1+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77266b10427bc8ff657813b53ada0bd44e38ee441ea5eb315b3c5c960df8759d
|
|
| MD5 |
d985725a8e06408c408ff27ae17c6168
|
|
| BLAKE2b-256 |
9002bcc9d7b0b77b880c1d211fd2fc76e5f90711f2997c5499852e2781dac379
|
File details
Details for the file factorama-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e609b8a9793d7ba44aeb7c2c70f622811f70fa237c0f119a99d0f2be6fcd63f
|
|
| MD5 |
79300ff5520b8b983a15fe5067d470e0
|
|
| BLAKE2b-256 |
0057c0dfcd08d662e72cb0ac99bf58dfdedc78ded94238d4488e428bc3e92da3
|
File details
Details for the file factorama-1.0.8-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: factorama-1.0.8-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1f2a6235b416c4ab3763a61d860c13985810dcb8ebdc34bc9fd9c2d2582dc9c
|
|
| MD5 |
09d19db608b2e655b24a9b0a2cc6fdde
|
|
| BLAKE2b-256 |
c140acaafc4c6f89729d8de42d3d8854210b038bb8cf81b4a9c0754e77c02f8d
|
File details
Details for the file factorama-1.0.8-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: factorama-1.0.8-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 3.5 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd27fcce4c7fa9c1f3cd59e00bb9d016fa5eca7936e03d7b23d38d298ae6890a
|
|
| MD5 |
2a6a96627cbbda3a69f61b163fdca855
|
|
| BLAKE2b-256 |
dfcd3e9542279d9e5a07c7696f98fb2b21d0982ff923de2d12faf6602d73f5b1
|
File details
Details for the file factorama-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.9, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7b8cd9071f899452d8ac2f3234c87ca5d23c40f8e8818c4fbf010cf3423bb07
|
|
| MD5 |
b2b83ebcf4b7cac54994434054f217b2
|
|
| BLAKE2b-256 |
7cd07296566049afe828be0d6a05bbc6e5cc00d46fdfc8da1db9899431706697
|
File details
Details for the file factorama-1.0.8-cp39-cp39-musllinux_1_1_i686.whl.
File metadata
- Download URL: factorama-1.0.8-cp39-cp39-musllinux_1_1_i686.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.9, musllinux: musl 1.1+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
369604a15385385f9e0a54b12849516d701b6139a5ae3a4afae30ad5631380f9
|
|
| MD5 |
b9c88355e0b4a2059117905eacd40ee9
|
|
| BLAKE2b-256 |
fdeb84fcc84c257663371ce977f84fd01844d52f726385861aefb64f682dcb9b
|
File details
Details for the file factorama-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ca106139f86efad03a7b32fbf3f18cfa749adccce06ed5b2a7c62661fc47327
|
|
| MD5 |
3f321860bdfa00d3c10b5b138ce4814c
|
|
| BLAKE2b-256 |
56c388d9689487c93e15eaa42b3418b0aabebcec4a888483cd67b2b29dc97c86
|
File details
Details for the file factorama-1.0.8-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: factorama-1.0.8-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c03e09d4718ea73c11fab56a5a190a0480f3934c0ec518c58ba133b84f80e8b
|
|
| MD5 |
2edef609ead29ef4dbe2311b4928efdd
|
|
| BLAKE2b-256 |
52a257636ab8a7ab2f06d6943a33d0d2effa380a1e10f64ba19b431b90778eab
|
File details
Details for the file factorama-1.0.8-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: factorama-1.0.8-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecb4933e41fd4a2afb13e6f03f9937f4e16dc50e2f69474b52c409673da77dc1
|
|
| MD5 |
b4897828ffa009e2c1f8d13ced55b2b8
|
|
| BLAKE2b-256 |
d9246b6ba33bb86d7b4207bcea66f5e645cc2b34b3cee37b60e5bc38a73c0959
|
File details
Details for the file factorama-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.8, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d148b9ebd6590809a0fbd56363800aa35bf64640f2050069bf6ada2964c08081
|
|
| MD5 |
a058c7acb0500fd0dd0487470ba6e1d4
|
|
| BLAKE2b-256 |
80fbf144ec77b7d4bca4da37111a686d7c2091d708d74e3af3f2df0c8a689643
|
File details
Details for the file factorama-1.0.8-cp38-cp38-musllinux_1_1_i686.whl.
File metadata
- Download URL: factorama-1.0.8-cp38-cp38-musllinux_1_1_i686.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.8, musllinux: musl 1.1+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
464d752ca38a666debc4a5e498f3c6c5fedf4ee12839c287aa601f4b6e736c3f
|
|
| MD5 |
ff95bd9bb5bbd1ed5120fbf50f32bfd5
|
|
| BLAKE2b-256 |
ea72ee839e80855e4bca9de80be399b925daf74820bc6097ad4b1cf4b0797ada
|
File details
Details for the file factorama-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: factorama-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4276ee2099b45964e747ab8f7e95162726815b6d520503ece597e4a4e9106564
|
|
| MD5 |
3619986b52a305c757a6634714544a12
|
|
| BLAKE2b-256 |
9d6105dca9322c15f1103ecc10d3f3cea8815f1b5182cd6cb81ac45d510e9e2f
|
File details
Details for the file factorama-1.0.8-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: factorama-1.0.8-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e7c6ea90003e6d911b1b3e9755d3f10850194a0da9a27d3766ab909a32e4167
|
|
| MD5 |
c6f86725259e45d0af8ede2f28ddd57a
|
|
| BLAKE2b-256 |
bf26b7f3e5ee352da27f298a96fbcb39ab17eff3f4971febb51fe98ea41aed28
|