Pydantic Models

This document describes all Pydantic models used for request/response validation in the API.

Pydantic models for the Analytic Continuation Server API.

This module contains all request/response models organized by domain: - Transform models: coordinate transformation requests - Meromorphic models: function building from zeros/poles - Laurent models: Laurent series fitting and inversion - Session models: session management and progress tracking - WebGL models: WebGL-friendly data formats for rendering

class analytic_continuation_server.models.PointModel(**data)[source]

Bases: BaseModel

A 2D point with optional index.

Parameters:
x: float
y: float
index: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ComplexModel(**data)[source]

Bases: BaseModel

Complex number representation.

Parameters:
re: float
im: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.TransformParamsModel(**data)[source]

Bases: BaseModel

Transform parameters for screen/logical coordinate conversion.

Parameters:
offset_x: float
offset_y: float
scale_x: float
scale_y: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ViewBoundsModel(**data)[source]

Bases: BaseModel

Define transform by screen size and logical view bounds.

Parameters:
screen_width: float
screen_height: float
logical_x_min: float
logical_x_max: float
logical_y_min: float
logical_y_max: float
uniform: bool
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.SingularityModel(**data)[source]

Bases: BaseModel

A zero or pole location with optional multiplicity.

Parameters:
x: float
y: float
multiplicity: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.SplineParametersModel(**data)[source]

Bases: BaseModel

Spline drawing parameters.

Parameters:
tension: float
adaptiveTolerance: float
minDistance: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.SplineExportModel(**data)[source]

Bases: BaseModel

Complete spline export data structure.

Parameters:
version: str
timestamp: str
closed: bool
parameters: SplineParametersModel
controlPoints: List[PointModel]
spline: List[PointModel]
adaptivePolyline: List[PointModel]
stats: dict | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.TransformPointRequest(**data)[source]

Bases: BaseModel

Request to transform a single point.

Parameters:
point: PointModel
params: TransformParamsModel
direction: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.TransformPointsRequest(**data)[source]

Bases: BaseModel

Request to transform multiple points.

Parameters:
points: List[PointModel]
params: TransformParamsModel
direction: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.TransformSplineExportRequest(**data)[source]

Bases: BaseModel

Request to transform a full spline export.

Parameters:
export: SplineExportModel
params: TransformParamsModel
direction: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ZoomRequest(**data)[source]

Bases: BaseModel

Request to apply zoom to transform parameters.

Parameters:
params: TransformParamsModel
factor: float
center_x: float | None
center_y: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.PanRequest(**data)[source]

Bases: BaseModel

Request to apply pan to transform parameters.

Parameters:
params: TransformParamsModel
delta_x: float
delta_y: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.DomainColorRequest(**data)[source]

Bases: BaseModel

Request for domain coloring image generation.

Parameters:
expression: str
x_range: Tuple[float, float]
y_range: Tuple[float, float] | None
resolution: int
mode: str
mod_contours: bool
arg_contours: bool
show_legend: bool
dark_theme: bool
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ValidationRenderRequest(**data)[source]

Bases: BaseModel

Request for validation render with zeros/poles overlay.

Parameters:
expression: str
zeros: List[SingularityModel]
poles: List[SingularityModel]
x_range: Tuple[float, float]
y_range: Tuple[float, float] | None
resolution: int
mod_contours: bool
arg_contours: bool
curve_points: List[Dict[str, float]] | None
curve_color: str
curve_width: float
show_axis_ticks: bool
tick_interval: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.MeromorphicRequest(**data)[source]

Bases: BaseModel

Request to build a meromorphic function from zeros and poles.

Parameters:
zeros: List[SingularityModel]
poles: List[SingularityModel]
params: TransformParamsModel | None
coords: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.MeromorphicResponse(**data)[source]

Bases: BaseModel

Response with the built expression and logical coordinates.

