import joblib
import pandas as pd
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(title='Churn Prediction API')
from typing import Any, Optional
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from typing import Optional
from pydantic import BaseModel, EmailStr, Field, field_validator, model_validator
class CreateUserRequest(BaseModel):
model_config = {"extra": "forbid"}
import contextvars
import uuid
_correlation_id: contextvars.ContextVar[str] = contextvars.ContextVar(
"correlation_id", default="-"
)
import asyncio
import time
from dataclasses import dataclass, field
@dataclass
import json
import secrets
import time
from typing import Optional
import redis.asyncio as redis
import base64
import json
from datetime import datetime
from typing import Optional, Tuple
from datetime import datetime
from pydantic import BaseModel
class UserV1(BaseModel):
from sqlalchemy import select
from sqlalchemy.orm import Session
from .models import User
BATCH_SIZE = 1000
from datetime import datetime, timedelta, timezone
from jose import jwt, JWTError
from jose.exceptions import ExpiredSignatureError
SECRET_KEY = "change-me-in-production"
import base64
import json
from datetime import datetime
from typing import NamedTuple
from fastapi import HTTPException
-- KEYS[1] = bucket key
-- ARGV[1] = capacity, ARGV[2] = refill_per_sec, ARGV[3] = now (float seconds)
local capacity = tonumber(ARGV[1])
local rate = tonumber(ARGV[2])
local now = tonumber(ARGV[3])