Releases: pyTooling/pyTooling
Releases · pyTooling/pyTooling
v6.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:-
def __init__(self, major: int, minor: int, patch: int = 0, build: int = 0, flags: Flags = Flags.Clean) -> None`:
-
@classmethod def Parse(cls, versionString : str) -> "SemanticVersion":
-
- Split
Bug Fixes
- Fixed search for methods with attributes in multiple inheritance scenarios.
v6.0.1
v6.0.0
Release created on: 14.01.2024 - 13:48:30
New Features
- Integrated package
pyAttributes
v2.5.9 aspyTooling.Attributes
.- Replaced
AttributeHelperMixin
mixin-class by meta-class features provided byExtendedType
. - Completely reworked
pyTooling.Attributes.ArgParse
. - Improvements to
Attribute
class:- 🔥🔥🔥
- Improvements to
ExtendedType
meta-class:- 🔥🔥🔥
- Reworked
...ArgParse
- 🔥🔥🔥
- Replaced
- Integrated namespace package
pyTooling.CLIAbstraction
v0.4.1 into this package to minimize maintenance efforts. -
- Implemented
firstElement
andlastElement
.
- Implemented
- Implemented
firstItem
andlastItem
. - 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
......
toTerminalApplication
. - Renamed
firstItem
tofirstPair
. - Renamed
SemVersion
toSemanticVersion
andCalVersion
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
.
- Added return type hint for
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
andExitOnPreviousWarnings
. - 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.
v5.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
toPlatform
to distinguish Python versions. - Added
PythonImplementation
toPlatform
to distinguish CPython and PyPy.
- Added
- Added dummy implementations of
__notes__
andadd_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
:- Enhanced error handling in
mergedicts
andzipdicts
. - Improved performance of of
mergedicts
by 10x. - Moved exceptions
AbstractClassError
andMustOverrideClassError
frompyTooling.Exceptions
topyTooling.MetaClasses
- Moved module
pyTooling.Common.Platform
topyTooling.Platform
.- Moved nested class
pyTooling.Common.Platform.Platform.Platforms
topyTooling.Platform
.
- Moved nested class
- Renamed
ObjectWithSlots
toSlottedObject
. - Renamed
Semversion
toSemanticVersion
andCalVersion
toCalendarVersion
. - Marked
@overload
marked function overloads (signature variants) aspragma: no cover
. - Fixed
ClassVar
s inpyTooling.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
andpyTooling.Configuration.YAML
. - Fixed
pyTooling.GraphML
. - Fixed
pyTooling.TerminalUI
.
- Fixed
- 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
andmergedicts
. sizeof
pyTooling.Configuration.JSON
- Dictionary functions:
- 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
AddedPythonVersion
toPlatform
.
⇒ this field should be usingSemVersion
instead of a custom version class.
Already address in this version.As a workaround__call__
ofExtendedType
needed to be patched.
⇒ 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-classExtendedType
.
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
.
- Missing documentation for
- CPython implementation has a bug:
python/cpython#105888
The current workaround has a huge performance impact on object creation.
Closes #42.
v4.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.
- New
- 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 toEdge***Vertex
methods. - ⚠ Renamed
HasLink***Vertex
methods toHasEdge***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
v4.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.
- New
- 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 toEdge***Vertex
methods. - ⚠ Renamed
HasLink***Vertex
methods toHasEdge***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
v3.0.0
Release created on: 10.03.2023 - 21:42:01
New Features
- Integrated
pyTooling.TerminalUI
intopyTooling
.
⚠ This is a breaking change because there is a directory overlap between packages.
Changes
- Bumped dependencies.
Bug Fixes
None
v2.13.0
Release created on: 10.03.2023 - 10:17:58
New Features
- Support for FreeBSD in
Platform
. - A data model for GraphML (graph, node, edge, key, data and subgraph).
- A conversion from pyTooling's graph data structure to GraphML XML files.
- A conversion from pyTooling's tree data structure to GraphML XML files.
Changes
- Bumped dependencies.
- Added missing dependencies in documentation.
- Package
pyTooling
usingbuild
. - Graph: Documented
__delitem__
forGraph
,Component
,Node
,Edge
. - Graph: Added
__contains__
forGraph
,Component
,Node
,Edge
.
Bug Fixes
- Fixed copy&paste mistake for
linux-aarch64
inPlatform
. - Fixed type hints on
Edge
.
Related Issues
v2.12.3
Release created on: 18.02.2023 - 20:08:16
Bug Fixes
ExtendedType
can now handle abstract methods in multiple inheritance scenarios.
v2.12.2
Release created on: 13.02.2023 - 22:45:02
Bug Fixes
- Fixed error message for derived abstract classes.