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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions