pythonarcade / arcade

Easy to use Python library for creating 2D arcade games.
http://arcade.academy
Other
1.71k stars 324 forks source link

Complete 3.0 release notes #2326

Open einarf opened 3 months ago

einarf commented 3 months ago

Ideally we should have:

This is definitely not doable fir 3.0.x considering the length of the development but we should follow this strictly from 3.0.0 and up.

DigiDuncan commented 3 months ago

I'd love to help with this; I think having surface-level, human readable release notes for 3.0 is strictly needed. A migration guide is also up there, for me.

einarf commented 3 months ago

We just have to start writing something. More info can be added over time.

pushfoo commented 3 months ago

TL;DR: I'll start getting some useful per-module data together for this.

There's also a user from the Python Discord I'd like to credit (https://github.com/DarkLight1337) for advising on type system issues on lower Python versions.

As to the details, Griffe has some inspection tooling which can help detect API breakage. I'll give it a try tonight.

In general, we could split this up by module. The top items of concern I can think of now are:

pushfoo commented 3 months ago

Using griffe check arcade -a 2.6.7, I see the following major categories of change:

DigiDuncan commented 3 months ago

Don't forget about all the changes to draw commands, namely the namespace change, and the addition if draw_rect_*.

pushfoo commented 3 months ago

Don't forget all the changes to draw commands

That's the stuff in the comment above this one:

arcade.draw split

I didn't make it very clear, so I'll edit that now. Ty for pointing that out.

pawamoy commented 3 months ago

(stalking GitHub issues)

I'd love to know if you identified breaking changes that were not detected by Griffe! Let me know here or in new issues in Griffe's repo, as you prefer ^^ And thanks for giving it a try!

eruvanos commented 3 months ago

Where to put it?

* GUI

  * Removed :py:class:`~arcade.gui.widgets.UIWrapper` this is now general available in :py:class:`~arcade.gui.widgets.UILayout`
  * Removed :py:class:`~arcade.gui.widgets.UIBorder` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget`
  * Removed :py:class:`~arcade.gui.widgets.UIPadding` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget`
  * Removed :py:class:`~arcade.gui.widgets.UITexturePane` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget`
  * Removed :py:class:`~arcade.gui.widgets.UIAnchorWidget` replaced by :py:class:`~arcade.gui.widgets.UIAnchorLayout`
  * Changes to :py:class:`~arcade.gui.widgets.UIWidget`

    * Supports padding, border and background (color and texture)
    * Visibility: visible=False will prevent rendering of the widget. It will also not receive any UI events
    * Dropped :py:meth:`~arcade.gui.widget.UIWidget.with_space_around()`
    * ``UIWidget.with_`` methods do not wrap the widget anymore, they only change the attributes
    * Support nine patch information to draw background texture
    * Removed some attributes from public interface, use ``UIWidget.with_`` methods
        * ``UIWidget.border_width``
        * ``UIWidget.border_color``
        * ``UIWidget.bg_color``
        * ``UIWidget.bg_texture``
        * ``UIWidget.padding_top``
        * ``UIWidget.padding_right``
        * ``UIWidget.padding_bottom``
        * ``UIWidget.padding_left``
    * Now iterable which provides direct access to children
    * Further performance improvements

  * New widgets:
    * :py:class:`~arcade.gui.widgets.dropdown.UIDropdown`
    * :py:class:`~arcade.gui.widgets.image.UIImage`
    * :py:class:`~arcade.gui.widgets.slider.UISlider`
    * :py:class:`~arcade.gui.widgets.constructs.UIButtonRow` (`PR1580 <https://github.com/pythonarcade/arcade/pull/1580>`_ and `PR1253 <https://github.com/pythonarcade/arcade/pull/1253>`_)

  * Arcade :py:class:`~arcade.gui.property.Property`:

    * Properties are observable attributes (supported: primitive, list and dict).
      Listener can be bound with :py:meth:`~arcade.gui.property.bind`

  * All :py:class:`~arcade.gui.UILayout`s now support ``size_hint``, ``size_hint_min``, ``size_hint_max``.

    * :py:class:`~arcade.gui.UIBoxLayout` - horizontal and vertical layout
    * :py:class:`~arcade.gui.UIAnchorLayout` - layout with anchor points
    * :py:class:`~arcade.gui.UIGridLayout` (`PR1478 <https://github.com/pythonarcade/arcade/pull/1478>`_) - grid layout
einarf commented 3 months ago

@eruvanos You can start a new CHANGELOG.md in the repo root. Then we merge it with doc/_archive/release_notes.rst over the next days.

einarf commented 3 months ago

The old update notes was moved from the docs into CHANGELOG.md in the root of the repository https://github.com/pythonarcade/arcade/pull/2332

eruvanos commented 3 months ago

Ok, I will add my changes to it (in md format)

einarf commented 3 months ago

~We also need to make sure the "thank you" section includes most or all contributors.~

EDIT: Done

DragonMoffon commented 1 month ago

Done in changelog-v3 branch

Okay so looking at CHANGELOG.md its still deficent in a few places. Putting them here, but I'll likely update it soon.

in the contrib list update my name to DragonMoffon since that easier to find in the discord and on github.

Maybe we could also add a little section leading people to different members for specific help with different features (me with camera, eurvanos for gui, etc), but I think that maybe we shouldn't let people ping specific members on the discord if they don't have the contrib role. I personally find it quite distracting/stressful to have people trying to directly get my attention given we are all volunteers and are doing this as a side project. (I'm guilty of this myself sorry einarf)

I'm sure there is more I am missing, but this is all I could think of in 30 mins

View and View should be changed to Window and View

BREAKING CHANGES

Window and View

Camera

Misc

Documentation

DragonMoffon commented 1 month ago

More I could think of

Misc

Breaking Changes

DragonMoffon commented 1 month ago

SUPER IMPORTANT

pushfoo commented 1 month ago

TL;DR: End users only need 3.9 but Sphinx makes me think optional dependencies may be good.

Sphinx autobuild:

I can check what needs which Python version later. If the dependencies play out nicely, maybe we can make it optional and add a try / catch with a helpful message in make.py?