Parameters:
expression: str
zeros: List[SingularityModel]
poles: List[SingularityModel]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.LaurentMapModel(**data)[source]

Bases: BaseModel

Serializable Laurent map.

Parameters:
N: int
a0: ComplexModel
a: List[ComplexModel]
b: List[ComplexModel]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.LaurentFitRequest(**data)[source]

Bases: BaseModel

Request to fit a Laurent map.

Parameters:
export: SplineExportModel
N_min: int
N_max: int
m_samples: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.LaurentFitResponse(**data)[source]

Bases: BaseModel

Response from Laurent fitting.

Parameters:
ok: bool
failure_reason: str | None
curve_scale: float
laurent_map: LaurentMapModel | None
fit_max_err: float
fit_rms_err: float
checks: dict
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.PoleModel(**data)[source]

Bases: BaseModel

A pole of a meromorphic function.

Parameters:
z_re: float
z_im: float
multiplicity: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.InvertRequest(**data)[source]

Bases: BaseModel

Request to invert a point through the Laurent map.

Parameters:
z_re: float
z_im: float
laurent_map: LaurentMapModel
curve_scale: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.InvertResponse(**data)[source]

Bases: BaseModel

Response from point inversion.

Parameters:
converged: bool
zeta_re: float | None
zeta_im: float | None
residual: float
iters: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.HolomorphicCheckRequest(**data)[source]

Bases: BaseModel

Request to check if poles are outside annulus image.

Parameters:
poles: List[PoleModel]
laurent_map: LaurentMapModel
curve_scale: float
min_distance_param: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.HolomorphicCheckResponse(**data)[source]

Bases: BaseModel

Response from holomorphic check.

Parameters:
  • ok (bool)

  • min_pole_distance (float)

  • closest_pole_re (float | None)

  • closest_pole_im (float | None)

  • failure_reason (str | None)

ok: bool
min_pole_distance: float
closest_pole_re: float | None
closest_pole_im: float | None
failure_reason: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.CompositionRequest(**data)[source]

Bases: BaseModel

Request to compute the analytic continuation composition.

Parameters:
z_re: float
z_im: float
expression: str
laurent_map: LaurentMapModel
curve_scale: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.CompositionResponse(**data)[source]

Bases: BaseModel

Response from composition computation.

Parameters:
ok: bool
value_re: float | None
value_im: float | None
zeta_re: float | None
zeta_im: float | None
residual: float | None
failure_reason: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ContourPreCheckRequest(**data)[source]

Bases: BaseModel

Request for quick pre-check on a raw user-drawn contour.

Parameters:
points: List[PointModel]
closed: bool
adaptive_polyline: List[PointModel] | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ContourPreCheckResponse(**data)[source]

Bases: BaseModel

Response from quick contour pre-check.

Parameters:
ok: bool
proceed: bool
is_closed: bool
is_simple: bool
has_sufficient_points: bool
has_reasonable_aspect: bool
has_reasonable_curvature: bool
num_points: int
perimeter: float
bounding_box: List[float]
aspect_ratio: float
estimated_diameter: float
min_segment_length: float
max_segment_length: float
max_turning_angle_degrees: float
warnings: List[str]
errors: List[str]
estimated_difficulty: str
estimated_fit_time_seconds: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.IntrinsicCurveRequest(**data)[source]

Bases: BaseModel

Request for intrinsic curve analysis of a bijection.

Parameters:
laurent_map: LaurentMapModel
curve_scale: float
samples: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.CurvatureMetricsModel(**data)[source]

Bases: BaseModel

Curvature-based complexity metrics.

Parameters:
total_curvature: float
curvature_variation: float
max_curvature: float
mean_curvature: float
curvature_std: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.JacobianMetricsModel(**data)[source]

Bases: BaseModel

Jacobian (conformal distortion) metrics.

Parameters:
min_jacobian: float
max_jacobian: float
jacobian_ratio: float
log_deriv_variation: float
arg_deriv_variation: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ComplexityScoresModel(**data)[source]

