Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/python/cpython

The Python programming language
https://github.com/python/cpython

Misc minor improvements to the itertools recipes (gh-113477)

b5dc0f83adda0bde1b176c3a84cc31cd94254e73 authored about 1 year ago by Raymond Hettinger <[email protected]>
gh-106905: Use separate structs to track recursion depth in each PyAST_mod2obj call. (GH-113035)

Co-authored-by: Gregory P. Smith [Google LLC] <[email protected]>

48c49739f5502fc7aa82f247ab2e4d7b55bdca62 authored about 1 year ago by Yilei Yang <[email protected]>
bpo-21360: mailbox.Maildir now ignores files with a leading dot (GH-11833)

The maildir format specification states that files with a leading dot
should be ignored.

Co-...

3f5eb3e6c75b874db1a83c9d53e824e56fcad02e authored about 1 year ago by Zackery Spytz <[email protected]>
fix bullet-list in `LOAD_SUPER_ATTR` documentation on `dis` page (#113461)

f7c5a7a0f9f8186a7fdc8b721468d022fe310b04 authored about 1 year ago by denballakh <[email protected]>
GH-111485: Fix handling of FOR_ITER in Tier 2 (GH-113394)

9a35794fcbe994f0eb36c32d8f24d307837c9412 authored about 1 year ago by Mark Shannon <[email protected]>
gh-113407: Fix import of unittest.mock when CPython is built without docstrings (GH-113408)

0c574540e07792cef5487aef61ab38bfe404060f authored about 1 year ago by Serhiy Storchaka <[email protected]>
Add codeowners for `Lib/ensurepip/` (#112805)

0d74e9683b8567df933e415abf747d9e0b4cd7ef authored about 1 year ago by Alex Waygood <[email protected]>
gh-113191: Add support of os.fchmod() on Windows (GH-113192)

Also support a file descriptor in os.chmod().

1f06baeabd7ef64b7be6af7cb6fc03ec410b1aa2 authored about 1 year ago by Serhiy Storchaka <[email protected]>
gh-113440: Ignore the "ver" command failure with exit code 0xc0000142 (GH-113435)

53330f167792a2947ab8b0faafb11019d7fb09b6 authored about 1 year ago by Serhiy Storchaka <[email protected]>
gh-113421: Fix multiprocessing logger for "%(filename)s" (GH-113423)

ce77ee50358c0668eda5078f50b38f0770a370ab authored about 1 year ago by Xu Song <[email protected]>
gh-113028: Correctly memoize str in pickle when escapes added (GH-113436)

This fixes a divergence between the Python and C implementations of pickle
for protocol 0, such...

08398631a0298dcf785ee7bd0e26c7844823ce59 authored about 1 year ago by Jeff Allen <[email protected]>
gh-111784: Fix two segfaults in the elementtree module (GH-113405)

First fix resolve situation when pyexpat module (which contains expat_CAPI
capsule) deallocates...

894f0e573d9eb49cd5864c44328f10a731852dab authored about 1 year ago by Kirill Podoprigora <[email protected]>
gh-112559: Avoid unnecessary conversion attempts to enum_klass in signal.py (#113040)

050783cb37d6a09d8238fa640814df8a915f6a68 authored about 1 year ago by Yilei Yang <[email protected]>
gh-112800: Ignore PermissionError on SubprocessTransport.close() in asyncio (#112803)

In case the spawned process is setuid, we may not be able to send
signals to it, in which case ...

0187a7e4ec9550a6e35dd06b26f22863520242ab authored about 1 year ago by Allison Karlitskaya <[email protected]>
gh-113317: Move more formatting helpers into libclinic (#113438)

Move the following global helpers into libclinic:
- format_escape()
- normalize_snippet()
- w...

ca71987f4e3be56a369a1dd57763c6077b3c4899 authored about 1 year ago by Erlend E. Aasland <[email protected]>
Fix trivial typo in test_interpreters (GH-113381)

8bce593a6317882da82693e6e8f7c49df0cf59a5 authored about 1 year ago by Jeff Allen <[email protected]>
gh-74573: document that ndbm can silently corrupt databases on macOS (#113354)

* gh-74573: document that ndbm can silently corrupt databases on macOS

The system ndbm implem...

593b4d81d276b428f926debfe70d56ba94edf0e1 authored about 1 year ago by Ronald Oussoren <[email protected]>
gh-113188: Fix shutil.copymode() on Windows (GH-113189)

Previously it worked differently if dst is a symbolic link:
it modified the permission bits of ...

6e02d79f96b30bacdbc7a85e42040920b3dee915 authored about 1 year ago by Serhiy Storchaka <[email protected]>
gh-112925: Fix error in example of `datetime.time.fromisoformat` and add doctest marker (GH-112931)

bdc8d667ab545ccec0bf8c2769f5c5573ed293ea authored about 1 year ago by F-park <[email protected]>
gh-81682: Fix test failures when CPython is built without docstrings (GH-113410)

4e5b27e6a3be85853bd04d45128dd7cc706bb1c8 authored about 1 year ago by Serhiy Storchaka <[email protected]>
gh-113317: Clean up Argument Clinic global namespace (#113414)

Split up clinic.py by establishing libclinic as a support package for
Argument Clinic. Get rid ...

c3f92f6a7513340dfe2d82bfcd38eb77453e935d authored about 1 year ago by Erlend E. Aasland <[email protected]>
gh-113317: Remove TextAccumulator type alias from clinic.py (#113413)

Clean-up after gh-113402.

9c3ddf31a34295ebcef6dc49b9e0ddd75d0ea9f1 authored about 1 year ago by Erlend E. Aasland <[email protected]>
GH-110109: Adjust `test_pathlib_abc` imports to ease backporting (#113411)

This very boring patch reduces the number of changes needed in
`test_pathlib_abc.py` when backp...

d1c711e757213b38cff177ba4b4d8ae201da1d21 authored about 1 year ago by Barney Gale <[email protected]>
gh-113317: Argument Clinic: tear out internal text accumulator APIs (#113402)

Replace the internal accumulator APIs by using lists of strings and join().

Yak-shaving for sep...

daa658aba5133b78db89c90056a8421bd6ac8703 authored about 1 year ago by Erlend E. Aasland <[email protected]>
GH-110109: pathlib ABCs: do not vary path syntax by host OS. (#113219)

Change the value of `pathlib._abc.PurePathBase.pathmod` from `os.path` to
`posixpath`.

User ...

a0d3d3ec9ddd35514aa8db68b2fe9b8151cfc0a6 authored about 1 year ago by Barney Gale <[email protected]>
GH-112855: Slightly improve tests for `pathlib.PurePath` pickling (#113243)

Add a few more simple test cases, like non-anchored paths. Remove misplaced
and indirect test t...

ff5e131df5f374f72579b970856dc5646e8b836c authored about 1 year ago by Barney Gale <[email protected]>
gh-113212: Improve error message & document zero-arg super inside nested functions and generator expressions (GH-113307)

4a3d2419bb5b7cd862e3d909f53a2ef0a09cdcee authored about 1 year ago by Yan Yanchii <[email protected]>
GH-110109: Fix misleading `pathlib._abc.PurePathBase` repr (#113376)

`PurePathBase.__repr__()` produces a string like `MyPath('/foo')`. This
repr is incorrect/misle...

237e2cff00cca49db47bcb7ea13683a4d9ad1ea5 authored about 1 year ago by Barney Gale <[email protected]>
GH-112215: Increase C recursion limit for non debug builds (GH-113397)

45e09f921be55e23bed19b5db4c95ce7bd7aad6b authored about 1 year ago by Mark Shannon <[email protected]>
gh-109989: Fix test_c_locale_coercion when PYTHONIOENCODING is set (#113378)

* gh-109989: Fix test_c_locale_coercion when PYTHONIOENCODING is set

This fixes the existing ...

5f665e99e0b8a52415f83c2416eaf28abaacc3ae authored about 1 year ago by Ronald Oussoren <[email protected]>
gh-113384: Skip test_freeze for framework builds on macOS (#113390)

bee627c1e29a070562d1a540a6e513d0daa322f5 authored about 1 year ago by Ronald Oussoren <[email protected]>
gh-113297: Fix segfault in compiler for with statement with 19 context managers (#113327)

c31943af16f885c8cf5d5a690c25c366afdb2862 authored about 1 year ago by Irit Katriel <[email protected]>
gh-112027: Don't print mimalloc warning after mmap() call (gh-113372)

gh-112027: Don't print mimalloc warning after mmap

This changes the warning to a "verbose"-le...

9afb0e1606cad41ed57c42ea0a53ac90433f211b authored about 1 year ago by Sam Gross <[email protected]>
Bump mypy to 1.8.0 (#113385)

7de9855410d034b2b7624a057dbf7c3f58ee5328 authored about 1 year ago by Alex Waygood <[email protected]>
gh-113157 gh-89519: Fix method descriptors (gh-113233)

Restore behaviors before classmethod descriptor chaining was introduced.

d058eaeed44766a8291013b275ad22f153935d3b authored about 1 year ago by Raymond Hettinger <[email protected]>
gh-113313: Note that slice support is not required for all sequences. (gh-113377)

6a5b4736e548fc5827c3bcf1a14193f77e1a989d authored about 1 year ago by Raymond Hettinger <[email protected]>
gh-113370: Add missing obmalloc.o dependencies on mimalloc (#113371)

31d8757b6070010b0fb92a989b1812ecf303059f authored about 1 year ago by Sam Gross <[email protected]>
gh-95754: Better AttributeError on partially initialised module (#112577)

Co-authored-by: Serhiy Storchaka <[email protected]>

61e818409567ce452af60605937cdedf582f6293 authored about 1 year ago by Shantanu <[email protected]>
gh-113174: Sync with importlib_metadata 7.0 (#113175)

* Sync with importlib_metadata 7.0.0

* Add blurb

* Update docs to reflect changes.

* Li...

2d91409c690b113493e3e81efc880301d2949f5f authored about 1 year ago by Jason R. Coombs <[email protected]>
gh-113343: Fix error check on mmap(2) (#113342)

Fix error check on mmap(2)

It should check MAP_FAILED instead of NULL for error.

On mmap(2...

6b70c3dc5ab2f290fcdbe474bcb7d6fdf29eae4c authored about 1 year ago by Namhyung Kim <[email protected]>
gh-113325: Remove a debugging print accidentally left in test_symtable (GH-113368)

5f7a80fd02158d9c655eff4202498f5cab9b2ca4 authored about 1 year ago by Serhiy Storchaka <[email protected]>
gh-65701: document that freeze doesn't work with framework builds on macOS (#113352)

* gh-65701: document that freeze doesn't work with framework builds on macOS

The framework in...

df1eec3dae3b1eddff819fd70f58b03b3fbd0eda authored about 1 year ago by Ronald Oussoren <[email protected]>
gh-110383: Improve accuracy of str.split() and str.rsplit() docstrings (#113355)

Clarify split direction in the docstring body,
instead of in the 'maxsplit' param docstring.

526d0a9b6eafb95c425838715a4961d97dc600da authored about 1 year ago by Erlend E. Aasland <[email protected]>
gh-87277: Don't look for X11 browsers on macOS in webbrowser (#24480)

The installation of XQuartz on macOS will unconditionally
set the $DISPLAY variable. The X11 ...

ca8b1d09585c032416c5d4905f707550eecf327f authored about 1 year ago by Ronald Oussoren <[email protected]>
GH-111485: Delete the old generator code. (GH-113321)

723f4d66982e4d2c54f8e874d6084ab7b2ff5833 authored about 1 year ago by Mark Shannon <[email protected]>
gh-113336: Remove the 'version' directive from Argument Clinic (#113341)

The 'version' directive was introduced with gh-63929 in Nov 2013. It has
not been in use in the...

fae096cd4b7025f91473546ca6a243c86374dd6a authored about 1 year ago by Erlend E. Aasland <[email protected]>
Docs: update URL in Argument Clinic CLI help text (#113351)

The Argument Clinic docs was moved to the devguide earlier in 2023.

4b90b5d857ba88c7d85483e188a73323df9ba05c authored about 1 year ago by Erlend E. Aasland <[email protected]>
Docs: OpenSSL wording ambiguity (#113296)

24f8ff28a3847b3b9f92f3aaa5346e92399a246a authored about 1 year ago by Jan Brasna <[email protected]>
gh-112305: Fix check-clean-src to detect frozen_modules .h files. (#113344)

A typo left this check broken so many of us who do out-of-tree builds
were seeing strange failu...

103c4ea27464cef8d1793dab347f5ff3629dc243 authored about 1 year ago by Gregory P. Smith <[email protected]>
gh-111375: Use `NULL` rather than `None` in the exception stack to indicate that an exception was handled (#113302)

a2dd0e7038ad65a2464541f91604524d871d98a7 authored about 1 year ago by Carey Metcalfe <[email protected]>
GH-113214: Fix SSLProto exception handling in SSL-over-SSL scenarios (#113334)

When wrapped, `_SSLProtocolTransport._force_close(exc)` is called just like in the unwrapped sce...

1ff02385944924db7e683a607da2882462594764 authored about 1 year ago by Martijn Pieters <[email protected]>
gh-113330: Fix mimalloc headers reference (#113331)

The `MIMALLOC_HEADERS` variable is defined in the Makefile.pre.in, not
the configure script, so...

a3e8afe0a3b5868440501edf579d1d4711c0fb18 authored about 1 year ago by Sam Gross <[email protected]>
GH-111485: Fix DEFAULT_OUTPUT in opcode_metadata_generator.py (#113324)

713e42822f5c74d8420f641968c3bef4b10a513a authored about 1 year ago by Guido van Rossum <[email protected]>
gh-113257: Automatically generate pip SBOM metadata from wheel (#113295)

Co-authored-by: Hugo van Kemenade <[email protected]>

b221e030100e565d4a027ce1c0152dac1b7ffbdf authored about 1 year ago by Seth Michael Larson <[email protected]>
gh-113255: Clarify docs for `typing.reveal_type` (#113286)

Co-authored-by: AlexWaygood <[email protected]>

11ee912327ef51100d2a6b990249f25b6b1b435d authored about 1 year ago by Kir <[email protected]>
GH-111485: Generate `TARGET` table for computed goto dispatch. (GH-113319)

de8a4e52a5f5e5f0c5057afd4c391afccfca57d3 authored about 1 year ago by Mark Shannon <[email protected]>
GH-111485: Generate instruction and uop metadata (GH-113287)

e96f26083bff31e86c068aa22542e91f38293ea3 authored about 1 year ago by Mark Shannon <[email protected]>
gh-111178: Make slot functions in typeobject.c have compatible types (GH-112752)

a545a86ec64fbab325db101bdd8964f524a89790 authored about 1 year ago by Christopher Chavez <[email protected]>
gh-112205: Support docstring for `@getter` (#113160)

---------

Co-authored-by: Erlend E. Aasland <[email protected]>

57b7e52790ae56309832497a1ce17e3e731b920e authored about 1 year ago by Donghee Na <[email protected]>
Fix typo in datamodel docs (#113314)

Co-authored-by: Rodrigo Girão Serrão <[email protected]>

5a7cc667f816f0377f763322c2367301ea3379ee authored about 1 year ago by Rodrigo Girão Serrão <[email protected]>
Fix typo in collections.abc docs example (#113310)

Calling the instance reference arg for the __next__ method, "next", seems misleading as it would...

22b8945d7678be86f801ca54f004a5dba2006835 authored about 1 year ago by David Greaves <[email protected]>
add Ujan to ACKS for work on enum docs (GH-113301)

4afa7be32da32fac2a2bcde4b881db174e81240c authored about 1 year ago by Ethan Furman <[email protected]>
gh-111973: Update Windows installer to use SQLite 3.44.2 (#113281)

14d4c7742a26a3c2253e0a0be476981104b29f5a authored about 1 year ago by Erlend E. Aasland <[email protected]>
gh-87264: Convert tarinfo type to stat type (GH-113230)

Co-authored-by: val-shkolnikov <[email protected]>

e1117cb8864ca337a26388a6186aa85f7cc29a94 authored about 1 year ago by Marat Idrisov <[email protected]>
gh-111973: Update macOS installer to use SQLite 3.44.2 (GH-113279)

6a1d5a4c0f209d51ab33d6529935d643bcdb3ba2 authored about 1 year ago by Erlend E. Aasland <[email protected]>
gh-101100: Fix Sphinx warnings in `library/ast.rst` (#113289)

Co-authored-by: Alex Waygood <[email protected]>

76bef3832bae64664882e27ecb6f89800a12cf43 authored about 1 year ago by Hugo van Kemenade <[email protected]>
gh-112205: Require @getter and @setter to be methods (#113278)

Co-authored-by: Alex Waygood <[email protected]>

6a69b80d1b1f3987fcec3300c5dc879c6e965079 authored about 1 year ago by Erlend E. Aasland <[email protected]>
gh-113054: Compiler no longer replaces a redundant jump with no line number by a NOP (#113139)

e51b4009454939e3ee5f1bfaed45ce65689a71b8 authored about 1 year ago by Irit Katriel <[email protected]>
gh-113234: tomllib docs: reorder conversion table & add remaining types (GH-113236)

76d757b38b414964546393bdccff31c1f8be3843 authored about 1 year ago by ryan-duve <[email protected]>
gh-113208: Mention namespace packages don't require __init__.py (#113209)

Co-authored-by: C.A.M. Gerlach <[email protected]>

d71fcdee0f1e4daa35d47bbef103f30259037ddb authored about 1 year ago by Unique-Usman <[email protected]>
gh-113257: Fix SBOM metadata for pip 23.3.2 (#113262)

Fix SBOM metadata for pip 23.3.2

4658464e9cf092be930d0d8f938e801a69f7f987 authored about 1 year ago by Seth Michael Larson <[email protected]>
gh-113269: IDLE - Fix test_editor hang (macOS) (#113271)

Hangs on installed 3.13.0a2 on macOS Catalina.
Behavior on installed 3.12.1 and 3.11.7 is unknown.

fa9ba02353d79632983b9fe24da851894877e342 authored about 1 year ago by Terry Jan Reedy <[email protected]>
gh-113119: Fix the macOS framework installer build (#113268)

`--enable-framework` builds were failing. we apparently do not have good CI & buildbot coverage...

c895403de0b1c301aeef86921348c13f608257dc authored about 1 year ago by Gregory P. Smith <[email protected]>
gh-102362: Fix macOS version number in result of sysconfig.get_platform() (GH-112942)

Change _osx_support.get_platform_osx() to make sure that the
version number in the result inclu...

893c9ccf48eacb02fa6ae93632f2d0cb6778dbb6 authored about 1 year ago by Ronald Oussoren <[email protected]>
gh-108269: Add CFBundleAllowMixedLocalizations to Info.plist on macOS (GH-113213)

Adding this key with a value of true enables detecting the
users prefered language in libraries...

4cfce3a4da7ca9513e7f2c8ec94d50f8bddfa41b authored about 1 year ago by Ronald Oussoren <[email protected]>
gh-113199: Make read1() and readline() of HTTPResponse close IO after reading all data (GH-113200)

41336a72b90634d5ac74a57b6826e4dd6fe78eac authored about 1 year ago by Illia Volochii <[email protected]>
gh-113039: Avoid using leading dots in the include path for frozen getpath.py (GH-113022)

2feec0fc7fd0b9caae7ab2e26e69311d3ed93e77 authored about 1 year ago by Itamar Oren <[email protected]>
gh-112535: Implement fallback implementation of _Py_ThreadId() (gh-113185)

---------

Co-authored-by: Sam Gross <[email protected]>

d00dbf541525fcb36c9c6ebb7b41a5637c5aa6c0 authored about 1 year ago by Donghee Na <[email protected]>
gh-108113: [docs] mention PyCF_OPTIMIZED_AST in ast Compiler Flags (#113241)

59f0766ae5aef8bd393a53ab9234371b7d165ec3 authored about 1 year ago by dreamflow <[email protected]>
GH-111485: Break up instructions with unused cache entries into component micro-ops (GH-113169)

70d378cdaa99f995bdce278439ef7c4defe4f805 authored about 1 year ago by Mark Shannon <[email protected]>
GH-111485: Test the new cases generator (GH-113252)

771903596b07af50cab2aaa3c7dfc9cc06e51a06 authored about 1 year ago by Mark Shannon <[email protected]>
gh-113246: Updated bundled pip to 23.3.2 (gh-113249)

Updated bundled pip to 23.3.2

4a24bf9a13a7cf055113c04bde0874186722c62c authored about 1 year ago by Stéphane Bidoul <[email protected]>
gh-101100: Fix Sphinx warnings in library/tarfile.rst (#113237)

Fix Sphinx warnings in library/tarfile.rst

f428c4dafbfa2425ea056e7f2ed2ea45fa90be87 authored about 1 year ago by Hugo van Kemenade <[email protected]>
gh-113117: Support posix_spawn in subprocess.Popen with close_fds=True (#113118)

Add support for `os.POSIX_SPAWN_CLOSEFROM` and
`posix_spawn_file_actions_addclosefrom_np` and h...

2b93f5224216d10f8119373e72b5c2b3984e0af6 authored about 1 year ago by Jakub Kulík <[email protected]>
Docs: Add label to grammar spec for linking from PEPs (#113235)

32d87a88994c131a9f3857d01ae7c07918577a55 authored about 1 year ago by Hugo van Kemenade <[email protected]>
gh-113149: Improve error message when JSON has trailing comma (GH-113227)

cfa25fe3e39e09612a6ba8409c46cf35a091de3c authored about 1 year ago by Carson Radtke <[email protected]>
gh-112890: `unittest` Test Discovery page updated "`unittest` dropped the namspace packages support" (GH-113195)

21d52995ea490328edf9be3ba072821cd445dd30 authored about 1 year ago by Taylor Packard <[email protected]>
gh-113119 fix environment handling in subprocess.Popen when posix_spawn is used (#113120)

* Allow posix_spawn to inherit environment form parent environ variable.

With this change, po...

48c907a15ceae7202fcfeb435943addff896c42c authored about 1 year ago by Jakub Kulík <[email protected]>
IDLE: Add util and stub example comments (#113222)

cde1335485b7bffb12c378d230ae48ad77d76ab1 authored about 1 year ago by Terry Jan Reedy <[email protected]>
GH-110109: pathlib tests: store base directory as test class attribute (#113221)

Store the test base directory as a class attribute named `base` rather than
module constants na...

2f0ec7fa9450caeac820a6dc819d17d14fd16a4b authored about 1 year ago by Barney Gale <[email protected]>
GH-110109: Move tests for pathlib ABCs to new module. (#112904)

d91e43ed7839b601cbeadd137d89e69e2cc3efda authored about 1 year ago by Barney Gale <[email protected]>
gh-113202: Add a strict option to itertools.batched() (gh-113203)

1583c40be938d2caf363c126976bc8757df90b13 authored about 1 year ago by Raymond Hettinger <[email protected]>
gh-67790: Support basic formatting for Fraction (#111320)

PR #100161 added fancy float-style formatting for the Fraction type,
but left us in a state whe...

fe479fb8a979894224a4d279d1e46a5cdb108fa4 authored about 1 year ago by Mark Dickinson <[email protected]>
gh-113046: Revise csv.reader doc (#113207)

Clarify nature of csvfile.

84df3172efe8767ddf5c28bdb6696b3f216bcaa6 authored about 1 year ago by Terry Jan Reedy <[email protected]>
gh-111964: Add _PyRWMutex a "readers-writer" lock (gh-112859)

This adds `_PyRWMutex`, a "readers-writer" lock, which wil be used to
serialize global stop-the...

5ae75e1be24bd6b031a68040cfddb71732461f67 authored about 1 year ago by Sam Gross <[email protected]>
Add reshape() recipe to demonstrate a use case for batched() and chained.from_iterable() (gh-113198)

40574da0196c7e51e1886f6ff9ed26447622ae58 authored about 1 year ago by Raymond Hettinger <[email protected]>
gh-110746: Improve markup in ``tkinter.ttk.rst`` (#111236)

* gh-110746: Improve markup in tkinter.ttk.rst

* gh-110746: Improve markup in tkinter.ttk.rst...

00d2b6d1fca91e1a83f7f99a370685b095ed4928 authored about 1 year ago by Akshat Khandelwal <[email protected]>
GH-112383: Fix test_loop_quicken when an executor is installed (GH-113153)

d07483292b115a5a0e9b9b09f3ec1000ce879986 authored about 1 year ago by Brandt Bucher <[email protected]>
gh-101100: Fix various Sphinx warnings for dunder references in the `library/` directory (#113163)

1addde0c698f7f8eb716bcecf63d119e19e1ecda authored about 1 year ago by Alex Waygood <[email protected]>
gh-101100: Fix Sphinx nitpicks in `library/numbers.rst` (#113162)

c2c4879b0a535b2a43005ba4983408082ef94bd2 authored about 1 year ago by Alex Waygood <[email protected]>