Pygame

Latest version: v2.6.0

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

Scan your dependencies

Page 8 of 11

2.0.0.dev8

🌺🌻🌹🥀🌷🌼🌸💐💮🌺🌻🌹🥀🌷🌼🌸💐💮🌺🌻

One year ago today on the 5th of May 2019 we released the first development release of the pygame 2 series. So today is our anniversary of sorts. 🎉


Type hints for better editor support.

Type hints are now installed thanks to MightyJosip https://github.com/pygame/pygame/pull/1685 This lets static type checkers do TAB completion and check your function inputs and outputs. Giving an altogether nicer experience when programming with pygame.

Color arguments are fuzzy wuzzy human friendlier

Thanks to new pygame team member nthykier in https://github.com/pygame/pygame/pull/1676
there is now support for writing colors in an easier way.

python

surf.fill('black') surf.fill(pygame.Color('black'))
surf.fill('FFEECCF0') surf.fill(pygame.Color('FFEECCF0'))


Drawing improvements, and rounded corners.

Drawing improvements including more correct AND faster circle drawing, rounded rects. Thanks to charlesej MightyJosip and robertpfeiffer. https://github.com/pygame/pygame/pull/1503

python

Draw a rectangle with rounded corners
pygame.draw.rect(screen, GREEN, [115, 210, 70, 40], 10, border_radius=15)
pygame.draw.rect(screen, RED, [135, 260, 50, 30], 0, border_radius=10, border_top_left_radius=0,
border_bottom_right_radius=15)

Draw only one circle quadrant
pygame.draw.circle(screen, BLUE, [250, 250], 40, 0, draw_top_right=True)
pygame.draw.circle(screen, RED, [250, 250], 40, 30, draw_top_left=True)
pygame.draw.circle(screen, GREEN, [250, 250], 40, 20, draw_bottom_left=True)
pygame.draw.circle(screen, BLACK, [250, 250], 40, 10, draw_bottom_right=True)



