Skip to main content

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

factorama-1.0.8-cp312-cp312-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.12Windows x86-64

factorama-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

factorama-1.0.8-cp312-cp312-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ i686

factorama-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

factorama-1.0.8-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

factorama-1.0.8-cp311-cp311-win_amd64.whl (4.1 MB view details)

Uploaded CPython 3.11Windows x86-64

factorama-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

factorama-1.0.8-cp311-cp311-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ i686

factorama-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

factorama-1.0.8-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

factorama-1.0.8-cp310-cp310-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.10Windows x86-64

factorama-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

factorama-1.0.8-cp310-cp310-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

factorama-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

factorama-1.0.8-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

factorama-1.0.8-cp39-cp39-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.9Windows x86-64

factorama-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

factorama-1.0.8-cp39-cp39-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

factorama-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

factorama-1.0.8-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

factorama-1.0.8-cp38-cp38-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.8Windows x86-64

factorama-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

factorama-1.0.8-cp38-cp38-musllinux_1_1_i686.whl (3.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

factorama-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

factorama-1.0.8-cp38-cp38-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

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

Hashes for factorama-1.0.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1cd4310b9df7d5ee2b5199172b63affba4e1073075e235277b4ff6a10fa43c43
MD5 056f02c927782e3f5aaf590d188f076f
BLAKE2b-256 7d3072bda99b71d80af6df32456f3cc7484ca437a3a1e25cd8f0226cc5591a18

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0d615eb52961eb28f0147d57b4c4ce343211fb3e43551aba4a7afb7817a63994
MD5 64bf7302e4d3e291ff892bee94b477a1
BLAKE2b-256 126da6161cc05b51777a413500f2df95e33791055479fe4581754f47dc7bc715

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp312-cp312-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 2602f40389f73f0a4bc192735c14aef972d4ff9bf857f119c348720635a0ec3a
MD5 cb1575b3f792c2d02d40c40f027de99f
BLAKE2b-256 1715b5443758708b2dbbb13cdd619f54621d021794432e0c1243c084791791f3

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 560742d4c43f7959c6765988af0b4f5f9fd041a347d1ea9fe7b3d3be138ed102
MD5 60a047913bb4f214ef92c11ea359def6
BLAKE2b-256 97fdc222a65ea48f0fa1a8c72e2c131ae25f58b7f7270f13f220646073ad6530

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1119b2ce91f4472e61665249e2bf953c5b8bd4c5446059457889a0affe55d16
MD5 c91727df47a143e9babcc8a5d8589910
BLAKE2b-256 0eeeff95e21c94f5439802b530071f41046ae9620e3b34fc4f3a2a496487b7a9

See more details on using hashes here.

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

Hashes for factorama-1.0.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9c66762b765c34911305c7b935deee49abb0b20c435111aa9ac824aec71ad7af
MD5 fb326860b4eb27f025d3b0f85f0ac8eb
BLAKE2b-256 8e368db2c16aafaf9b0378e643a755366e72a644565fccece0b1a16dae42eca8

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ef92d76e0acdf364317dda66837a22430c48338fe6c2df707843eb5907691a4e
MD5 5050ddb5287c3dbeebfa41ab81d608ce
BLAKE2b-256 8082e45c4a9afc51100e64eda4ce170352dde19a02a8a14386d651d7e74dcae3

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 ee183d4bd58aba4988f889de378c6355f4d13468ec4f1b60b5d2040b79fcc3a7
MD5 fcc27d37dc44f6f595d0d12aba5c04b1
BLAKE2b-256 ad569ca59e2ccf232d4315a27345ccbe474338e08f7ba80df215cc5091a2493f

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a422f9a566588a8bdac0d619b5b39277487c3c49dac25e730ec7a977552fe87f
MD5 994986ee13d523284cf28a55e5a9a60f
BLAKE2b-256 161cd0ef5a9fc86098893e40d11a439d9529ef2448d5226b04a8cc82f51f3b13

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fae5bb23a1373cefe91b9f598153b143e0d4d4e669646ca79f3fde91d852aeb
MD5 8dfb606af9cc253ce6e824f4246e200e
BLAKE2b-256 0caaac134b6b8896dd71288f4fee87def82529cb013e8241b6cde371c6d3f95a

See more details on using hashes here.

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

Hashes for factorama-1.0.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 01dbba51dbcf6beba52a338df900bf848ea90b17c5d13ba51d729d3bd3904702
MD5 a08f5791281b215b6b21fecfe7741b44
BLAKE2b-256 331cf40e39407501a135f780c42e92cb53229f2a870253a8497df1d9e68614ee

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 624e6ffe0b2a5fd0cf952f8fcb25e14c81dacf769d06c3884bfdbfbd3bf42c81
MD5 586d46745161e022e765d0ddee4781bb
BLAKE2b-256 c92a63eb8ce9afa496d41149305e8c1399067cefac001ab9bf5ee31d17b130eb

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 77266b10427bc8ff657813b53ada0bd44e38ee441ea5eb315b3c5c960df8759d
MD5 d985725a8e06408c408ff27ae17c6168
BLAKE2b-256 9002bcc9d7b0b77b880c1d211fd2fc76e5f90711f2997c5499852e2781dac379

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8e609b8a9793d7ba44aeb7c2c70f622811f70fa237c0f119a99d0f2be6fcd63f
MD5 79300ff5520b8b983a15fe5067d470e0
BLAKE2b-256 0057c0dfcd08d662e72cb0ac99bf58dfdedc78ded94238d4488e428bc3e92da3

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1f2a6235b416c4ab3763a61d860c13985810dcb8ebdc34bc9fd9c2d2582dc9c
MD5 09d19db608b2e655b24a9b0a2cc6fdde
BLAKE2b-256 c140acaafc4c6f89729d8de42d3d8854210b038bb8cf81b4a9c0754e77c02f8d

See more details on using hashes here.

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

Hashes for factorama-1.0.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 dd27fcce4c7fa9c1f3cd59e00bb9d016fa5eca7936e03d7b23d38d298ae6890a
MD5 2a6a96627cbbda3a69f61b163fdca855
BLAKE2b-256 dfcd3e9542279d9e5a07c7696f98fb2b21d0982ff923de2d12faf6602d73f5b1

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 a7b8cd9071f899452d8ac2f3234c87ca5d23c40f8e8818c4fbf010cf3423bb07
MD5 b2b83ebcf4b7cac54994434054f217b2
BLAKE2b-256 7cd07296566049afe828be0d6a05bbc6e5cc00d46fdfc8da1db9899431706697

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 369604a15385385f9e0a54b12849516d701b6139a5ae3a4afae30ad5631380f9
MD5 b9c88355e0b4a2059117905eacd40ee9
BLAKE2b-256 fdeb84fcc84c257663371ce977f84fd01844d52f726385861aefb64f682dcb9b

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ca106139f86efad03a7b32fbf3f18cfa749adccce06ed5b2a7c62661fc47327
MD5 3f321860bdfa00d3c10b5b138ce4814c
BLAKE2b-256 56c388d9689487c93e15eaa42b3418b0aabebcec4a888483cd67b2b29dc97c86

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8c03e09d4718ea73c11fab56a5a190a0480f3934c0ec518c58ba133b84f80e8b
MD5 2edef609ead29ef4dbe2311b4928efdd
BLAKE2b-256 52a257636ab8a7ab2f06d6943a33d0d2effa380a1e10f64ba19b431b90778eab

See more details on using hashes here.

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

Hashes for factorama-1.0.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ecb4933e41fd4a2afb13e6f03f9937f4e16dc50e2f69474b52c409673da77dc1
MD5 b4897828ffa009e2c1f8d13ced55b2b8
BLAKE2b-256 d9246b6ba33bb86d7b4207bcea66f5e645cc2b34b3cee37b60e5bc38a73c0959

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d148b9ebd6590809a0fbd56363800aa35bf64640f2050069bf6ada2964c08081
MD5 a058c7acb0500fd0dd0487470ba6e1d4
BLAKE2b-256 80fbf144ec77b7d4bca4da37111a686d7c2091d708d74e3af3f2df0c8a689643

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 464d752ca38a666debc4a5e498f3c6c5fedf4ee12839c287aa601f4b6e736c3f
MD5 ff95bd9bb5bbd1ed5120fbf50f32bfd5
BLAKE2b-256 ea72ee839e80855e4bca9de80be399b925daf74820bc6097ad4b1cf4b0797ada

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4276ee2099b45964e747ab8f7e95162726815b6d520503ece597e4a4e9106564
MD5 3619986b52a305c757a6634714544a12
BLAKE2b-256 9d6105dca9322c15f1103ecc10d3f3cea8815f1b5182cd6cb81ac45d510e9e2f

See more details on using hashes here.

File details

Details for the file factorama-1.0.8-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for factorama-1.0.8-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e7c6ea90003e6d911b1b3e9755d3f10850194a0da9a27d3766ab909a32e4167
MD5 c6f86725259e45d0af8ede2f28ddd57a
BLAKE2b-256 bf26b7f3e5ee352da27f298a96fbcb39ab17eff3f4971febb51fe98ea41aed28

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