Bases: BaseModel

Derived complexity scores for computational cost estimation.

Parameters:
  • inversion_difficulty (float)

  • sampling_density_factor (float)

  • newton_convergence_factor (float)

inversion_difficulty: float
sampling_density_factor: float
newton_convergence_factor: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.SuggestedConfigModel(**data)[source]

Bases: BaseModel

Suggested inversion configuration based on complexity analysis.

Parameters:
  • theta_grid (int)

  • max_iters (int)

  • max_backtracks (int)

  • damping (bool)

theta_grid: int
max_iters: int
max_backtracks: int
damping: bool
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.IntrinsicCurveResponse(**data)[source]

Bases: BaseModel

Response from intrinsic curve analysis.

Parameters:
winding_number: float
total_arc_length: float
curvature: CurvatureMetricsModel
jacobian: JacobianMetricsModel
complexity: ComplexityScoresModel
suggested_config: SuggestedConfigModel
cesaro_arc_lengths: List[float] | None
cesaro_curvatures: List[float] | None
whewell_tangent_angles: List[float] | None
summary: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.WebGLLaurentCoeffs(**data)[source]

Bases: BaseModel

Laurent coefficients formatted for WebGL shader consumption.

Parameters:
N: int
coeffs_neg: List[List[float]]
coeffs_pos: List[List[float]]
curve_scale: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.ContinuationDefinition(**data)[source]

Bases: BaseModel

Complete definition of an analytic continuation.

This captures everything needed to: 1. Evaluate the continuation F(z) = A(f(B(z))) at any point 2. Reconstruct the visualization 3. Export/import the continuation

Parameters:
version: str
laurent_map: WebGLLaurentCoeffs
expression: str | None
zeros: List[Dict[str, float]]
poles: List[Dict[str, float]]
created_at: str | None
session_id: str | None
input_hash: str | None
fit_max_error: float | None
fit_rms_error: float | None
curve_point_count: int | None
curve_closed: bool
to_evaluation_info()[source]

Return info needed to evaluate F(z) at a point.

Return type:

Dict[str, Any]

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.WebGLRenderDataRequest(**data)[source]

Bases: BaseModel

Request for WebGL render data.

Parameters:
export: SplineExportModel
zeros: List[SingularityModel]
poles: List[SingularityModel]
transform_params: TransformParamsModel | None
expression: str | None
N_min: int
N_max: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.WebGLRenderDataResponse(**data)[source]

Bases: BaseModel

Complete data needed for WebGL domain coloring of analytic continuation.

Parameters:
ok: bool
failure_reason: str | None
laurent_coeffs: WebGLLaurentCoeffs | None
zeros: List[List[float]]
poles: List[List[float]]
expression: str | None
continuation: ContinuationDefinition | None
session_id: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.WebGLRenderWithProgressRequest(**data)[source]

Bases: BaseModel

Request for WebGL render data with progress tracking.

Parameters:
session_id: str | None
export: SplineExportModel
zeros: List[SingularityModel]
poles: List[SingularityModel]
expression: str | None
transform_params: TransformParamsModel | None
N_min: int
N_max: int
auto_resume: bool
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.SessionStartRequest(**data)[source]

Bases: BaseModel

Request to start a new pipeline session.

Parameters:
expression: str | None
curve_data: dict | None
zeros: List[SingularityModel]
poles: List[SingularityModel]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.SessionResponse(**data)[source]

Bases: BaseModel

Response with session information.

Parameters:
  • session_id (str)

  • status (str)

  • created_at (str)

  • expression (str | None)

session_id: str
status: str
created_at: str
expression: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class analytic_continuation_server.models.CheckResumableRequest(**data)[source]

Bases: BaseModel

Request to check if a computation can be resumed from cache.

Parameters:
export: SplineExportModel | None
zeros: List[SingularityModel]
poles: List[SingularityModel]
expression: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Base Models

