constrained_numbers

class polyfactory.value_generators.constrained_numbers.NumberGeneratorProtocol[source]

Bases: Protocol[T]

Protocol for custom callables used to generate numerical values

__call__(random: Random, minimum: T | None = None, maximum: T | None = None) T[source]

Signature of the callable.

Parameters:
  • random – An instance of random.

  • minimum – A minimum value.

  • maximum – A maximum value.

Returns:

The generated numeric value.

__init__(*args, **kwargs)
polyfactory.value_generators.constrained_numbers.almost_equal_floats(value_1: float, value_2: float, *, delta: float = 1e-08) bool[source]

Return True if two floats are almost equal

Parameters:
  • value_1 – A float value.

  • value_2 – A float value.

  • delta – A minimal delta.

Returns:

Boolean dictating whether the floats can be considered equal - given python’s problematic comparison of floats.

polyfactory.value_generators.constrained_numbers.is_multiply_of_multiple_of_in_range(minimum: T, maximum: T, multiple_of: T) bool[source]

Determine if at least one multiply of multiple_of lies in the given range.

Parameters:
  • minimum – T: A minimum value.

  • maximum – T: A maximum value.

  • multiple_of – T: A value to use as a base for multiplication.

Returns:

Boolean dictating whether at least one multiply of multiple_of lies in the given range between minimum and maximum.

polyfactory.value_generators.constrained_numbers.passes_pydantic_multiple_validator(value: T, multiple_of: T) bool[source]

Determine whether a given value passes the pydantic multiple_of validation.

Parameters:
  • value – A numeric value.

  • multiple_of – Another numeric value.

Returns:

Boolean dictating whether value is a multiple of value.

polyfactory.value_generators.constrained_numbers.get_increment(t_type: type[T]) T[source]

Get a small increment base to add to constrained values, i.e. lt/gt entries.

Parameters:

t_type – A value of type T.

Returns:

An increment T.

polyfactory.value_generators.constrained_numbers.get_value_or_none(t_type: type[T], lt: T | None = None, le: T | None = None, gt: T | None = None, ge: T | None = None) tuple[Optional[T], Optional[T]][source]

Return an optional value.

Parameters:
  • equal_value – An GE/LE value.

  • constrained – An GT/LT value.

  • increment – increment

Returns:

Optional T.

polyfactory.value_generators.constrained_numbers.get_constrained_number_range(t_type: type[T], random: Random, lt: T | None = None, le: T | None = None, gt: T | None = None, ge: T | None = None, multiple_of: T | None = None) tuple[T | None, T | None][source]

Return the minimum and maximum values given a field_meta’s constraints.

Parameters:
  • t_type – A primitive constructor - int, float or Decimal.

  • random – An instance of Random.

  • lt – Less than value.

  • le – Less than or equal value.

  • gt – Greater than value.

  • ge – Greater than or equal value.

  • multiple_of – Multiple of value.

Returns:

a tuple of optional minimum and maximum values.

polyfactory.value_generators.constrained_numbers.generate_constrained_number(random: Random, minimum: T | None, maximum: T | None, multiple_of: T | None, method: NumberGeneratorProtocol[T]) T[source]

Generate a constrained number, output depends on the passed in callbacks.

Parameters:
  • random – An instance of random.

  • minimum – A minimum value.

  • maximum – A maximum value.

  • multiple_of – A multiple of value.

  • method – A function that generates numbers of type T.

Returns:

A value of type T.

polyfactory.value_generators.constrained_numbers.handle_constrained_int(random: Random, multiple_of: int | None = None, gt: int | None = None, ge: int | None = None, lt: int | None = None, le: int | None = None) int[source]

Handle constrained integers.

Parameters:
  • random – An instance of Random.

  • lt – Less than value.

  • le – Less than or equal value.

  • gt – Greater than value.

  • ge – Greater than or equal value.

  • multiple_of – Multiple of value.

Returns:

An integer.

polyfactory.value_generators.constrained_numbers.handle_constrained_float(random: Random, multiple_of: float | None = None, gt: float | None = None, ge: float | None = None, lt: float | None = None, le: float | None = None) float[source]

Handle constrained floats.

Parameters:
  • random – An instance of Random.

  • lt – Less than value.

  • le – Less than or equal value.

  • gt – Greater than value.

  • ge – Greater than or equal value.

  • multiple_of – Multiple of value.

Returns:

A float.

polyfactory.value_generators.constrained_numbers.validate_max_digits(max_digits: int, minimum: Decimal | None, decimal_places: int | None) None[source]

Validate that max digits is greater than minimum and decimal places.

Parameters:
  • max_digits – The maximal number of digits for the decimal.

  • minimum – Minimal value.

  • decimal_places – Number of decimal places

Returns:

‘None’

polyfactory.value_generators.constrained_numbers.handle_decimal_length(generated_decimal: Decimal, decimal_places: int | None, max_digits: int | None) Decimal[source]

Handle the length of the decimal.

Parameters:
  • generated_decimal – A decimal value.

  • decimal_places – Number of decimal places.

  • max_digits – Maximal number of digits.

polyfactory.value_generators.constrained_numbers.handle_constrained_decimal(random: Random, multiple_of: Decimal | None = None, decimal_places: int | None = None, max_digits: int | None = None, gt: Decimal | None = None, ge: Decimal | None = None, lt: Decimal | None = None, le: Decimal | None = None) Decimal[source]

Handle a constrained decimal.

Parameters:
  • random – An instance of Random.

  • multiple_of – Multiple of value.

  • decimal_places – Number of decimal places.

  • max_digits – Maximal number of digits.

  • lt – Less than value.

  • le – Less than or equal value.

  • gt – Greater than value.

  • ge – Greater than or equal value.

Returns:

A decimal.