Skip to main content

1700. gopy end-to-end test suite porting plan

Checklist

Infrastructure (gates the panel work below):

  • MANIFEST: test/cpython/MANIFEST.txt lists 447 entries (248 ready, 125 deferred, 66 out-of-scope, 8 done).
  • Harness: test/regrtest/ walks the manifest and shells out to the gopy binary per entry. Outcome buckets: pass / fail / skip / missing / timeout / error.
  • Unittest enablement (spec 1701). Required before any panel task can move past pending. See 1701 checklist for status.

Per-version panel tasks (each lands its slice of test/cpython/ and fixes the underlying gopy package on red):

  • v0.2.0 type panel (#479)
  • v0.3.0 exceptions panel (#485)
  • v0.4.0 number / string panel (#487)
  • v0.5.0 compile panel (#475)
  • v0.5.5 lexer panel (#484)
  • v0.7.0 lifecycle panel (#482)
  • v0.8.0 import panel (#481)
  • v0.9.0 vm tail panel (#483)
  • v0.10.0 gc panel (#474)
  • v0.10.1 language / stdlib panel (#486)
  • v0.10.2 parser panel (#476)
  • v0.11.0 specializer / monitor panel (#477)
  • v0.12.0 optimizer panel (#478)

Goal

Make CPython's behaviour-test panel the gopy gate. v0.0 through v0.12 shipped feature work and small per-package gates (v04test/, v05test/, v012test/), but the canonical CPython suite at /Users/apple/github/python/cpython/Lib/test/test_*.py was never wired up. This spec catalogs the full corpus (398 top-level test_*.py files plus 36 test_*/ packages), assigns each to the gopy release that owns the underlying feature, and tracks where the port currently stands.

The work this spec drives is mechanical: for every in-scope test module, run it through gopy, fix any divergence in the gopy package that owns the divergence, and pin the green run in CI. The test files themselves are imported verbatim from CPython 3.14 into a new test/cpython/ tree under the gopy module so future CPython upgrades can rebase via git diff.

The matching feature work has already shipped (v0.1 through v0.12). The remaining gap is observability: every shipped feature should be gated by the upstream test it was specified against, not just the package-local gate.

Sources of truth

CPython locationCountNotes
Lib/test/test_*.py398Flat module per test
Lib/test/test_*/36Package per test (sub-suites)
Lib/test/support/1Shared harness helpers
Lib/test/regrtest.py (driver)1Entry point; ported as test/regrtest/

Total: 434 test entry points to triage.

Package layout

test/
cpython/ verbatim Lib/test/ subset, one file or dir per entry
test_grammar.py imported from cpython unchanged
test_dis.py
...
support/ Lib/test/support/ helpers gopy needs
regrtest/ Lib/test/regrtest.py port; entry point
main.go picks up tests under test/cpython/, runs them via gopy
goldens/ reference outputs (dis listings, ast.dump, etc.)

The flat test/cpython/ mirror is intentional: test files stay byte-equal to CPython so diff against ~/github/python/cpython/Lib/test/ shows zero noise across CPython point releases.

test/regrtest/ ports the harness only enough to drive the test files we have ported. The gopy test/regrtest/run.go produces a report shape that lines up with CPython's so divergence is visible in CI.

Categorization

Every test_*.py file is assigned to one of the following categories. The category determines the gopy package that owns the work, the gopy release that ships the feature, and which existing package gate the file replaces.

Categorygopy package(s)Owning release
lexer/tokenizerparser/lexer/, tokenize/v0.5.5, v0.9
parser/grammar/astparser/, ast/v0.5.5, v0.10.2
compile/codegencompile/, ast/v0.5, v0.10.2
bytecode/discompile/, dis/v0.5
vm/eval loopvm/, frame/, stackref/, eval/v0.6, v0.9
builtins/typesbuiltins/, objects/v0.2, v0.4, v0.7
classes/descr/methodsobjects/type.go, objects/descr*v0.2, v0.10.1
iterators/generatorsobjects/iter*, vm/eval_gen.gov0.9
exceptions/tracebackerrors/, traceback/v0.3
modules/importsimp/, importlib/v0.8, v0.10.1
gcgc/v0.3, v0.10
codecs/encodingscodecs/v0.8
io/bufferio/, objects/file.gov0.10.1
collections/containersobjects/, collections/v0.2, v0.4
math/numberspystrconv/, pymath/, objects/long.gov0.4
typingtyping/v0.10.1
context/contextvarscontext/, hamt/v0.9
logging/warningswarnings/, logging/v0.7, v0.10.1
cli/REPLcmd/gopy, pythonrun/, myreadline/v0.7, v0.10.1
optimizer/specializerspecialize/, optimizer/, monitoring/v0.11, v0.12
stdlib (data formats)marshal/, json/, pickle/v0.8, deferred
stdlib (utilities)variousdeferred (post-1.0)
out-of-scopen/an/a (CPython-impl-specific)

Status legend

MarkMeaning
doneAlready runs green against the gopy package; needs to be wired into test/cpython/ and CI
readyUnderlying feature has shipped; test file just needs to be imported and pinned
pendingFeature has shipped but test file has known divergences that need fixing
deferredFeature has not shipped yet (post-v0.12 work); test stays out-of-tree until the feature ships
out-of-scopeCPython-implementation-specific or platform-specific; will not port

The triage table below sets each test's initial mark. The mark moves to done only after the file lives under test/cpython/, runs green in go test ./test/..., and the relevant CI workflow lights up.

Test file triage

The table below covers every file directly under /Users/apple/github/python/cpython/Lib/test/. The Owner column names the gopy release that owns the feature and therefore owns the port; for features that span multiple releases (e.g. test_compile.py covers v0.5 codegen plus v0.10.1 __build_class__) the latest covering release is named.

Lexer / tokenizer (5 files)

TestOwnerMarkNotes
test_tokenizev0.9readytokenize.Iter graduated to real lexer in v0.9
test_tabnannyv0.9readyrides on tokenize.Iter
test_source_encodingv0.5.5readyparser/lexer encoding detection
test_utf8sourcev0.5.5readyparser/lexer utf-8 default
test_keywordv0.5.5readykeyword module is a generated table

Parser / grammar / AST (27 files + test_ast/, test_future_stmt/, test_peg_generator/)

TestOwnerMarkNotes
test_grammarv0.10.2doneAlready pinned in v0.10.2 release notes
test_syntaxv0.10.2readyparser/errors panel
test_eofv0.10.2readyEOF / continuation handling in parser
test_fstringv0.10.2readyPEP 701 f-strings
test_tstringv0.10.2readyPEP 750 t-strings
test_named_expressionsv0.10.2readywalrus parser/codegen
test_unparsev0.5readyast/unparse.go
test_asdl_parserv0.5readyast/asdl.go
test_pep646_syntaxv0.10.2readystarred type-param syntax
test_type_paramsv0.10.2readyPEP 695 type parameters
test_type_aliasesv0.10.2readytype Foo = ...
test_type_annotationsv0.10.2readyannotation lowering
test_type_commentsv0.10.2readyparser type-comment mode
test_annotationlibv0.10.1readyannotation lazy resolver
test_string_literalsv0.10.2readystring parser corner cases
test_int_literalv0.4readyint parsing in pystrconv
test_unicode_identifiersv0.10.2readyNFKC identifier normalization
test_patmav0.9readyPEP 634 pattern matching
test_decoratorsv0.5readydecorator codegen
test_globalv0.5readysymtable global / nonlocal
test_scopev0.5readysymtable scoping
test_keywordonlyargv0.5readyparser kw-only args
test_positional_only_argv0.5readyparser pos-only args
test_unpackv0.5readytuple unpack codegen
test_unpack_exv0.5readystarred unpack
test_metaclassv0.10.1readybuild_class + type creation
test_subclassinitv0.10.1readyinit_subclass hook
test_ast/ (dir)v0.10.2readyfull ast.dump panel
test_future_stmt/ (dir)v0.5readyfuture flag plumbing
test_peg_generator/ (dir)v0.5.5deferredtools/parser_gen still WIP

Compile / codegen (36 files)

TestOwnerMarkNotes
test_compilev0.10.1readyfull compile() builtin panel
test_compileallv0.10.1readyneeds py_compile + filesystem walk
test_compiler_assemblev0.5donegated in v05test
test_compiler_codegenv0.5donegated in v05test
test_codeopv0.10.1readycodeop on top of compile()
test_peepholerv0.5readyflowgraph optimization panel
test_disv0.5donegated via golden corpus in v05test
test_opcodesv0.5readybytecode opcode table
test_generated_casesv0.12readytools/uops_gen panel
test__opcodev0.5ready_opcode module surface
test_codev0.5readyCode object reflection
test_code_modulev0.10.1readycode module (REPL helper)
test_codeccallbacksv0.8readycodecs error-callback registry
test_codecencodings_cnv0.8deferredCJK codecs not shipped
test_codecencodings_hkv0.8deferredCJK codecs not shipped
test_codecencodings_iso2022v0.8deferrediso2022 codecs not shipped
test_codecencodings_jpv0.8deferredCJK codecs not shipped
test_codecencodings_krv0.8deferredCJK codecs not shipped
test_codecencodings_twv0.8deferredCJK codecs not shipped
test_codecmaps_cnv0.8deferredCJK codec maps
test_codecmaps_hkv0.8deferredCJK codec maps
test_codecmaps_jpv0.8deferredCJK codec maps
test_codecmaps_krv0.8deferredCJK codec maps
test_codecmaps_twv0.8deferredCJK codec maps
test_codecsv0.8readyutf-8 / ascii / latin-1 panel
test_charmapcodecv0.8deferredcharmap codec not shipped
test_multibytecodecv0.8deferredmultibyte codec base class
test_clinicv0.5out-of-scopeCPython tooling, not a runtime feature
test_dictcompsv0.5readydict comprehension codegen
test_listcompsv0.5readylist comprehension codegen
test_setcompsv0.5readyset comprehension codegen
test_genexpsv0.9readygenerator expressions
test_lltracev0.6out-of-scopelow-level dispatch trace, build-time
test_thread_local_bytecodev0.11deferredper-thread quickening (post-v0.12)
test_printv0.7readyprint() builtin
test_formatv0.4donegated in v04test

VM / eval loop (22 files)

TestOwnerMarkNotes
test_callv0.9readyCALL / KW_NAMES family
test_extcallv0.9readyextended call (* and ** expansion)
test_framev0.9readyframe object surface
test_evalv0.10.1readyeval() builtin
test_dynamicv0.7readyexec/eval against frame.f_locals
test_richcmpv0.2readyrich comparison protocol
test_comparev0.2readycomparison fallbacks
test_unaryv0.4readyunary number ops
test_powv0.4readybuiltin pow()
test_augassignv0.5readyaugassign codegen
test_withv0.9readycontext manager; with statement
test_yield_fromv0.9readyyield from semantics
test_coroutinesv0.9readyasync def + await codegen
test_asyncgenv0.9readyasync generators
test_generator_stopv0.9readyPEP 479
test_generatorsv0.9readygenerator protocol panel
test_iterv0.2readyiter()/next() builtins
test_iterlenv0.2readylength_hint
test_containsv0.2readycontains protocol
test_indexv0.4readyindex protocol
test_isinstancev0.2readyisinstance() panel
test_typechecksv0.2readytype-check fast paths

Exceptions / traceback (8 files)

TestOwnerMarkNotes
test_exceptionsv0.3readyfull exception type panel
test_baseexceptionv0.3readyBaseException root
test_exception_hierarchyv0.3readyMRO of builtin exceptions
test_exception_variationsv0.3readyexcept / except* shapes
test_exception_groupv0.3readyPEP 654 exception groups
test_except_starv0.3readyexcept* syntax
test_tracebackv0.3readytraceback module
test_raisev0.3readyraise / raise from semantics

Builtins / types (28 files)

TestOwnerMarkNotes
test_builtinv0.7readyfull builtins module surface
test_intv0.2readyint type + small-int cache
test_longv0.2readyunbounded int (long) panel
test_floatv0.4readyfloat parse / format / arithmetic
test_complexv0.4readycomplex literal + arithmetic
test_boolv0.2readybool subclass of int
test_bytesv0.4readybytes immutable buffer
test_strv0.4readystr (PEP 393 unicode)
test_unicodedatav0.4readyunicodedata data tables
test_ucnv0.4ready\N{NAME} resolver
test_unicode_filev0.10.1readyfilesystem unicode path
test_unicode_file_functionsv0.10.1readyos path unicode
test_listv0.2readylist type panel
test_tuplev0.2readytuple type panel
test_dictv0.2readydict type panel
test_dictviewsv0.2readydict_keys / dict_values / dict_items
test_setv0.4readyset / frozenset panel
test_rangev0.2readyrange type
test_slicev0.2readyslice type
test_memoryviewv0.4readymemoryview surface
test_bufferv0.4out-of-scopeC-level buffer protocol API
test_funcattrsv0.5readyfunction attribute panel
test_propertyv0.10.1readyproperty descriptor
test_strtodv0.4donegated implicitly via test_float
test_numeric_towerv0.4readynumbers ABC tower
test_abstract_numbersv0.4readynumbers module
test_userdictv0.10.1readyUserDict subclassing
test_userlistv0.10.1readyUserList subclassing
test_userstringv0.10.1readyUserString subclassing
test_structseqv0.7readynamed-tuple style structseq

Classes / descriptors / methods (12 files)

TestOwnerMarkNotes
test_classv0.10.1readybuild_class panel
test_descrv0.10.1readydescriptors / slots / methods
test_descrtutv0.10.1readydescriptor tutorial doctest
test_superv0.10.1readysuper() resolution
test_dynamicclassattributev0.10.1readyDynamicClassAttribute
test_genericaliasv0.10.1readybuiltin class_getitem
test_genericclassv0.10.1readytyping.Generic plumbing
test_type_cachev0.11readytype version cache (specializer)
test_typesv0.2readytypes module
test_abcv0.10.1readyabc module + ABCMeta
test_enumv0.10.1readyenum module
test_typingv0.10.1readytyping module surface

Iterators / generators / coroutines (covered above under VM)

Modules / imports (12 files + test_import/, test_importlib/, test_module/)

TestOwnerMarkNotes
test__interpchannelsv0.7deferredPEP 554 interpreters - post-v0.12
test__interpretersv0.7deferredPEP 554 interpreters - post-v0.12
test_modulev0.7readymodule type
test_modulefinderv0.8readymodulefinder utility
test_pkgv0.8readypackage-style imports
test_pkgutilv0.8readypkgutil walk_packages etc
test_pyclbrv0.8readypyclbr class browser
test_pkgimportv0.8ready(covered by test_import/)
test_runpyv0.10.1readyrunpy for gopy -m
test_zipimportv0.8deferredzipimport not shipped
test_zipimport_supportv0.8deferredzipimport not shipped
test_zipappv0.8deferredzipapp not shipped
test_frozenv0.8readyfrozen module flag in marshal
test_import/ (dir)v0.8readyfull import system panel
test_importlib/ (dir)v0.8readyimportlib package
test_module/ (dir)v0.7readymodule-level fixtures

GC (3 files + test_free_threading/)

TestOwnerMarkNotes
test_gcv0.10readyfull cycle collector panel
test_weakrefv0.10readyweakref + finalizer queue
test_finalizationv0.10readyPEP 442 finalizers
test_free_threading/ (dir)v0.10deferredPEP 703 free threading - post-v0.12

Math / numbers (7 files + test_decimal/)

TestOwnerMarkNotes
test_mathv0.4readymath module
test_math_propertyv0.4readymath hypothesis-style
test_cmathv0.4readycmath module
test_decimalv0.4deferreddecimal not shipped
test_fractionsv0.4readyfractions module
test_randomv0.7readyrandom module
test_statisticsv0.4readystatistics module
test_binopv0.4readybinary number ops

Datetime / time (5 files + test_zoneinfo/)

TestOwnerMarkNotes
test_datetimev0.9readydatetime module on top of pytime
test_timev0.9readytime module
test_calendarv0.9readycalendar module
test_strftimev0.9readystrftime parity
test_strptimev0.9readystrptime parity
test_zoneinfo/ (dir)v0.9deferredzoneinfo TZ db, post-v0.12

Collections / containers (11 files)

TestOwnerMarkNotes
test_collectionsv0.10.1readycollections module
test_arrayv0.10.1readyarray module
test_heapqv0.10.1readyheapq module
test_bisectv0.10.1readybisect module
test_queuev0.10.1readyqueue module
test_dequev0.10.1readycollections.deque
test_ordered_dictv0.2readydict insertion order
test_defaultdictv0.10.1readycollections.defaultdict
test_weaksetv0.10readyWeakSet on weakref
test_graphlibv0.10.1readygraphlib topological sort
test_enumeratev0.7readyenumerate() builtin

Itertools / functools (6 files)

TestOwnerMarkNotes
test_itertoolsv0.10.1readyitertools module
test_functoolsv0.10.1readyfunctools module
test_operatorv0.10.1readyoperator module
test_contextlibv0.10.1readycontextlib module
test_contextlib_asyncv0.10.1readycontextlib async helpers
test_reprlibv0.10.1readyreprlib module

Codecs / encodings (covered above under compile/codegen)

IO / buffer (8 files)

TestOwnerMarkNotes
test_iov0.10.1readyio module on top of objects.File
test_filev0.10.1readyfile builtin
test_fileiov0.10.1readyFileIO low-level
test_file_eintrv0.10.1readyEINTR retry
test_memoryiov0.10.1readyBytesIO / StringIO
test_bufiov0.10.1readyBufferedReader
test_largefilev0.10.1deferredneeds > 4 GiB filesystem
test_univnewlinesv0.10.1readyuniversal newline mode

Filesystem / path (15 files + test_pathlib/)

TestOwnerMarkNotes
test_pathlib/ (dir)v0.10.1readypathlib module
test_osv0.10.1readyos module
test_posixv0.10.1readyposix module
test_posixpathv0.10.1readyposixpath module
test_ntpathv0.10.1readyntpath module
test_genericpathv0.10.1readyshared os.path helpers
test_globv0.10.1readyglob module
test_fnmatchv0.10.1readyfnmatch module
test_shutilv0.10.1readyshutil module
test_tempfilev0.10.1readytempfile module
test_filecmpv0.10.1readyfilecmp module
test_fileinputv0.10.1readyfileinput module
test_fileutilsv0.10.1deferredC-level filesystem path helpers
test_statv0.10.1readystat module
test_mmapv0.10.1deferredmmap module not shipped
test_nturl2pathv0.10.1deferredwindows-only

Hash / random (3 files)

TestOwnerMarkNotes
test_hashv0.4readyhash() builtin under SipHash
test_hashlibv0.4deferredhashlib not shipped
test_hmacv0.4deferredhmac not shipped
test_secretsv0.7deferredsecrets not shipped

Profiling / tracing (12 files)

TestOwnerMarkNotes
test_sys_setprofilev0.11readysys.setprofile under monitor
test_sys_settracev0.11readysys.settrace under monitor
test_monitoringv0.11donegated indirectly via v012test
test_lltracev0.6out-of-scopelow-level dispatch trace
test_perf_profilerv0.11out-of-scopeperf integration not portable
test_tracemallocv0.11deferredtracemalloc not shipped
test_tracev0.11readytrace module on top of monitor
test_profilev0.11readyprofile module
test_cprofilev0.11deferredcProfile (C accelerator)
test_pstatsv0.11readypstats reader
test_optimizerv0.12donegated via v012test
test_opcachev0.11donegated via v012test

Logging / warnings (2 files + test_warnings/)

TestOwnerMarkNotes
test_loggingv0.10.1readylogging module
test_warnings/ (dir)v0.7ready_warnings module
test_fluflv0.7readyfuture barry_as_FLUFL

Cli / REPL (1 file + test_pyrepl/)

TestOwnerMarkNotes
test_replv0.7readybasic REPL gate
test_pyrepl/ (dir)v0.10.1deferredpyrepl line editor
test_cmdv0.7readycmd module (REPL framework)
test_cmd_linev0.7readycmd-line argument panel
test_cmd_line_scriptv0.7readygopy script.py invocation
test_code_modulev0.10.1readycode module
test_codeopv0.10.1readycodeop module
test_rlcompleterv0.10.1deferredreadline integration
test_readlinev0.10.1deferredreadline integration
test_runpyv0.10.1readyrunpy module (gopy -m)
test_argparsev0.10.1readyargparse module
test_optparsev0.10.1readyoptparse module (deprecated but tested)
test_getoptv0.9readygetopt module
test_keywordv0.5.5readykeyword module
test_tokenv0.9readytoken module

Distutils / packaging / venv (3 files + test_tools/)

TestOwnerMarkNotes
test_venvv0.10.1deferredvenv depends on filesystem layout
test_ensurepipv0.10.1deferredpip bundling
test_sysconfigv0.10.1readysysconfig (gopy build flags)
test_tools/ (dir)n/aout-of-scopetools shipped with CPython only

Stdlib data formats (32 files + test_email/, test_json/, test_zipfile/, test_tomllib/)

TestOwnerMarkNotes
test_marshalv0.8readymarshal module (PEP 552)
test_picklev0.8deferredpickle not shipped
test_picklebufferv0.8deferredpickle not shipped
test_pickletoolsv0.8deferredpickle not shipped
test_xpicklev0.8deferredpickle cross-version
test_copyregv0.8deferredneeds pickle
test_copyv0.8readycopy / deepcopy on top of copy slot
test_structv0.8readystruct module
test_json/ (dir)v0.8deferredjson not shipped
test_csvv0.10.1deferredcsv not shipped
test_configparserv0.10.1deferredconfigparser not shipped
test_plistlibv0.10.1deferredplistlib not shipped
test_xml_etreev0.10.1deferredxml.etree not shipped
test_xml_etree_cv0.10.1deferredxml.etree.cElementTree
test_xml_dom_minicompatv0.10.1deferredxml.dom not shipped
test_xml_dom_xmlbuilderv0.10.1deferredxml.dom not shipped
test_minidomv0.10.1deferredxml.dom not shipped
test_pulldomv0.10.1deferredxml.dom not shipped
test_saxv0.10.1deferredxml.sax not shipped
test_pyexpatv0.10.1deferredneeds libexpat binding
test_xmlrpcv0.10.1deferredxmlrpc not shipped
test_docxmlrpcv0.10.1deferredxmlrpc not shipped
test_email/ (dir)v0.10.1deferredemail not shipped
test_zipfile/ (dir)v0.10.1deferredzipfile not shipped
test_zipfile64v0.10.1deferredzip64 not shipped
test_tarfilev0.10.1deferredtarfile not shipped
test_zlibv0.10.1deferredzlib not shipped
test_gzipv0.10.1deferredgzip not shipped
test_bz2v0.10.1deferredbz2 not shipped
test_lzmav0.10.1deferredlzma not shipped
test_zstdv0.10.1deferredzstd new in 3.14
test_htmlv0.10.1deferredhtml module
test_htmlparserv0.10.1deferredhtml.parser
test_quopriv0.10.1deferredquopri encoder
test_base64v0.10.1readybase64 module
test_binasciiv0.10.1readybinascii module
test_uuidv0.10.1readyuuid module
test_mimetypesv0.10.1readymimetypes module
test_tomllib/ (dir)v0.10.1deferredtomllib not shipped
test_shelvev0.10.1deferredshelve depends on dbm
test_dbmv0.10.1deferreddbm module
test_dbm_dumbv0.10.1deferreddbm.dumb
test_dbm_gnuv0.10.1deferreddbm.gnu
test_dbm_ndbmv0.10.1deferreddbm.ndbm
test_dbm_sqlite3v0.10.1deferredsqlite3-backed dbm
test_sqlite3/ (dir)v0.10.1deferredsqlite3 not shipped
test_textwrapv0.10.1readytextwrap module
test_string/ (dir)v0.10.1readystring module
test_stringprepv0.10.1readystringprep module
test_pprintv0.10.1readypprint module
test_difflibv0.10.1readydifflib module
test_shlexv0.10.1readyshlex module
test_dataclasses/ (dir)v0.10.1readydataclasses module
test_doctest/ (dir)v0.10.1readydoctest module
test_rev0.4deferredre module not shipped
test_ipaddressv0.10.1readyipaddress module
test_localev0.7deferredlocale module
test__localev0.7deferred_locale module
test_colorsysv0.10.1readycolorsys module
test_typing/ (dir)v0.10.1ready(covered above)
test_inspect/ (dir)v0.10.1readyinspect module
test_linecachev0.7readylinecache module (used by traceback)
test_atexitv0.7readyatexit module
test_auditv0.7readysys.audit hook
test_sundryv0.7readysundry stdlib smoke
test_supportv0.7readytest.support smoke
test_unittest/ (dir)v0.10.1readyunittest framework
test_regrtestn/aout-of-scoperegrtest is the harness itself
test_script_helperv0.7readytest.support.script_helper

Networking (27 files - all deferred)

All networking tests defer to a future stdlib release. Listed for inventory completeness:

test_socket, test_socketserver, test_ssl, test_select, test_selectors, test_poll, test_devpoll, test_epoll, test_kqueue, test_smtplib, test_smtpnet, test_poplib, test_imaplib, test_ftplib, test_nntplib, test_httplib, test_httpservers, test_http_cookiejar, test_http_cookies, test_urllib, test_urllib2, test_urllib_response, test_urllib2_localnet, test_urllib2net, test_urllibnet, test_urlparse, test_robotparser, test_webbrowser, test_wsgiref, test_telnetlib, test_netrc.

Owner: post-v0.12. Mark: deferred.

Subprocess / multiprocessing / threading (8 + 4 dirs)

TestOwnerMarkNotes
test_threadingv0.7readythreading on top of pythread
test_threadv0.7ready_thread module
test_threading_localv0.7readythread-local
test_threadedtempfilev0.10.1readytempfile under threads
test_threadsignalsv0.10.1readysignal-from-thread
test_thread_local_bytecodev0.11deferredper-thread quickening
test_subprocessv0.10.1deferredsubprocess module
test_concurrent_futures/ (dir)v0.10.1deferredconcurrent.futures
test_multiprocessing_main_handlingv0.10.1deferredmultiprocessing not shipped
test_multiprocessing_fork/ (dir)v0.10.1deferredmultiprocessing fork start method
test_multiprocessing_forkserver/ (dir)v0.10.1deferredmultiprocessing forkserver
test_multiprocessing_spawn/ (dir)v0.10.1deferredmultiprocessing spawn
test_fork1v0.10.1deferredos.fork tests
test_wait3v0.10.1deferredos.wait3
test_wait4v0.10.1deferredos.wait4
test_popenv0.10.1deferredos.popen
test_signalv0.10.1readysignal module
test_eintrv0.10.1readyEINTR handling

asyncio (1 dir)

TestOwnerMarkNotes
test_asyncio/ (dir)v0.9deferredasyncio package on top of v0.9 coroutines

Out-of-scope (CPython-implementation-specific, 21 files + test_capi/, test_cext/, test_cppext/, test_ctypes/, test_gdb/)

These tests target CPython internals (C-API, ctypes, gdb integration, free-threading build, embedding) or platform-specific shells that gopy will never carry. They are listed for completeness but stay out-of-tree.

TestReason
test_capi/ (dir)C-API surface; gopy is pure Go
test_cext/ (dir)C extensions; gopy uses Go cgo or pure Go
test_cppext/ (dir)C++ extensions
test_ctypes/ (dir)ctypes; defer to gopy/ctypes if ever
test_gdb/ (dir)gdb integration; not portable
test_dtracedtrace probes
test_embedC embedding API
test_external_inspectiongdb-based
test_faulthandlerC signal handler
test_gettextgettext locale strings
test_msvcrtwindows-only
test_winapiwindows-only
test_winconsoleiowindows-only
test_winregwindows-only
test_winsoundwindows-only
test_startfilewindows-only
test_androidandroid-only
test_appleapple-only
test_cursescurses (terminal UI)
test_tcltk/tcl GUI
test_tkinter/ (dir)tk/tcl GUI
test_ttk_textonlytk/tcl GUI
test_ttk/ (dir)tk/tcl GUI
test_idleidle (tk-based IDE)
test_turtleturtle (tk-based)
test_pdbpdb debugger
test_remote_pdbpdb remote
test_bdbbdb (pdb dependency)
test_perfmapsperf integration
test_utf8_mode-X utf8 mode (build flag)
test_c_locale_coercionC-locale coercion (build flag)
test_osx_envapple-only
test_build_detailsCPython build manifest
test_stable_abi_ctypesC ABI surface
test_xxlimitedlimited C-API smoke
test_xxtestfuzzC fuzz harness
test__osx_supportapple-only
test_resourcerlimit (POSIX-only, CPython-internal)
test_grpgrp module (POSIX-only, niche)
test_pwdpwd module (POSIX-only, niche)
test_ptypty module (POSIX-only, niche)
test_ttytty module (POSIX-only, niche)
test_termiostermios (POSIX-only, niche)
test_fcntlfcntl (POSIX-only)
test_ioctlioctl (POSIX-only)
test_openptyopenpty (POSIX-only)
test_resourcerlimit (POSIX-only)
test_syslogsyslog (POSIX-only, niche)
test_getpathC-level getpath
test_getpassgetpass module
test_imghdrimghdr (3.13 deprecated; removed 3.14?)
test_mailboxmailbox module
test_audioopaudioop (deprecated 3.13)
test_sndhdrsndhdr (deprecated 3.13)
test_aifcaifc (deprecated 3.13)
test_wavewave module (deprecated 3.13)
test_chunkchunk module (deprecated 3.13)
test_cgicgi (deprecated 3.13)
test_cgitbcgitb (deprecated 3.13)
test_gettextgettext locale strings
test_auditsys.audit (kept; listed earlier)
test_schedsched module
test_timeittimeit module
test_timeoutsocket timeout (with networking)
test_platformplatform module
test_platform_supportplatform support
test_sitesite module
test_sysconfigsysconfig (kept; listed earlier)
test_syssys module (kept under v0.7)
test_typingtyping (kept under v0.10.1)
test__colorize_colorize internal
test_rlcompleterreadline (kept; listed earlier)
test_doctestdoctest (kept; listed earlier)
test_difflibdifflib (kept; listed earlier)
test_pprintpprint (kept; listed earlier)
test_textwraptextwrap (kept; listed earlier)
test_stringstring (kept; listed earlier)
test_stringprepstringprep (kept; listed earlier)
test_xxlimitedlimited C-API smoke
test_clinicargument clinic (build tool)

(The "out-of-scope" list above also lists tests that are kept under other categories. The kept-under-x line is the authoritative one.)

Per-version porting tasks

The follow-up tasks are tracked in the project's task list. One task per gopy version groups every ready test file for that version. The version task is "done" when every ready file under it lives under test/cpython/ and runs green; deferred and out-of-scope files are explicitly excluded.

test e2e v0.2.0: type panel: int, long, float, bool, list, tuple,
dict, dictviews, set, range, slice, iter, contains,
isinstance, ordered_dict, types, richcmp, compare
test e2e v0.3.0: exceptions panel: exceptions, baseexception,
exception_hierarchy, exception_variations,
exception_group, except_star, traceback, raise
test e2e v0.4.0: number / string panel: int_literal, hash, format,
float, complex, bytes, str, unicodedata, ucn,
memoryview, math, math_property, cmath, fractions,
statistics, binop, numeric_tower, abstract_numbers,
unary, pow, index, strtod
test e2e v0.5.0: compile panel: compiler_assemble, compiler_codegen,
dis, opcodes, _opcode, code, peepholer,
decorators, global, scope, keywordonlyarg,
positional_only_arg, unpack, unpack_ex, augassign,
dictcomps, listcomps, setcomps, asdl_parser,
unparse, funcattrs, future_stmt
test e2e v0.5.5: lexer panel: source_encoding, utf8source, keyword
test e2e v0.7.0: lifecycle panel: builtin, repl, cmd, cmd_line,
cmd_line_script, atexit, audit, dynamic, enumerate,
flufl, linecache, module, print, structseq, sundry,
support, sys, warnings, threading, thread,
threading_local, script_helper
test e2e v0.8.0: import panel: import, importlib, marshal, copy,
struct, modulefinder, pkg, pkgutil, pyclbr,
pkgimport, codecs, codeccallbacks, frozen
test e2e v0.9.0: vm tail panel: with, yield_from, generators,
generator_stop, genexps, coroutines, asyncgen, call,
extcall, frame, patma, datetime, time, calendar,
strftime, strptime, getopt, token, tokenize,
tabnanny
test e2e v0.10.0: gc panel: gc, weakref, finalization, weakset
test e2e v0.10.1: language / stdlib panel: class, descr, descrtut,
super, dynamicclassattribute, genericalias,
genericclass, abc, enum, typing, metaclass,
subclassinit, property, userdict, userlist,
userstring, compile, compileall, codeop,
code_module, eval, runpy, io, file, fileio,
file_eintr, memoryio, bufio, univnewlines,
pathlib, os, posix, posixpath, ntpath,
genericpath, glob, fnmatch, shutil, tempfile,
filecmp, fileinput, stat, sysconfig, signal,
eintr, threadedtempfile, threadsignals,
collections, array, heapq, bisect, queue,
deque, defaultdict, graphlib, itertools,
functools, operator, contextlib,
contextlib_async, reprlib, base64, binascii,
uuid, mimetypes, textwrap, string,
stringprep, pprint, difflib, shlex,
dataclasses, doctest, ipaddress, colorsys,
inspect, logging, argparse, optparse,
annotationlib, type_aliases,
type_annotations, type_comments, type_params,
pep646_syntax, named_expressions,
unicode_identifiers, fstring, tstring,
string_literals, unicode_file,
unicode_file_functions, unittest
test e2e v0.10.2: parser panel: grammar (done), syntax, eof, ast,
peg_generator (deferred until tools/parser_gen)
test e2e v0.11.0: specializer / monitor panel: monitoring,
sys_setprofile, sys_settrace, trace, profile,
pstats, type_cache, opcache
test e2e v0.12.0: optimizer panel: optimizer, generated_cases

Out-of-tree mirror

test/cpython/ is meant to be a verbatim git mirror of the relevant Lib/test/ files. To keep that contract:

  • Each ported file lands at the same relative path it has in CPython (e.g. Lib/test/test_grammar.py becomes test/cpython/test_grammar.py).
  • The file content is byte-identical to the upstream copy at the CPython 3.14 tag we target. Local edits go in a sibling test/cpython/_overrides/ file that the test runner applies before invoking the test.
  • A vendored copy of Lib/test/support/ lands under test/cpython/support/ with the same byte-equality contract.
  • A small test/regrtest/run.go walks test/cpython/ and invokes each test under a gopy-driven unittest runner. Skips, deferrals, and out-of-scope markers are read from test/cpython/MANIFEST.txt, the single source of truth for the triage status above.

Workflow

  1. Pick the smallest ready test for the active gopy version.
  2. Copy the test file from ~/github/python/cpython/Lib/test/ into test/cpython/.
  3. Run go test ./test/regrtest/... -run TheTest.
  4. If green, mark the manifest entry done, commit, move on.
  5. If red, fix the underlying gopy package; never edit the test file.
  6. If the test depends on a stdlib module that has not shipped, mark deferred in the manifest with a one-line reason and skip.

The work is intentionally repetitive; each landed test is one extra gate against future regressions.

Out of scope for this spec

  • Performance benchmarks. CPython's Tools/scripts/perf* and pyperformance integration are tracked separately.
  • The stdlib gap (json / pickle / re / hashlib / etc.). The triage above marks every test depending on a missing stdlib module as deferred. Closing that gap is a multi-release stdlib effort tracked under specs in the 1700-1799 series.
  • The test runner's own internal tests (test_regrtest.py, test_support.py). gopy has its own port of the harness; these files cover the CPython implementation we did not port.