Skip to content

Add re.compile to prelude to avoid crash on regex imports#512

Draft
joehendrix wants to merge 2 commits intomainfrom
jhx/pyspec_re
Draft

Add re.compile to prelude to avoid crash on regex imports#512
joehendrix wants to merge 2 commits intomainfrom
jhx/pyspec_re

Conversation

@joehendrix
Copy link
Contributor

Summary

  • Register re.compile as a known prelude identifier so that
    from re import compile resolves without trying to find a local
    re.py file.
  • The new botomoog-python inputs use from re import compile for regex
    pattern validation assertions. Without this change, 370 of 411 service
    files fail with re.py not found.
  • The compile(...) calls inside assert statements produce
    "unrecognized assert pattern" warnings, which is expected since regex
    matching isn't translated to specs.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@joehendrix joehendrix marked this pull request as draft March 3, 2026 23:27
Base automatically changed from jhx/pyspec_exceptions to main March 3, 2026 23:30
joehendrix and others added 2 commits March 4, 2026 15:10
Simplify dialect-loading by replacing the pure `preloaded` field with a
mutable `IO.Ref`, eliminating the need to thread `LoadedDialects` through
return types across every call site.

- Replace `DialectFileMap.preloaded` with `DialectFileMap.loaded : IO.Ref
  LoadedDialects`; add `new`, `getLoaded`, `modifyLoaded` helpers
- Remove the `LoadedDialects` element from return tuples in the mutual
  block (`loadDialectFromIonFragment`, `loadDialectFromPath`,
  `loadDialectRec`, `elabDialectRest`) and public wrappers (`loadDialect`,
  `elabDialect`)
- Remove `DialectState.loaded` field; add `getLoadedDialects` helper in
  `DialectM` that reads directly from `DialectContext.loadedRef`,
  eliminating the sync pattern and stale-snapshot risk
- Simplify `LoadDialectCallback` from
  `LoadedDialects → DialectName → BaseIO (LoadedDialects × Except ...)`
  to `DialectName → BaseIO (Except ...)`
- Simplify `readStrataText`, `readStrataIon`, `readFile` return types in
  Util/IO and SimpleAPI from `IO (LoadedDialects × ...)` to `IO ...`
- Make `loadDialectFromPath` private; add public `loadDialectFromFile`
  wrapper for the `#load_dialect` call site in HashCommands
- Extract `readDialectTextfileHeader` from the mutual block for header
  parsing; inline `readDialectTextfile` body into `loadDialectFromPath`
- Preload production dialects (Core, Laurel, SMT, SMTCore, SMTResponse,
  smtReservedKeywordsDialect) in `buildDialectFileMap` alongside Python
  and PythonSpecs
- Change `DialectFileMap.ofDirs` to accept an `init` parameter and
  `addEntry` to preserve existing map fields with `{ m with ... }`
- Fix `printCommand` to use `exitFailure` instead of silent return on
  internal error
- Fix line lengths and complete truncated `DialectFileMap` docstring

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add re.compile to prelude so `from re import compile` resolves
- Thread eventSet through PySpecContext for structured logging
- Add --skip flag to pySpecs to skip top-level definitions while
  preserving @overload signatures
- Register imported names as opaque extern types when module resolution
  fails, preventing downstream unknown-identifier errors
- Skip body processing for overload stubs whose body is `...`

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant