Skip to content

Commit 4b1de7b

Browse files
authored
Release 0.3.0 (#282)
1 parent bd9bc78 commit 4b1de7b

File tree

4 files changed

+100
-10
lines changed

4 files changed

+100
-10
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ In this example, we morphed the built-in panda `Dataset` into the star `Shape`.
161161
Data Morph is intended to be used as a teaching tool to illustrate the importance of data visualization. Here are some potential classroom activities for instructors:
162162

163163
- **Statistics Focus**: Have students pick one of the [built-in datasets](https://stefaniemolin.com/data-morph/stable/api/data_morph.data.loader.html#data_morph.data.loader.DataLoader), and morph it into all available [target shapes](https://stefaniemolin.com/data-morph/stable/api/data_morph.shapes.factory.html#data_morph.shapes.factory.ShapeFactory). Ask students to comment on which transformations worked best and why.
164-
- **Creativity Focus**: Have students [create a new dataset](https://stefaniemolin.com/data-morph/dev/tutorials/custom-datasets.html) (*e.g.*, your school logo or something that the student designs), and morph that into multiple [target shapes](https://stefaniemolin.com/data-morph/stable/api/data_morph.shapes.factory.html#data_morph.shapes.factory.ShapeFactory). Ask students to comment on which transformations worked best and why.
165-
- **Math and Coding Focus**: Have students [create a custom shape](https://stefaniemolin.com/data-morph/dev/tutorials/shape-creation.html) by inheriting from `LineCollection` or `PointCollection`, and try morphing a couple of the [built-in datasets](https://stefaniemolin.com/data-morph/stable/api/data_morph.data.loader.html#data_morph.data.loader.DataLoader) into that shape. Ask students to explain how they chose to calculate the shape, and comment on which transformations worked best and why.
164+
- **Creativity Focus**: Have students [create a new dataset](https://stefaniemolin.com/data-morph/stable/tutorials/custom-datasets.html) (*e.g.*, your school logo or something that the student designs), and morph that into multiple [target shapes](https://stefaniemolin.com/data-morph/stable/api/data_morph.shapes.factory.html#data_morph.shapes.factory.ShapeFactory). Ask students to comment on which transformations worked best and why.
165+
- **Math and Coding Focus**: Have students [create a custom shape](https://stefaniemolin.com/data-morph/stable/tutorials/shape-creation.html) by inheriting from `LineCollection` or `PointCollection`, and try morphing a couple of the [built-in datasets](https://stefaniemolin.com/data-morph/stable/api/data_morph.data.loader.html#data_morph.data.loader.DataLoader) into that shape. Ask students to explain how they chose to calculate the shape, and comment on which transformations worked best and why.
166166

167167
If you end up using Data Morph in your classroom, I would love to hear about it. Please [send me a message](https://stefaniemolin.com/contact/) detailing how you used it and how it went.
168168

docs/_static/switcher.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
"url": "https://stefaniemolin.com/data-morph/0.1/"
66
},
77
{
8-
"name": "0.2 (stable)",
9-
"version": "stable",
10-
"url": "https://stefaniemolin.com/data-morph/stable/"
8+
"name": "0.2",
9+
"version": "0.2",
10+
"url": "https://stefaniemolin.com/data-morph/0.2/"
1111
},
1212
{
13-
"name": "0.3 (dev)",
14-
"version": "dev",
15-
"url": "https://stefaniemolin.com/data-morph/dev/"
13+
"name": "0.3 (stable)",
14+
"version": "stable",
15+
"url": "https://stefaniemolin.com/data-morph/stable/"
1616
}
1717
]

docs/release-notes.rst

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,96 @@
11
Release Notes
22
=============
33

4+
0.3.0 (February 17, 2025)
5+
-------------------------
6+
7+
What's New
8+
^^^^^^^^^^
9+
10+
CLI
11+
~~~
12+
* Added ``--workers`` option to the CLI for running multiple morphs in parallel.
13+
* Renamed ``--ramp-in`` and ``--ramp-out`` as ``--ease-in`` and ``--ease-out``.
14+
* Added ``--ease`` option to the CLI, which is shorthand for ``--ease-in --ease-out``.
15+
16+
Documentation
17+
~~~~~~~~~~~~~
18+
* Added :doc:`tutorials/index` page to the documentation.
19+
* Added :doc:`tutorials/shape-creation` tutorial.
20+
* Added section to the documentation with ideas of how to use :ref:`classroom ideas`.
21+
* Updated contribution instructions in :doc:`tutorials/custom-datasets` tutorial.
22+
* Included reference to `article on the creation of Data Morph
23+
<https://stefaniemolin.com/articles/data-science/introducing-data-morph/>`_
24+
in the documentation header.
25+
* Included reference to `Data Morph: A Cautionary Tale of Summary Statistics
26+
<https://stefaniemolin.com/data-morph-talk/>`_
27+
(conference talk) in the documentation header.
28+
* Added `contributing guidelines <https://github.com/stefmolin/data-morph/blob/main/CONTRIBUTING.md>`_
29+
and `code of conduct <https://github.com/stefmolin/data-morph/blob/main/CODE_OF_CONDUCT.md>`_.
30+
* Configured canonical URL.
31+
32+
Morphing
33+
~~~~~~~~
34+
* Reworked GIF creation logic to write only one PNG for distinct frames in the
35+
animation and use frequency counts to determine frame duration for speed
36+
improvements and less I/O.
37+
* Added three new datasets: soccer, pi, and gorilla. See the :class:`.DataLoader` for visuals.
38+
* Added four new shapes: :class:`.Club`, :class:`.FigureEight`, :class:`.Spade`,
39+
and :class:`.Spiral`.
40+
* Refactored some shape logic to use more ``numpy`` for speed improvements.
41+
* Added ``center`` property to :class:`.Interval` and :class:`.BoundingBox` to simplify shape calculations.
42+
* Made it possible to unpack the bounds from the :class:`.BoundingBox`.
43+
* Switched from ``tqdm`` to progress bars powered by ``rich``.
44+
* Renamed the ``ramp_in`` and ``ramp_out`` arguments to :meth:`.DataMorpher.morph`
45+
as ``ease_in`` and ``ease_out``.
46+
* Added :meth:`.Shape.get_name` method and :attr:`.Shape.name` attribute to replace
47+
``__str__()`` shape naming logic, which removed some redundancies in
48+
:class:`.ShapeFactory`.
49+
* Refactored the shape code into separate modules per shape.
50+
* Renamed ``get_values()`` as :func:`.get_summary_statistics`.
51+
* Improved variable names in several spots for more readable code.
52+
53+
Plotting
54+
~~~~~~~~
55+
* Added ``show_bounds`` parameter to :meth:`.Dataset.plot` to visualize the automatically-calculated bounds.
56+
* Added ``title`` parameter to :meth:`.Dataset.plot` with default showing the name and number of points.
57+
* Switched from using Matplotlib's ``tight_layout()`` to constrained layout.
58+
* Added :func:`.style_context` context manager for plotting in a Data Morph style.
59+
* Added test suite for :mod:`.plotting.style` module.
60+
* Changed plot layouts for :meth:`.DataLoader.plot` and :meth:`.ShapeFactory.plot_available_shapes`.
61+
* Adjusted grid of datasets in the documentation to use tighter plot bounds.
62+
63+
Tooling
64+
~~~~~~~
65+
* Added new GitHub Actions workflow to run Data Morph on new/altered datasets, shapes,
66+
or core logic.
67+
* Switched to trusted publishing on PyPI via GitHub Actions.
68+
* Added PR and issue templates.
69+
* Added ``pytest-xdist`` to dev dependencies and reworked the test suite to make it faster.
70+
* Switched from ``black`` to ``ruff`` formatting in pre-commit setup and included additional rulesets.
71+
* Added ``pyproject-fmt`` pre-commit hook.
72+
* Refactored shape tests.
73+
74+
Bug Fixes
75+
^^^^^^^^^
76+
* Addressed compatibility issues with ``numpy>=2.0.0``.
77+
* Assorted performance and code quality improvements after running additional
78+
``ruff`` rules.
79+
* Fixed some incorrect return types.
80+
81+
Dependency Updates
82+
^^^^^^^^^^^^^^^^^^
83+
* Replaced ``tqdm`` dependency with ``rich``.
84+
* Replaced ``pytweening`` dependency with functions in :mod:`.plotting.animation`.
85+
* Replaced ``sphinxarg.ext`` Sphinx extension with ``sphinx_argparse_cli``.
86+
* Changed the minimum Sphinx version to 7.2.6.
87+
* Changed the minimum ``pydata-sphinx-theme`` version to 0.15.3.
88+
* Updated pre-commit hooks to the latest versions.
89+
* Factored out ``scipy`` dependency.
90+
* Updated GitHub Actions workflows for Node 16 deprecation.
91+
* Enabled Dependabot on GitHub Actions and switched to use commit hashes for versioning.
92+
* Updated Python testing matrix to include Python 3.9 through 3.13.
93+
494
0.2.0 (September 24, 2023)
595
--------------------------
696

src/data_morph/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Morph an input dataset of 2D points into select shapes, while preserving the summary
55
statistics to a given number of decimal points through simulated annealing. It is intended
66
to be used as a teaching tool to illustrate the importance of data visualization (see
7-
`Data Morph in the classroom <https://stefaniemolin.com/data-morph/dev/index.html#classroom-ideas>`_
7+
`Data Morph in the classroom <https://stefaniemolin.com/data-morph/stable/index.html#classroom-ideas>`_
88
for ideas).
99
1010
Notes
@@ -28,5 +28,5 @@
2828
and `this slide deck <https://stefaniemolin.com/data-morph-talk/#/>`_.
2929
"""
3030

31-
__version__ = '0.3.0.dev0'
31+
__version__ = '0.3.0'
3232
MAIN_DIR = __name__

0 commit comments

Comments
 (0)