Skip to content

pyhelayers HeConfigRequirement.bootstrap_config does not work as documented #27

Description

@tsunami935

I am trying to use bootstrapping with OpenFheCKKS, but am unable to do so.

I have the following lines of code:

requirement = pyhelayers.HeConfigRequirement(
    num_slots = 2 ** 16, # Number of slots per ciphertext
    multiplication_depth = 13, # Allow 13 levels of multiplications
    fractional_part_precision = 24, # Set the precision to 1/2^24.
    integer_part_precision = 5, # Set the largest number to 2^5.
    security_level = 128
)
requirement.bootstrappable = True
bootstrap_config = pyhelayers.BootstrapConfig()
bootstrap_config.target_chain_index = 12

The documentation says that bootstrap_config is a property of HeConfigRequirement. I get the following error when I try to set the bootstrap configuration:

    requirement.bootstrap_config = bootstrap_config
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: (): incompatible function arguments. The following argument types are supported:
    1. (self: pyhelayers._pyhelayers_cppwrappers.HeConfigRequirement, arg0: std::optional<helayers::BootstrapConfig>) -> None

I then tried to call HeConfigRequirement.boostrap_config with the function signature given and get a type error:

TypeError: Unregistered type : std::optional<helayers::BootstrapConfig>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "~/helayers/openfhe_boostrap.py", line 30, in <module>
    requirement.bootstrap_config(bootstrap_config)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Unable to convert function return value to a Python type! The signature was
        (self: pyhelayers._pyhelayers_cppwrappers.HeConfigRequirement) -> std::optional<helayers::BootstrapConfig>

Did you forget to `#include <pybind11/stl.h>`? Or <pybind11/complex.h>,
<pybind11/functional.h>, <pybind11/chrono.h>, etc. Some automatic
conversions are optional and require extra headers to be included
when compiling your pybind11 module.

Is bootstrapping currently supported in pyhelayers? The only demo I noticed with bootstrapping was the Game of Life C++ demo.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions