Changelog
### 3.0.1
```
------------------
This is a bugfix release to correct a critical error introduced in 3.0.0.
Changed:
- Fix quoting in `Edge.to_string()`. (384)
```
### 3.0.0
```
------------------
Removed:
- Breaking change: support for Python 3.7 dropped totally (371).
It was already dropped, but now it's official.
- Breaking change (but for nobody): Invalid syntax removed (377).
Removed syntax rules that were never implemented in graphviz's own parser.
- Attribute sorting removed (361).
Pydot will preserve the original order of attributes as defined.
Changed:
- Internal storage and lookup of identifiers (names) improved (363).
Pydot now always stores values as they were originally input, and only performs
quoting on output.
Previously, when a graph element was created with a name that contained a space
or otherwise required quoting, the quotes would be added immediately, making it
more difficult to retrieve the element using the `.get_*()` lookup methods.
If a name requiring quotes was later set using `.set_name()`, no quotes would be
added, causing the graph definition to become invalid.
(Thanks to tusharsadhwani for initially pointing out the name-quoting issues.)
- Quoting for attribute values fixed (320).
Attribute values containing comma-separated strings will now be quoted correctly.
Added:
- Keywords can now be used as names or attribute values (363).
Graphviz keywords like "graph" or "subgraph" will now be properly quoted
when used as attribute values or as names, where appropriate.
- Add standard Python logging, using the logger name `pydot`. For
details, see the new section on Troubleshooting in README.md.
```
### 2.0.0
```
------------------
Changed:
- Broken parsing caused by `pyparsing` updates fixed. (296)
With this, the pydot project rises from the dead.
- (Internal) CI revived by ferdnyc. (302)
Modernized and clarified the development process.
Testing is done against multiple Python versions.
- Reorganized package/module structure. (230)
The `pydot` package is installed as a directory now instead of as
two modules:
Before (pydot 0.x, 1.x) After (pydot 2.x)
site-packages/ site-packages/
|-- pydot.py `-- pydot/
`-- dot_parser.py |-- __init__.py
|-- core.py
|-- dot_parser.py
`-- exceptions.py
This is mostly an internal change that should go unnoticed by most
users, especially those upgrading through `pip` or a software
distribution. `import pydot` should work as it did before.
Special cases:
- `import dot_parser` no longer works. Change it to
`from pydot import dot_parser` or see if you can use the wrappers
`pydot.graph_from_dot_data()` or `pydot.graph_from_dot_file()`.
**USER FEEDBACK REQUESTED**
We assume pydot users do not often directly `import dot_parser`.
If you do, please report your reasons, so that we can consider
making it available again before the final release of pydot 2.0:
https://github.com/pydot/pydot/issues/230
- If you use pydot from a (cloned) pydot source tree:
- The pydot source modules moved from the top directory to
subdirectory `src/pydot/`.
- When using a `PYTHONPATH` environment variable: Append `/src`,
e.g. `PYTHONPATH=~/Development/pydot/src`. If you need to switch
between pydot 1.x and pydot 2.x, add both, e.g.
`PYTHONPATH=~/Development/pydot/src:~/Development/pydot`
- When using an editable install (development mode): Re-run
`pip install -e .` from the top directory of the source tree to
update the links.
- For users of the test suite:
- The test suite no longer refuses to run from the top of the
source tree.
- This makes the test suite option `--no-check` redundant. It has
no effect except for printing a deprecation warning. It will be
removed in a future major release (pydot 3 or higher), then
leading to an error.
- Reorganized exception hierarchy: (230)
- New base class `PydotException`, derived from Python's `Exception`.
- Pydot's `Error` exception class is now derived from `PydotException`
instead of from Python's built-in `Exception` directly. Existing
handlers should not be affected.
- Exception class `InvocationException` was removed. It has not been
raised by pydot since 2016 (v1.2.0).
- API (minor): Renamed the first parameter of the parser functions
listed below from `str` to `s`. These functions primarily exist for
internal use and would normally be called using positional arguments,
so few users should be affected. (229)
push_top_graph_stmt(s, loc, toks)
push_graph_stmt(s, loc, toks)
push_subgraph_stmt(s, loc, toks)
push_default_stmt(s, loc, toks)
push_attr_list(s, loc, toks)
push_edge_stmt(s, loc, toks)
Deprecated:
- Test suite option `--no-check`. See "Reorganized package/module
structure" above.
Removed:
- Drop support for Python 2 and Python < 3.7. (229, 302, 296).
**USER FEEDBACK REQUESTED**
~~We are considering if pydot 2.0 should drop support for Python 3.5
and 3.6 as well. If this would affect you, please leave a comment in
https://github.com/pydot/pydot/issues/268.~~
EDIT: This was decided to be done, with a lot of time passed since this entry.
```
### 1.4.2
```
------------------
Added:
- Documentation: Basic usage examples in `README.md`. (141)
Changed:
- More detailed error message in case of Graphviz errors. (239)
- More detailed warning message in case of failure to import the DOT
parser module. (241)
Deprecated:
- A future pydot 2.0.0 will drop support for Python 2, 3.4 and
possibly other Python versions that are end-of-life at that time.
Pydot does not emit any deprecation warnings about this. Further
pydot 1.x.x releases are currently not foreseen, but if there are
any, should still support the mentioned Python versions. (229)
Fixed:
- On Python 2, non-equality comparison (`!=`) between two separate, but
equal `Edge` instances will now correctly return `False`, as it
already did on Python 3. (248)
- Prevent `TypeError` in handling of DOT parser error. (176)
- Prevent `TypeError` in `graph_from_adjacency_matrix()` and
`graph_from_incidence_matrix()`. (98)
- Prevent `TypeError` when creating an edge with a `Subgraph` or
`Cluster` object (as opposed to name string) as an edge point. (89)
- Windows only: Fixed most failures to find Graphviz when a conda or
Anaconda installation exists, but Graphviz was installed manually or
through pip (`.bat`/`.exe` suffix problem). (205)
- Windows only: Fixed failure to run Graphviz related to side-by-side
assembly (SxS) by now propagating the `SYSTEMROOT` environment
variable. (208)
```
Links
- PyPI: https://pypi.org/project/pydot
- Changelog: https://data.safetycli.com/changelogs/pydot/
This PR updates pydot from 1.4.1 to 3.0.1.
Changelog
### 3.0.1 ``` ------------------ This is a bugfix release to correct a critical error introduced in 3.0.0. Changed: - Fix quoting in `Edge.to_string()`. (384) ``` ### 3.0.0 ``` ------------------ Removed: - Breaking change: support for Python 3.7 dropped totally (371). It was already dropped, but now it's official. - Breaking change (but for nobody): Invalid syntax removed (377). Removed syntax rules that were never implemented in graphviz's own parser. - Attribute sorting removed (361). Pydot will preserve the original order of attributes as defined. Changed: - Internal storage and lookup of identifiers (names) improved (363). Pydot now always stores values as they were originally input, and only performs quoting on output. Previously, when a graph element was created with a name that contained a space or otherwise required quoting, the quotes would be added immediately, making it more difficult to retrieve the element using the `.get_*()` lookup methods. If a name requiring quotes was later set using `.set_name()`, no quotes would be added, causing the graph definition to become invalid. (Thanks to tusharsadhwani for initially pointing out the name-quoting issues.) - Quoting for attribute values fixed (320). Attribute values containing comma-separated strings will now be quoted correctly. Added: - Keywords can now be used as names or attribute values (363). Graphviz keywords like "graph" or "subgraph" will now be properly quoted when used as attribute values or as names, where appropriate. - Add standard Python logging, using the logger name `pydot`. For details, see the new section on Troubleshooting in README.md. ``` ### 2.0.0 ``` ------------------ Changed: - Broken parsing caused by `pyparsing` updates fixed. (296) With this, the pydot project rises from the dead. - (Internal) CI revived by ferdnyc. (302) Modernized and clarified the development process. Testing is done against multiple Python versions. - Reorganized package/module structure. (230) The `pydot` package is installed as a directory now instead of as two modules: Before (pydot 0.x, 1.x) After (pydot 2.x) site-packages/ site-packages/ |-- pydot.py `-- pydot/ `-- dot_parser.py |-- __init__.py |-- core.py |-- dot_parser.py `-- exceptions.py This is mostly an internal change that should go unnoticed by most users, especially those upgrading through `pip` or a software distribution. `import pydot` should work as it did before. Special cases: - `import dot_parser` no longer works. Change it to `from pydot import dot_parser` or see if you can use the wrappers `pydot.graph_from_dot_data()` or `pydot.graph_from_dot_file()`. **USER FEEDBACK REQUESTED** We assume pydot users do not often directly `import dot_parser`. If you do, please report your reasons, so that we can consider making it available again before the final release of pydot 2.0: https://github.com/pydot/pydot/issues/230 - If you use pydot from a (cloned) pydot source tree: - The pydot source modules moved from the top directory to subdirectory `src/pydot/`. - When using a `PYTHONPATH` environment variable: Append `/src`, e.g. `PYTHONPATH=~/Development/pydot/src`. If you need to switch between pydot 1.x and pydot 2.x, add both, e.g. `PYTHONPATH=~/Development/pydot/src:~/Development/pydot` - When using an editable install (development mode): Re-run `pip install -e .` from the top directory of the source tree to update the links. - For users of the test suite: - The test suite no longer refuses to run from the top of the source tree. - This makes the test suite option `--no-check` redundant. It has no effect except for printing a deprecation warning. It will be removed in a future major release (pydot 3 or higher), then leading to an error. - Reorganized exception hierarchy: (230) - New base class `PydotException`, derived from Python's `Exception`. - Pydot's `Error` exception class is now derived from `PydotException` instead of from Python's built-in `Exception` directly. Existing handlers should not be affected. - Exception class `InvocationException` was removed. It has not been raised by pydot since 2016 (v1.2.0). - API (minor): Renamed the first parameter of the parser functions listed below from `str` to `s`. These functions primarily exist for internal use and would normally be called using positional arguments, so few users should be affected. (229) push_top_graph_stmt(s, loc, toks) push_graph_stmt(s, loc, toks) push_subgraph_stmt(s, loc, toks) push_default_stmt(s, loc, toks) push_attr_list(s, loc, toks) push_edge_stmt(s, loc, toks) Deprecated: - Test suite option `--no-check`. See "Reorganized package/module structure" above. Removed: - Drop support for Python 2 and Python < 3.7. (229, 302, 296). **USER FEEDBACK REQUESTED** ~~We are considering if pydot 2.0 should drop support for Python 3.5 and 3.6 as well. If this would affect you, please leave a comment in https://github.com/pydot/pydot/issues/268.~~ EDIT: This was decided to be done, with a lot of time passed since this entry. ``` ### 1.4.2 ``` ------------------ Added: - Documentation: Basic usage examples in `README.md`. (141) Changed: - More detailed error message in case of Graphviz errors. (239) - More detailed warning message in case of failure to import the DOT parser module. (241) Deprecated: - A future pydot 2.0.0 will drop support for Python 2, 3.4 and possibly other Python versions that are end-of-life at that time. Pydot does not emit any deprecation warnings about this. Further pydot 1.x.x releases are currently not foreseen, but if there are any, should still support the mentioned Python versions. (229) Fixed: - On Python 2, non-equality comparison (`!=`) between two separate, but equal `Edge` instances will now correctly return `False`, as it already did on Python 3. (248) - Prevent `TypeError` in handling of DOT parser error. (176) - Prevent `TypeError` in `graph_from_adjacency_matrix()` and `graph_from_incidence_matrix()`. (98) - Prevent `TypeError` when creating an edge with a `Subgraph` or `Cluster` object (as opposed to name string) as an edge point. (89) - Windows only: Fixed most failures to find Graphviz when a conda or Anaconda installation exists, but Graphviz was installed manually or through pip (`.bat`/`.exe` suffix problem). (205) - Windows only: Fixed failure to run Graphviz related to side-by-side assembly (SxS) by now propagating the `SYSTEMROOT` environment variable. (208) ```Links
- PyPI: https://pypi.org/project/pydot - Changelog: https://data.safetycli.com/changelogs/pydot/