Pytooling

Latest version: v6.1.0

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

Scan your dependencies

Page 1 of 9

6.1.0

**Release created on: 09.04.2024 - 22:57:14**

New Features
*None*

Changes
* Removed questionable feature of method overloads as a clear semantic definition is currently unclear.
* Split `SemanticVersion` constructor into:
1. py
def __init__(self, major: int, minor: int, patch: int = 0, build: int = 0, flags: Flags = Flags.Clean) -> None`:

2. py
classmethod
def Parse(cls, versionString : str) -> "SemanticVersion":


Bug Fixes

* Fixed search for methods with attributes in multiple inheritance scenarios.

6.0.1

**Release created on: 16.01.2024 - 23:16:27**

New Features
*None*

Changes
*None*

Bug Fixes
* Implemented bootstrap feature in all modules.
See 108.

6.0.0

**Release created on: 14.01.2024 - 13:48:30**

New Features
* Integrated package `pyAttributes` v2.5.9 as `pyTooling.Attributes`.
* Replaced `AttributeHelperMixin` mixin-class by meta-class features provided by `ExtendedType`.
* Completely reworked `pyTooling.Attributes.ArgParse`.
* Improvements to `Attribute` class:
* πŸ”₯πŸ”₯πŸ”₯
* Improvements to `ExtendedType` meta-class:
* πŸ”₯πŸ”₯πŸ”₯
* Reworked `...ArgParse`
* πŸ”₯πŸ”₯πŸ”₯
* Integrated namespace package `pyTooling.CLIAbstraction` v0.4.1 into this package to minimize maintenance efforts.
* * Implemented `firstElement` and `lastElement`.
* Implemented `firstItem` and `lastItem`.
* Added `bind` function to bind normal functions as methods.
* Added *Cygwin* to `Platform`.
* Added issue tracker URL support to **TerminalUI**.

Changes
* Bumped dependencies.
* Removed Python 3.7 code and workarounds.
* Adjustments for Python 3.12
* πŸ”₯Renamed `......` to `TerminalApplication`.
* Renamed `firstItem` to `firstPair`.
* Renamed `SemVersion` to `SemanticVersion` and `CalVersion` to ``.
* Applied `readonly` decorator for read-only properties instead of `property`.
* Improved exception printing and exception messages.
* Improved type hints.
* Added return type hint for `__init__()` methods.
* Added hints for `*args` and `**kwargs`.

Bug Fixes
* tbd

Documentation
* Switched from BuildTheDocs theme to ReadTheDocs theme
* Manual CSS overrides extracted from BuildTheDocs modifications
* Extra adjustments for sphinx{design}.
* Removed `sphinx_inline_tabs`.
* Removed `sphinx_fontawesome`
* Added tabs and grids via sphinx{design}.
* Display description side-by-side with example code.
* Use tabs to switch between Linux, Windows, ... or JSON, YAML, XML, ...
* Widened design to support up to 1600px.
* Integrated documentation of `pyAttributes`.
* Integrated documentation of `pyTooling.CLIAbstraction`.
* Added `News` chapter.
* Improved doc-strings.
* Fixed external links dictionary `extlinks`.

Test Cases
* Reworked tests for Attributes (`pyTooling.Attributes`).
* Reworked tests for ArgParse (`pyTooling.Attributes.ArgParse`).
* Added packaging tests.
* Added tests for `ExitOnPreviousErrors` and `ExitOnPreviousWarnings`.
* More unit tests for **TerminalUI** classes.

Others
* Updated copyright note
* Tested comparability to Python 3.12
* Using new code coverage features in GitHub Action pipeline.
* Updated package keywords after merging *CLIAbstraction* and *pyAttributes* into `pyTooling`.
* Added JSON and XML sections in `pyproject.toml` file.
* Added no cover to certain exceptions in platforms.
* Removed redundant parenthesis from code.

Related Issues
* Obsoleted 48.

5.0.0

**Release created on: 02.07.2023 - 18:23:02**

New Features

* New `ExtendedType` features:
* Added support for mixin-classes and delayed creation of slots. (skoehler)
* Added automatic initializers for annotated fields (previously causing an exception due to slots). (skoehler)
* Added automatic initializers for annotated class fields (previously causing an exception due to slots). (skoehler)
* Added new helper methods in `ExtendedType`:
* `_computeSlots`,
* `_aggregateMixinSlots`,
* `_iterateBaseClasses`, and
* `_iterateBaseClassPaths`.
* Added new decorators:
* `slotted`
* `mixin`
* `singleton`
* `readonly`, and
* `notimplemented`.
* Added JSON support for `pyTooling.Configuration`.
* New `Platform` features:
* Added `PythonVersion` to `Platform` to distinguish Python versions.
* Added `PythonImplementation` to `Platform` to distinguish CPython and PyPy.
* Added dummy implementations of `__notes__` and `add_note()` to exception base classes and derived classes to workaround that missing feature for older Python versions (<3.11).
* New exceptions in `pyTooling.MetaClasses`:
* `ExtendedTypeError`
* `BaseClassWithoutSlotsError`
* `BaseClassWithNonEmptySlotsError`
* `BaseClassIsNotAMixinError`
* `DuplicateFieldInSlotsError`.
* New graph features:
* `GetVertexByID`
* `GetVertexByValue`
* New vertex operations:
* `IterateAllOutboundPathsAsVertexList`
* `Delete` (itself)
* `DeleteEdgeTo`, `DeleteEdgeFrom`, `DeleteLinkTo`, `DeleteLinkFrom`.
* New edge operations:
* `Delete` (itself)
* New link operations:
* `Delete` (itself)
* `pyToolong.StateMachine` package (alpha version).

Changes

* Bumped dependencies.
* `ExtendedType`:
* Renamed `useSlots` to `slots`.
* Added support for multiple inheritance. (skoehler)
* Added support for mixins (deferred slots). (skoehler)
* Enhanced error handling in `mergedicts` and `zipdicts`.
* Improved performance of of `mergedicts` by 10x.
* Moved exceptions `AbstractClassError` and `MustOverrideClassError` from `pyTooling.Exceptions` to `pyTooling.MetaClasses`
* Moved module `pyTooling.Common.Platform` to `pyTooling.Platform`.
* Moved nested class `pyTooling.Common.Platform.Platform.Platforms` to `pyTooling.Platform`.
* Renamed `ObjectWithSlots` to `SlottedObject`.
* Renamed `Semversion` to `SemanticVersion` and `CalVersion` to `CalendarVersion`.
* Marked `overload` marked function overloads (signature variants) as `pragma: no cover`.
* Fixed `ClassVar`s in `pyTooling.Configuration`.

Bug Fixes

* Reworked `ExtendedType` when used with slots in multiple inheritance scenarios. (skoehler)
* Reworked internal inheritance graphs to fulfill the needed of ExtendedType using slots and the *mixin* feature.
* Fixed `pyTooling.Configuration` and `pyTooling.Configuration.YAML`.
* Fixed `pyTooling.GraphML`.
* Fixed `pyTooling.TerminalUI`.
* Lots of documentation and doc-string updates.
* Fixes to the ReST syntax especially to `.. todo::`.
* Fixed some method modifiers in `ExtendedType`.

Documentation

* Updated dependencies:
* Added tabs to denote Bash commands for Linux vs. PowerShell commands for Windows.
* Added dependency lists for performance testing and benchmarking.
* Documented `firstKey`, `firstValue`, `firstItem`.
* Documented `License`.
* New glossary items.
* Updated installation instructions.
* Introduced new tabs feature to switch code variants.
* Added local packaging and installation instructions.
* Documented enumerations in `pyTooling.Graph`.
* Documented abstract data model for configurations.
* Updated existing documentation pages.
* Added documentation for JSON.
* Listed `StateMachine` in documentation (alpha).


Test Cases

* Added more benchmarks for:
* `mergedicts`
* `zipdicts`
* Object creation with and without modified `__call__` in meta-class.
* New unit tests:
* Dictionary functions: `firstKey`, `firstValue`, `firstItem`, `zipdicts` and `mergedicts`.
* `sizeof`
* `pyTooling.Configuration.JSON`
* Added lots of new testcases for:
* `ExtendedType` especially for using slots and mixins in linear and multiple inheritance usecases.
* `export`
* `readonly`
* Graph
* `GetVertexByID`
* `GetVertexByValue`
* Vertex:
* `IterateAllOutboundPathsAsVertexList`

Subject to Changes

* ~~Added `PythonVersion` to `Platform`.~~
~~&rArr; this field should be using `SemVersion` instead of a custom version class.~~
Already address in this version.
* ~~As a workaround `__call__` of `ExtendedType` needed to be patched.~~
~~&rArr; It's envisioned to modify the algorithm how `__new__` is modified and swapped, so only classes with modified `__new__` have a performance hit, but not all object creations using meta-class `ExtendedType`.~~
Already address in this version.

Known issues

* A mixin-class can be instantiated. A follow up version will mark such a class as abstract.
* Some documentation sections needs an update/review due to latest changes.
* Missing documentation for `pyTooling.TerminalUI`.
* CPython implementation has a bug:
python/cpython105888
The current workaround has a huge performance impact on object creation.

-------------
Closes 42.

4.0.1

**Release created on: 26.03.2023 - 21:03:28**

β„Ή Bumped version to v4.0.1 to republish the package to PyPI.

New Features

* Graphs are now supporting subgraphs and exporting subgraphs to GraphML.
* New `SubGraph` class.
* New `Link` class.
* New `View` class.
* Added `Vertex.Link***Vertex` methods to link vertices from disjunkt subgraphs.
* Added `Vertex.HasLink***Vertex` methods check if two vertices from disjunkt subgraphs are connected.
* Added `Vertex.Iterate***boundLinks` to iterate links.
* Added `Graph.IterateLinks` to iterate all links.
* Added `Graph.ReverseLinks`, `Graph.RemoveLinks`.
* Applied generic types when deriving from subclasses.
* Added `in` operator for key-value

Changes

* ⚠ Renamed `Link***Vertex` methods to `Edge***Vertex` methods.
* ⚠ Renamed `HasLink***Vertex` methods to `HasEdge***Vertex` methods.
* ⚠ Added more generic type variables to Graph and other graph classes.
* Commented unimplemented methods:
* `PathExistsTo`
* `MaximumFlowTo`
* `IterateBFS`
* `IterateDFS`
* `IterateTopologically`
* `CheckForNegativeCycles`
* `IsStronglyConnected`
* `GetStronglyConnectedComponents`
* `TravelingSalesmanProblem`
* `GetBridges`
* `GetArticulationPoints`
* `MinimumSpanningTree`

Bug Fixes

* Fixed `Component` class and references to components.

Unit Tests

* Adjusted testcases for Graph changes.
* Added more testcases for edges and links in graphs.

Performance Tests

* Added comparison for `treelib`.

Related PRs

* 88

4.0.0

**Release created on: 26.03.2023 - 13:26:36**

New Features

* Graphs are now supporting subgraphs and exporting subgraphs to GraphML.
* New `SubGraph` class.
* New `Link` class.
* New `View` class.
* Added `Vertex.Link***Vertex` methods to link vertices from disjunctive subgraphs.
* Added `Vertex.HasLink***Vertex` methods check if two vertices from disjunctive subgraphs are connected.
* Added `Vertex.Iterate***boundLinks` to iterate links.
* Added `Graph.IterateLinks` to iterate all links.
* Added `Graph.ReverseLinks`, `Graph.RemoveLinks`.
* Applied generic types when deriving from subclasses.
* Added `in` operator for key-value

Changes

* ⚠ Renamed `Link***Vertex` methods to `Edge***Vertex` methods.
* ⚠ Renamed `HasLink***Vertex` methods to `HasEdge***Vertex` methods.
* ⚠ Added more generic type variables to Graph and other graph classes.
* Commented unimplemented methods:
* `PathExistsTo`
* `MaximumFlowTo`
* `IterateBFS`
* `IterateDFS`
* `IterateTopologically`
* `CheckForNegativeCycles`
* `IsStronglyConnected`
* `GetStronglyConnectedComponents`
* `TravelingSalesmanProblem`
* `GetBridges`
* `GetArticulationPoints`
* `MinimumSpanningTree`

Bug Fixes

* Fixed `Component` class and references to components.

Unit Tests

* Adjusted testcases for Graph changes.
* Added more testcases for edges and links in graphs.

Performance Tests

* Added comparison for `treelib`.

Related PRs

* 88

Page 1 of 9

Β© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.