PointModel

class analytic_continuation_server.models.PointModel(**data)[source]

Bases: BaseModel

A 2D point with optional index.

Parameters:
x: float
y: float
index: int | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

ComplexModel

class analytic_continuation_server.models.ComplexModel(**data)[source]

Bases: BaseModel

Complex number representation.

Parameters:
re: float
im: float
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

TransformParamsModel

class analytic_continuation_server.models.TransformParamsModel(**data)[source]

Bases: BaseModel

Transform parameters for screen/logical coordinate conversion.

Parameters:
offset_x: float
offset_y: float
scale_x: float
scale_y: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

SingularityModel

class analytic_continuation_server.models.SingularityModel(**data)[source]

Bases: BaseModel

A zero or pole location with optional multiplicity.

Parameters:
x: float
y: float
multiplicity: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Request Models

TransformPointRequest

class analytic_continuation_server.models.TransformPointRequest(**data)[source]

Bases: BaseModel

Request to transform a single point.

Parameters:
point: PointModel
params: TransformParamsModel
direction: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

MeromorphicRequest

class analytic_continuation_server.models.MeromorphicRequest(**data)[source]

Bases: BaseModel

Request to build a meromorphic function from zeros and poles.

Parameters:
zeros: List[SingularityModel]
poles: List[SingularityModel]
params: TransformParamsModel | None
coords: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

LaurentFitRequest

class analytic_continuation_server.models.LaurentFitRequest(**data)[source]

Bases: BaseModel

Request to fit a Laurent map.

Parameters:
export: SplineExportModel
N_min: int
N_max: int
m_samples: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

WebGLRenderDataRequest

class analytic_continuation_server.models.WebGLRenderDataRequest(**data)[source]

Bases: BaseModel

Request for WebGL render data.

Parameters:
export: SplineExportModel
zeros: List[SingularityModel]
poles: List[SingularityModel]
transform_params: TransformParamsModel | None
expression: str | None
N_min: int
N_max: int
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Response Models

MeromorphicResponse

class analytic_continuation_server.models.MeromorphicResponse(**data)[source]

Bases: BaseModel

Response with the built expression and logical coordinates.

Parameters:
expression: str
zeros: List[SingularityModel]
poles: List[SingularityModel]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

LaurentFitResponse

class analytic_continuation_server.models.LaurentFitResponse(**data)[source]

Bases: BaseModel

Response from Laurent fitting.

Parameters:
ok: bool
failure_reason: str | None
curve_scale: float
laurent_map: LaurentMapModel | None
fit_max_err: float
fit_rms_err: float
checks: dict
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

WebGLRenderDataResponse

class analytic_continuation_server.models.WebGLRenderDataResponse(**data)[source]

Bases: BaseModel

Complete data needed for WebGL domain coloring of analytic continuation.

Parameters:
ok: bool
failure_reason: str | None
laurent_coeffs: WebGLLaurentCoeffs | None
zeros: List[List[float]]
poles: List[List[float]]
expression: str | None
continuation: ContinuationDefinition | None
session_id: str | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

ContinuationDefinition

class analytic_continuation_server.models.ContinuationDefinition(**data)[source]

Bases: BaseModel

Complete definition of an analytic continuation.

This captures everything needed to: 1. Evaluate the continuation F(z) = A(f(B(z))) at any point 2. Reconstruct the visualization 3. Export/import the continuation

Parameters:
version: str
laurent_map: WebGLLaurentCoeffs
expression: str | None
zeros: List[Dict[str, float]]
poles: List[Dict[str, float]]
created_at: str | None
session_id: str | None
input_hash: str | None
fit_max_error: float | None
fit_rms_error: float | None
curve_point_count: int | None
curve_closed: bool
to_evaluation_info()[source]

Return info needed to evaluate F(z) at a point.

Return type:

Dict[str, Any]

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].