Repository navigation
Conversation
Rewrite the statements and examples in paper.md that no longer match the released code, add the parts of 0.2.x the paper did not mention (SourceDocument, path factoring, PythonSourceLiteral, the round-trip test), and point two bibliography URLs at the repositories' current locations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings
paper.mdin line with the code at v0.2.1 (4495224, which is alsomain). No library code changes. Paths below are undersrc/pycodify/unless they start withtests/oropenhcs/. Nothing was executed: no environment was created and neither the library nor its tests were run. Every name, import and call signature in the code examples was checked by reading the source (Assignmentcore.py:100,generate_python_source(obj, header, clean_mode)core.py:174,SourceFormattercore.py:115 with abstractcan_format/format:131-139,SourceFragment(code, imports)core.py:11,imported_name(module, qualname, context)core.py:60, all exported from__init__.py:3-19). The printed output in the Summary was derived by hand fromformatters.py:58-61, 96-99, 310-363,core.py:33-38andimports.py:19-27, 46-62; the examples were not run. The repository has noCHANGELOG.md, so the ledger rests on the source alone. Claims about OpenHCS were checked against the OpenHCS repository at6845c3a36.Claim ledger
exec()'d to recreate the original object"PipelineConfig(path_planning=..., dtype=DtypeConversion.PRESERVE_INPUT)) with two names imported on one linedtypefield on OpenHCS'sPipelineConfig. Replaced by a self-contained example with its call and derived outputstrare written as the builtin value; only importable callables are supportedrepr()produces code fragments but not complete programs"ast.unparseproduce[s] code fragments without imports"ast.unparsetakes a syntax tree, not a live objectast.unparsename_mappingsgenerate_python_sourcerenders more than once"from openhcs.core.config import PipelineConfig, PathPlanningConfigbeforefrom openhcs.constants import DtypeConversionPathPlanningConfig_1,PathPlanningConfig_2Config_alpha_sources). New example is the one the test assertsSourceFormatter"can_formatin descending priority; the first that accepts is used__init_subclass__EnumFormatterlistingimported_nameand handles combined flags)FractionFormatterwritten against the public APIinit=Falsefields are never writtenpyqt-reactor"SourceDocumentsubclasses. The codegen provider protocol is informbridge, not the GUI library, so the paper now only says the GUI is built onpyqt-reactivefrom_sourceFunctionStepformatterOpenHCSCallableFormatterlisting: rewritesskimage.filters.gaussiantoopenhcs.skimage.filters.gaussianget_function('<registry>:<key>'); any other function as a plain import. Listing removedobject.__getattribute__and_resolve_field_valueDataclassFormatterreads fields with plaingetattr; pycodify has no lazy-dataclass handling. RemovedNew statements
TypeErrorfor a value with no formatter or an object defined inside a function: formatters.py:90-291; core.py:69-73, 162; tests/test_round_trip.py:137-147.strare written as the builtin value: formatters.py:134, 137-157.from_sourcecallsexecat documents.py:51; README.md:51-53 says the same.path_root = Path(...),path_root / 'plate_A', relative paths and strings untouched): core.py:188-192; paths.py:57-116; tests/test_paths.py:38-106.PythonSourceLiteral: core.py:82-87; formatters.py:80-87.SourceDocument: documents.py:14-65; tests/test_documents.py:19-47.For the owner
FractionFormatterexample were checked by reading only.CallableFormatter.can_formataccepts any function (formatters.py:166). A lambda defined at module level has__qualname__ == '<lambda>', which has no<locals>, soimported_name(core.py:69-79) emits<lambda>andfrom module import <lambda>. The paper says only what is supported; the code should probably reject this case.Configfroma.b_cand froma_b.cboth getConfig_a_b_c(imports.py:9-10). Collisions are also detected only among imports, not against assignment names or the generatedpath_root/path_Nbindings. Not stated in the paper either way.functools.partial, and instances of ordinary (non-dataclass) classes without a formatter.6845c3a36. I did not trace the GUI edit-and-reload path end to end; I confirmed the render side (OpenHCSCodegenProvider) and thefrom_sourcecodecs exist.PipelineConfig(dtype=...). I replaced them instead of repairing them because I could not confirm those field names in OpenHCS today.openhcsURLgithub.com/trissim/openhcsbecamegithub.com/OpenHCSDev/openhcs, andpyqtreactorURLgithub.com/OpenHCSDev/PyQT-reactorbecamegithub.com/OpenHCSDev/PyQT-reactivewith the title prefix changed topyqt-reactive(both old URLs redirect there pergh api; OpenHCS depends onpyqt-reactive>=0.7.2). The citation key is unchanged. No entries added or removed. Five entries were already uncited (pep557,repr,mcilroy1976mass,json,pep484) and still are.date: 13 January 2026.wc -w paper.md): 886 before, 1013 after (14% over). The increase is the Documents and path-factoring material, which the old paper did not cover.🤖 Generated with Claude Code