code: def encrypt(self, value, precision=None, r_value=None):
          
  
          if isinstance(value, EncodedNumber):
              encoding = value
          else:
              encoding = EncodedNumber.encode(self, value, precision)
  
          return self.encrypt_encoded(encoding, r_value)
docs: Encode and Paillier encrypt a real number *value*.
  
          Args:
            value: an int or float to be encrypted.
              If int, it must satisfy abs(*value*) < :attr:`n`/3.
              If float, it must satisfy abs(*value* / *precision*) <<
              :attr:`n`/3
              (i.e. if a float is near the limit then detectable
              overflow may still occur)
            precision (float): Passed to :meth:`EncodedNumber.encode`.
              If *value* is a float then *precision* is the maximum
              **absolute** error allowed when encoding *value*. Defaults
              to encoding *value* exactly.
            r_value (int): obfuscator for the ciphertext; by default (i.e.
              if *r_value* is None), a random value is used.
  
          Returns:
            EncryptedNumber: An encryption of *value*.
  
          Raises:
            ValueError: if *value* is out of range or *precision* is so
              high that *value* is rounded to zero.