- Drawing an empty string now returns a zero sized surface and rect, before it was 1 pixel wide and the height of the font. https://github.com/pygame/pygame/pull/1488 Thanks to the MightyJosip
- Additionally, zero sized rects do not collide with anything anymore - thanks to thiagojobson and charlesej https://github.com/pygame/pygame/pull/1226
- [Fix drawing ellipses with width values > 1](https://github.com/pygame/pygame/pull/1577) charlesej
- [draw.c code refactoring and cleanup](https://github.com/pygame/pygame/pull/1552) MightyJosip
- [Declare UTF-8 encoding in draw_py](https://github.com/pygame/pygame/pull/1542) stefanor


pygame recipe added to Python-For-Android

Thanks to AndreMiras, robertpfeiffer and others there is a pygame recipe in python-for-android https://github.com/kivy/python-for-android/pull/2164 which is a python for android distribution.


Documentation and tutorials

Lots of little fixes, and even a whole new tutorial were made in this release. When someone takes the time to fix a little problem in the documentation that can help many people in the future from getting lost themselves.

- A new tutorial in Korean (and english) https://github.com/pygame/pygame/pull/1512 from first time contributor rumia0601
- Thanks to first time contributor glennmackintosh for fixing the docs for KMOD_MODE https://github.com/pygame/pygame/pull/1657
- [pygame.cursors.compile doc fix](https://github.com/pygame/pygame/pull/1689) thanks to MyreMylar
- Thanks to w-hat for the doc cleanups https://github.com/pygame/pygame/pull/1687.
Starbuck5 [Fixed a typo in gfxdraw doc](https://github.com/pygame/pygame/pull/1564)
- [Use an explicit encoding in the documentation headers writer](https://github.com/pygame/pygame/pull/1544) stefanor and Dominik George.
- [Fix documentation for Vector3's rotate methods](https://github.com/pygame/pygame/pull/1555) charlesej
- [Fix a number of spelling mistakes](https://github.com/pygame/pygame/pull/1543) stefanor
- [Fix incorrect comments in draw module example](https://github.com/pygame/pygame/pull/1538) Starbuck5
- Thanks vilhelmprytz for [a little doc fix](https://github.com/pygame/pygame/pull/1473) :)
- [pygame.music.play() looping docs consistent with pygame and SDL behaviour](https://github.com/pygame/pygame/pull/1693) MyreMylar
- [Document BLEND_PREMULTIPLIED Surface.blit flag](https://github.com/pygame/pygame/pull/1706) MyreMylar
- [Correction pygame.sprite.LayeredUpdates _layer attribute name](https://github.com/pygame/pygame/pull/1708) glennmackintosh


Optimizations

- [Speed up `pygame.image.fromstring`](https://github.com/pygame/pygame/pull/1650) nthykier
- Load time on windows and linux improved due to avoiding loading element tree.
- SDL 2.0.12 includes assembler optimizations for many blit drawing functions for ARM platforms like Raspberry Pi.
- The [assembler optimized scale function was enabled again](https://github.com/pygame/pygame/pull/1546) thanks stefanor
- The [draw bounds tests were sped up](https://github.com/pygame/pygame/pull/1571) charlesej
- circle drawing was sped up again, and is more correct.


new feature pygame.key.key_code

There's now a function to return the [key code from the name of a key](https://github.com/pygame/pygame/pull/1694).

Thanks to MyreMylar for digging into C code to implement, document and test this feature.

python
>>> pygame.key.key_code("return") == pygame.K_RETURN
True
>>> pygame.key.key_code("0") == pygame.K_0
True
>>> pygame.key.key_code("space") == pygame.K_SPACE
True


Bug fixes and Cleanups

Lots of bug fixes and cleanups continued to happen in the pygame code base.
We reached a milestone of turning lots of compiler warnings into errors for our linux builds.
In our C/C++ code we are now at zero alerts with LGTM, and only 10 left in our python code.

- Fixed some [potential memory leaks](https://github.com/pygame/pygame/pull/1632) in low memory conditions.
- Cleanups continued including [various cppchecker](https://github.com/pygame/pygame/pull/1497) [fixes](https://github.com/pygame/pygame/pull/1501) Some [LGTM bug fixes](https://github.com/pygame/pygame/pull/1590) were made too. Thanks to charlesej
- The [Mask.to_surface](https://github.com/pygame/pygame/pull/1588) method got a lot of tests, so did [the](https://github.com/pygame/pygame/pull/1585) [PixelArray.compare](https://github.com/pygame/pygame/pull/1583) method.
- The [playmus](https://github.com/pygame/pygame/pull/1579) example was fixed, thanks to flaambe Also the - [setmodescale](https://github.com/pygame/pygame/pull/1578) example fixed thanks to galexandreg
- [Fixed rect collision with negative size and image.frombuffer not working with ARGB](https://github.com/pygame/pygame/pull/1576) MightyJosip
- [Fix Python syntax warning](https://github.com/pygame/pygame/pull/1566) charlesej
- [midi: fix midi_to_ansi_note](https://github.com/pygame/pygame/pull/1561) zuh0
- [Close file handle fixed in MacOS](https://github.com/pygame/pygame/pull/1527) markph0204
- [Fix memory leak in pygame.font.Font.metrics](https://github.com/pygame/pygame/pull/1470) charlesej
- [OpenGL screen size from set_mode as requested.](https://github.com/pygame/pygame/pull/1482) illume
- [fix set_controls in _camera.c on python 3.8](https://github.com/pygame/pygame/pull/1484) robertpfeiffer
- Thanks to first time contributor DotMars for making [image.load throw FileNotFoundError](https://github.com/pygame/pygame/pull/1660) instead of the generic pygame.error when the file does not exist.


Dependencies updated

pygame uses a whole lot of different pieces of software to do a lot of the heavy lifting.

- There's a new [conan](https://conan.io/) based build system. Conan is a cross platform C/C++ package manager written in python. It's replaced our homebrew based build system for Mac, but may potentially be an option for other platforms too.
- [Windows dependencies were updated](https://github.com/pygame/pygame/pull/1629): SDL 2.0.12, SDL_ttf 2.0.15, and jpeg 9d. The [Windows dependency downloader: replaced requests with urllib](https://github.com/pygame/pygame/pull/1493), so that it can be used by people without first installing the requests module.
- The linux ['manylinux' build dependencies were updated](https://github.com/pygame/pygame/pull/1641). freetype-2.10.1, libpng-1.6.37, libwebp-1.1.0, mpg123-1.25.13, libogg-1.3.4, SDL2-2.0.12.
- [Portmidi is skipped on Debian GNU/kFreeBSD and GNU/Hurd too](https://github.com/pygame/pygame/pull/1545) thanks to stefanor and Debian folk.


Development improvements

Along with the typehints for most pygame functions (which I've already mentioned above) there were some improvements for people developing pygame itself.

Many compiler errors now cause the CI system to fail if present. Thanks again to charlesej for many fixes https://github.com/pygame/pygame/pull/1634 and to nthykier for making our CI bots fail for more warnings https://github.com/pygame/pygame/pull/1652

Previous pygame header files for C extensions using pygame were not installed. Now they are thanks to robertpfeiffer https://github.com/pygame/pygame/pull/1662

Some [depreciation warnings](https://github.com/pygame/pygame/pull/1627) from python 3.8 were fixed.

Community help

A special thanks to all the people who help out others. claudeb, DaFluffyPotato, MyreMylar, MichaelCPalmer, jtiai, Rabbid76, The Big Kahuna, sloth, Kingsley, ... Also a big thanks to the people who run community spaces and events like lordmauve who runs pyweek, and the /r/pygame community members.


Issues

MyreMylar in particular went above and beyond investigating lots of old pygame issues, and closing many. Some of them several years old.

I'm happy that 4 'critical' backwards compatibility issues were fixed since the last release. If you notice a backwards compatibility issue with the pygame 2 series please let us know with a delicious issue report. Nom nom nom 🍕

---

- [16 open 'critical' issues](https://github.com/pygame/pygame/issues?q=is%3Aissue+is%3Aopen+label%3Acritical) (backwards compatibility issues reported by people), and 22 closed (last release: 13 open, 18 closed).
- [merged PRs](https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed)
- [1166 Commits since 1.9.6 stable release](https://github.com/pygame/pygame/compare/1.9.6...2.0.0.dev8)
- [269 Commits since 2.0.0.dev6 pre release](https://github.com/pygame/pygame/compare/2.0.0.dev6...2.0.0.dev8)

2.0.0.dev6

🌺🌻🌹🥀🌷🌼🌸💐💮🌺🌻🌹🥀🌷🌼🌸💐💮🌺🌻

Python 3.8 support. For pygame 2 anyway. Decided not to do it for pygame 1.9.6, and to instead try and fix a few more of those 'critical' blocker issues (current [critical issue count](https://github.com/pygame/pygame/issues?q=is%3Aissue+is%3Aopen+label%3Acritical) is lucky 13).

Virtual Mouse mode with relative mouse movements was fixed to how it was in pygame 1.9.x - thanks to new committer mcpalmer1980. Who also added a new pygame.music.fadein() function, plus examples!

Support for old SDL1 SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED environment variables which were removed in SDL2.

The Great Examples Cleanup of October 2019 is complete.
All of the examples were tidied up. Extra documentation was added, and things clarified. Thanks to new committer Starbuck5 for their work on examples/eventlist.py. There's now 43 example files!! Cleanups like removing usage of `from pygame.locals import *`, which is kind of cool... but also not considered good practice in the wider python community. Also the examples are now formatted with the python code for-matter. Additionally two interesting AND EDUCATIONAL new examples: music_drop_fade.py, and font_viewer.py were contributed by mcpalmer1980

bash
python3 -m pygame.examples.font_viewer
python3 -m pygame.examples.music_drop_fade


Cleanliness brings us joy

As part of the continuing ~~code~~prose cleanups of the pygame ~~code~~prose-base, we are now warning free on the clang C compiler on MacOS. Additionally warnings are now errors on the clang compiler when the robots check our code for us. We are also very close to zero warnings on different gcc versions, and Microsoft Visual C compiler too. We reached a new milestone with the 'LGTM' static analyzer. It now gives pygame an "A+" for both the python code, and the C code - meaning pygame is within the top 5% of projects with those languages. LGTM now checks new pull requests automatically, and helps us find some issues on pull requests. The Coverity static analyzer rates pygame source code as having less defects than high quality code bases like the Linux kernel, OpenSSL, and libcurl. Strangely (to me) pygame is regularly trending on github as a C project. A lot of the cleanups were done by charlesej, so thanks a lot for that! Oh, and a warning... please don't look at our setup.py file!!!! It's still scary AF. We have over 45,000 lines of python in pygame, and 350,000 lines of C... and a lot of that needs some attention.

Some developer improvements include verbose mode to our test runner (`python3 -m pygame.tests -v`), and the mechanism to share functions and data in our C API has been documented. See the [Hacking developer guide](https://www.pygame.org/wiki/Hacking).

Want to collide between a rect and a line?

Well, charlesej has you covered with the new `Rect.clipline()`. This can also tell you where a line clips with a Rect. It was great to see the discussion on this as different people talked about API trade offs, and together came up with a very nice API. Thanks to mcpalmer1980 for the discussion on the design, and also to thiagojobson (who is now part of the pygame team on github! 🎈 🎉 ).

First time committer hnrkcode fixed how comments are displayed on the website. Also thanks to 0101011 for a doc fix. Speaking of new committers, galexandreg helped out fixing the pygame.mixer.Sound.get_num_channels() function to return a correct result in some cases (the sound stuff got a number of fixes this release!)

robertpfeiffer did some more work on the SCALED feature, after a patch from lordmauve enabling use of it with OpenGL apps.

Thanks to TravisCI who have allowed us to try out their alpha ARM64 support. We don't have pygame building on it yet, but hopefully soon it can join our other ROBOT builders like the power pc one.

In distro packaging news, FreeBSD now has pygame 1.9.6. Which is great, because it stuck around at 1.8.x for many years now. Thanks to Wen, and Nathan in maintaining it there. See the giant list of [119 pygame packages](https://repology.org/project/python:pygame/versions) in different distros. No one seems to have packaged a pre-release of pygame 2 yet.

Cheers to the folks in the discord chat helping people out, chatting and sharing project updates on things. Especially to claudeb, and blubberquark.

All the regressions that were reported in issues for the 2.0.0.dev4 release have been fixed. Including one circle drawing regression fix by MightyJosip, who also fixed a long lasting 'thick line' pygame.draw issue. Both very tricky ones! Also thanks to some very detailed unit tests that were written by charlesej for the draw module that let us verify the drawing algorithms.

I'm happy that 5 'critical' backwards compatibility issues were fixed since the last release. If you notice a backwards compatibility issue with the pygame 2 series please let us know with a delicious issue report. Nom nom nom 🍕

---

- [13 open 'critical' issues](https://github.com/pygame/pygame/issues?q=is%3Aissue+is%3Aopen+label%3Acritical) (backwards compatibility issues reported by people), and 18 closed.
- [merged PRs](https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed)
- [885 Commits since 1.9.6 stable release](https://github.com/pygame/pygame/compare/1.9.6...2.0.0.dev6)
- [172 Commits since 2.0.0.dev4 pre release](https://github.com/pygame/pygame/compare/2.0.0.dev4...2.0.0.dev6)

ps. Why dev6 instead of dev5? This time 2.0.0.dev5 was the version given to the git repo. So we can tell if someone is compiling pygame from source in bug reports. The git repo pygame will become 2.0.0.dev7, and when released it will be 2.0.0.dev8. This is how libsdl are doing things now too, and it's a good idea.
🤖 is coming. Happy hacking!

2.0.0.dev4

🎮👾👽🎮👾👽🎮👾👽🎮👾👽🎮👾
G'day! It's 2.0.0.dev4 time!
🎮👾👽🎮👾👽🎮👾👽🎮👾👽🎮👾


> `python3 -m pip install pygame==2.0.0.dev4 --pre --user`


What goodies do we have in store?

Firstly, some SDL2 compatibility issues were fixed. Like the window initially defaults to black, and the `unicode` field of keydown events is filled. Thanks to dlon.

Speaking of SDL2, we are now shipping [SDL 2.0.10](https://discourse.libsdl.org/t/sdl-2-0-10-released/26429) which includes stuff like batching renderer and lots of bug fixes, including to the Metal renderer on Mac, lots of other stuff. Thanks to all the libSDL people.

Many, many fixes thanks to charlesej and some static analysis tools.

Some new contributors deserve thanks 🎉 🎈 including
thiagojobson flaambe mampersat s0lst1ce

robertpfeiffer and dlon fixed some issues with the fancy SCALED feature, and robertpfeiffer got the toggle_fullscreen function working more reliably too!

And speaking of helping out, robertpfeiffer also helped out nhpackard with an optimization to transform.scale. When scaling to twice the width and height, a special optimized routine by nhpackard is used.

Lots of fixes and tests happened to the draw, and mask modules mostly thanks to charlesej (but also to thiagojobson)

Lots of infrastructure changes happened to our build system to make things easier for
developers. Firstly we started using LGTM which runs some lint tools on our code for us.
Secondly we started using lots of other testing tools. Thanks to Travis CI we have a
Power PC CPU robot building things. takluyver made a PR for the new manylinux2010 which
we sadly haven't started using yet. As usual a tiny bit more of the release process has been automated.

An article for developers on [contemporary C tools](http://renesd.blogspot.com/2019/09/post-modern-c-tooling.html) is still unfinished(but probably useful for developers of pygame). Here's some issues of those tools applied to pygame: https://github.com/pygame/pygame/labels/tooling

Again charlesej in particular has been amazing in going through mountains of issues uncovered.
The pygame code base is significantly cleaner, more portable, and less buggy because of it.

Indic Scripts including Hindi, Telugu, Tamil are closer to being rendered now thanks to the
work of new contributor peanutbutterandcrackers tracking down things and writing
some automated tests for it. This work is ready to be developed further and is moving forward! Thanks!

Thanks for all the people trying out the pygame 2.0.0.dev3 builds and (submitting issues) or patches including: larryhastings humanbeast7 Pololot64 mcpalmer1980
husano896 galexandreg mgedmin cgohlke cipri-tom noisnemid DudmasterUltra
agdt3 crowjdh JOHNIDnDNIW lordmauve dheerajakula

Speaking of bugs, as people have been using the 2.0.0.dev3 release, they've been finding various bugs. All SDL2/pygame 2 related compatibility issues reported by people are marked as `critical`.
https://github.com/pygame/pygame/labels/critical

These "[critical](https://github.com/pygame/pygame/labels/critical)" issues will be a focus as we move forward to shipping pygame 2.0.0.
If you feel like helping out with any of these "[critical](https://github.com/pygame/pygame/labels/critical)" issues, that would be highly appreciated.

- confirm the bug (on your platform).
- cheer people on in the issues
- write a minimal working example script so people can reproduce the issue.
- write a test case, or try and clarify the issue

https://github.com/pygame/pygame/labels/critical

- [merged PRs](https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed)
- [713 Commits since 1.9.6 stable release](https://github.com/pygame/pygame/compare/1.9.6...2.0.0.dev4)
- [299 Commits since 2.0.0.dev3 pre release](https://github.com/pygame/pygame/compare/2.0.0.dev3...2.0.0.dev4)


---

ps. DaFluffyPotato released a new commercial game using the pygame 2.0.0.dev3 release.
"Drawn Down Abyss" is getting good reviews... check it out:
https://www.pygame.org/project/4294
pps. Feels like progress? Happy hacking!

2.0.0.dev3

There are binaries for Mac, Windows, and Linux with SDL2.
> python3 -m pip install pygame==2.0.0.dev3 --pre --user

So... what's new? Here's a few things.

The documentation has been made more readable on big screens and small ones. It is also updating from github again. charlesej in particular has made a lot of documentation fixes. See https://www.pygame.org/docs/

It's easier to make custom types that will work with multiple GUI libraries.
python
FIRST = pygame.event.custom_type()

(No more USEREVENT+1 nonsense) Also with pygame 2.0.0.dev3 you can have 8192 custom events instead of 32.

Thanks to charlesoblack (first time contributor ya!) there is a pygame.Color.lerp() function now. It returns a linear interpolation.

python
>>> color.lerp(color2, 0.0) -> color
>>> color.lerp(color2, 0.5) -> halfway_color
>>> color.lerp(color2, 1.0) -> color2


dlon added support for some Modern OpenGL features. For more detail see: https://github.com/pygame/pygame/pull/1127

Now you can do one-shot timers like this: `pygame.time.set_timer(EVENT, 1000, 1)`

Thanks to bennuttall and the piwheels project, pygame has binary wheels for the raspberian linux. See https://www.piwheels.org/project/pygame/

The sound mixer has moved into the modern age and now defaults to a small low latency buffer size of 512 bytes, and uses CD quality audio by default.


Check these lists out for more detailed info on what's changed:
- [merged PRs](https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed)
- [414 Commits since 1.9.6 stable release](https://github.com/pygame/pygame/compare/1.9.6...2.0.0.dev3)
- [74 Commits since 2.0.0.dev2 pre release](https://github.com/pygame/pygame/compare/2.0.0.dev2...2.0.0.dev3)

2.0.0.dev2

There are binaries for Mac, Windows, and Linux with SDL2.

You can try it out with a command something like this:
`python3 -m pip install pygame==2.0.0.dev2 --pre --user`

Also, SDL2 is the default now when you compile from source. You can use `python setup.py install -sdl1` to compile against SDL 1.2.

Apart from lots and __LOTS__ of work on the Color, Mask, and pygame.draw stuff, there are a few more experimental things. Like the sprite module compiled with Cython into C code. Additionally there is the new SCALED mode, for automagically scaling your low resolution game into a viewable sized window (a 320x200 window is tiny on a 4k screen... so this makes it bigger and scales everything for you).

Check these lists out for more detailed info on what's changed:
- [merged PRs](https://github.com/pygame/pygame/pulls?q=is%3Apr+is%3Aclosed)
- [341 Commits since 1.9.6](https://github.com/pygame/pygame/compare/1.9.6...master)

2.0.0.dev1

This pre-release development build has some windows and mac binaries uploaded which use SDL2.

(plus a whole lot of other improvements over 1.9.5)

Page 8 of 11

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.