Python-intervals

Latest version: v1.10.0.post1

Safety actively analyzes 613750 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

2.0.0

Added
- `i.empty` to check for interval emptiness.
- `i.atomic` to check for interval atomicity.
- An `adjacent` method to test whether two intervals are adjacent.
- `i.__getitem__` supports slices.
- Infinities define a hash value.
- Static method `Interval.from_atomic(left, lower, upper, right)` to create an interval composed of a single atomic interval (replaces `AtomicInterval(left, lower, upper, right)`).

Changed
- (breaking) `python-intervals` has been renamed `portion`.
- (breaking) Many (optional) parameters are converted to keyword-only arguments:
* for `from_string` and `to_string`: `bound`, `disj`, `sep`, `left_open`, `left_closed`, `right_open`, `right_closed`, `pinf` and `ninf`;
* for `from_data` and `to_data`: `pinf` and `ninf`;
* for `iterate`: `base` and `reverse`;
* for `Interval.replace`: `ignore_inf`.
- (breaking) `incr` is replaced by `step` in `iterate`.
- (breaking) For consistency with `range`, the `step` parameter in `iterate` is always added even if `reverse=True`.
- (breaking) `i.enclosure` is a property and no longer a method.
- (breaking) Indexing or iterating on the atomic intervals of an `Interval` returns `Interval` instances instead of `AtomicInterval` ones.
- (breaking) An interval is hashable if and only if its bounds are hashable.
- Huge performance increase for creation, union, intersection, complement and difference of intervals ([21](https://github.com/AlexandreDecan/portion/issues/21)).
- `CLOSED` and `OPEN` are members of the `Bound` enumeration.
- Large refactoring to encapsulate `AtomicInterval` and all its operations in `Interval`.
- Restructure package in modules instead of a flat file.
- Reorganise tests in modules and classes instead of a flat file.
- Reorganise changelog with explicit categories.

Removed
- (breaking) Drop support for Python 2.7 and 3.4 since they reached end-of-life.
- (breaking) `AtomicInterval` is a `namedtuple` and is no longer part of the public APP.
- (breaking) Remove `i.to_atomic()` (use `i.enclosure` instead).
- (breaking) Remove `i.is_empty()` (use `i.empty` instead).
- (breaking) Remove `i.is_atomic()` (use `i.atomic` instead).
- (breaking) `CLOSED` and `OPEN` do no longer define an implicit Boolean value. Use `~` instead of `not` to invert a bound.
- (breaking) Remove deprecated `permissive` in `i.overlaps`.
- (breaking) Remove `adjacent` in `i.overlaps`, use `i.adjacent` method instead.

Fixed
- Fix an issue where an interval can be composed of duplicated empty intervals ([19](https://github.com/AlexandreDecan/portion/issues/19)).
- Fix performance issues when intervals composed of hundreds of atomic intervals are complemented ([20](https://github.com/AlexandreDecan/portion/issues/21))

1.10.0post1

1.10.0

IntervalDict` has a `.combine` method to merge its keys and values with another `IntervalDict`.

1.9.0

- Discrete iteration on the values of an interval with `iterate`.
- Map intervals to data with the dict-like `IntervalDict` structure.
- Faster comparisons between arbitrary values and intervals.
- Deprecate `permissive` in `.overlaps` in favour of `adjacent`.
- Fix `.union` when intervals share a bound, one inclusive and one exclusive ([12](https://github.com/AlexandreDecan/python-intervals/issues/12)).
- Fix `.overlaps` when intervals share a lower bound, and one interval is contained within the other one ([13](https://github.com/AlexandreDecan/python-intervals/issues/13)).

1.8.0

- Intervals have a `left`, `lower`, `upper`, and `right` attribute that refer to its enclosure.
- Intervals have a `replace` method to create new intervals based on the current one. This method accepts both values and functions.
- Intervals have an `apply` method to apply a function on the underlying atomic intervals.
- Intervals can be compared with single values as well.
- `I.empty()` returns the same instance to save memory.
- Infinities are singleton objects.
- Set `len(I.empty()) = 1` and `I.empty()[0] == I.empty().to_atomic()` for consistency.

1.7.0

Import from and export to Python built-in data types (a list of 4-uples) with `from_data` and `to_data` ([6](https://github.com/AlexandreDecan/python-intervals/issues/6)).

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.