feat: indie status page MVP -- FastAPI + SQLite
- 8 DB models (services, incidents, monitors, subscribers, etc.) - Full CRUD API for services, incidents, monitors - Public status page with live data - Incident detail page with timeline - API key authentication - Uptime monitoring scheduler - 13 tests passing - TECHNICAL_DESIGN.md with full spec
This commit is contained in:
commit
902133edd3
4655 changed files with 1342691 additions and 0 deletions
35
venv/lib/python3.11/site-packages/mypyc/transform/lower.py
Normal file
35
venv/lib/python3.11/site-packages/mypyc/transform/lower.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
"""Transform IR to lower-level ops.
|
||||
|
||||
Higher-level ops are used in earlier compiler passes, as they make
|
||||
various analyses, optimizations and transforms easier to implement.
|
||||
Later passes use lower-level ops, as they are easier to generate code
|
||||
from, and they help with lower-level optimizations.
|
||||
|
||||
Lowering of various primitive ops is implemented in the mypyc.lower
|
||||
package.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from mypyc.ir.func_ir import FuncIR
|
||||
from mypyc.ir.ops import PrimitiveOp, Value
|
||||
from mypyc.irbuild.ll_builder import LowLevelIRBuilder
|
||||
from mypyc.lower.registry import lowering_registry
|
||||
from mypyc.options import CompilerOptions
|
||||
from mypyc.transform.ir_transform import IRTransform
|
||||
|
||||
|
||||
def lower_ir(ir: FuncIR, options: CompilerOptions) -> None:
|
||||
builder = LowLevelIRBuilder(None, options)
|
||||
visitor = LoweringVisitor(builder)
|
||||
visitor.transform_blocks(ir.blocks)
|
||||
ir.blocks = builder.blocks
|
||||
|
||||
|
||||
class LoweringVisitor(IRTransform):
|
||||
def visit_primitive_op(self, op: PrimitiveOp) -> Value | None:
|
||||
# The lowering implementation functions of various primitive ops are stored
|
||||
# in a registry, which is populated using function decorators. The name
|
||||
# of op (such as "int_eq") is used as the key.
|
||||
lower_fn = lowering_registry[op.desc.name]
|
||||
return lower_fn(self.builder, op.args, op.line)
|
||||
Loading…
Add table
Add a link
Reference in a new issue