Rainbow Python Utilities
Project description
rb_utils
rb_utils는 백엔드 전반에서 재사용하는 유틸리티 모음 패키지입니다.
모듈/함수 상세
1) rb_utils.parser
snake_to_camel(s: str) -> str: snake_case 문자열을 CamelCase 형태로 변환camel_to_snake(s: str) -> str: CamelCase 문자열을 snake_case로 변환t_to_dict(obj: Any) -> Any: 중첩 객체(FlatBuffer T, dict/list/tuple/set, bytes, numpy 배열)를 Python 기본 타입으로 재귀 변환_normalize_filter(filter_: Any) -> dict:None/dict/JSON 문자열을 공통 dict로 정규화to_json(obj: Any) -> str:t_to_dict결과를 JSON 문자열로 직렬화to_iso(val: str | datetime) -> str: datetime이면 ISO 문자열, 문자열이면 그대로 반환
예시:
from rb_utils.parser import t_to_dict, to_json
payload_dict = t_to_dict(obj_payload)
payload_json = to_json(obj_payload)
2) rb_utils.flow_manager
safe_eval_expr(expr, variables=None, get_global_variable=None) -> Any: 제한된 AST 규칙으로 안전 평가_pick_target_loop(func, provided) -> asyncio.AbstractEventLoop | None: callable 실행 대상 loop 선택call_with_matching_args(func, **provided) -> Any: 함수 시그니처에 맞춰 인자만 골라 호출 (sync/async 공통)eval_value(value, variables=None, get_global_variable=None) -> Any: 문자열/리스트/튜플/딕셔너리를 재귀 평가make_builtins_allow_most() -> dict: 위험 builtins 제외한 builtins dict 생성
예시:
from rb_utils.flow_manager import eval_value
value = eval_value("a + 10", variables={"local": {"a": 5}, "global": {}})
# value == 15
3) rb_utils.asyncio_helper
spawn(coro, *, name=None, log_ex=True): 현재 loop에 task 생성 후 완료/예외 로깅_ensure_private_loop() -> asyncio.AbstractEventLoop: 전용 백그라운드 loop 확보fire_and_log(coro, *, name=None, loop=None): 현재 loop/외부 loop/전용 loop에 안전하게 실행_attach_done_logging(fut_or_task, *, name=None): Future/Task 완료 시 예외 로깅 callback 연결
예시:
from rb_utils.asyncio_helper import fire_and_log
fire_and_log(socket_client.emit("muscat/program/log", {"msg": "hello"}), name="program-log")
4) rb_utils.service_exception
class ServiceException(Exception):- 필드:
message: str,status_code: int | None __str__():message (status=...)형태 출력to_dict():{message, status_code}반환
- 필드:
예시:
from rb_utils.service_exception import ServiceException
raise ServiceException("invalid request", status_code=400)
5) rb_utils.date
is_valid_date(d):date/str/int(timestamp)유효성 검사timestamp_ms_to_seconds(timestamp, tz=UTC): ms/seconds timestamp를 seconds로 정규화is_has_time(s: str): 문자열에 시간 정보 포함 여부 판단parse_date_with_time(mode, d, tz=UTC): 날짜/문자열/타임스탬프를 timezone-aware datetime으로 변환ensure_datetime(dt, tz):date | datetime을 지정 tz의 datetime으로 보정_tz(tz_name): timezone 캐시 조회convert_dt(local, in_tz, out_tz): 입력 tz 기준 datetime/date를 출력 tz로 변환get_current_dt_yyyymmddhhmmss(tz): 현재 시각을YYYYMMDDHHMMSS문자열 반환
예시:
from rb_utils.date import parse_date_with_time
from datetime import UTC
dt = parse_date_with_time("start", "2026-02-25", tz=UTC)
6) rb_utils.file
content_disposition_header(filename) -> str: 다운로드용Content-Disposition헤더 생성sanitize_filename(name, default="export.csv", max_name_len=100) -> str: OS 금지문자 제거/길이 제한get_env_path() -> Path | None: 실행 위치 기준으로.env파일 탐색
예시:
from rb_utils.file import sanitize_filename
safe_name = sanitize_filename("../../report?.csv")
7) rb_utils.pagination
class PageInfo(TypedDict): 페이지 응답 메타 타입 (mode/page/pages/limit/total/sort/order)class LogsResponse(TypedDict): 로그 목록 응답 타입 (items,pageInfo)
8) rb_utils.helper
ManipulateZenohResHelper(obj): Zenoh 응답 객체 보정 유틸 의도 함수
주의:
- 현재 구현은 dict 처리가 아닌
.hasAttr/.set접근과 즉시ValueError를 포함하므로, 사용 전 동작 검증이 필요합니다.
실무 사용 패턴
- FlatBuffer/SDK 응답 평탄화:
t_to_dict - Flow step 동적 인자 평가:
eval_value,safe_eval_expr - 비동기 fire-and-forget + 예외 로깅:
fire_and_log - 서비스 레이어 공통 예외:
ServiceException - 파일 다운로드/이름 정리:
content_disposition_header,sanitize_filename
공통 주의사항
flow_manager평가기는 허용된 연산/함수만 실행합니다.- timezone 변환 함수는
Asia/Seoul같은 IANA tz 문자열을 명시해야 합니다.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rainbow_rb_utils-0.0.9.dev9.tar.gz.
File metadata
- Download URL: rainbow_rb_utils-0.0.9.dev9.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c06012ebf24148d670d0ffc6e39d664160f08880d9496883fd3206563c9d7425
|
|
| MD5 |
55e016c8b7bae69a2b98b6d544909b75
|
|
| BLAKE2b-256 |
1445fe1303e07e65aee529c66f213088ae6efeccc0570160e026ebbf01780004
|
File details
Details for the file rainbow_rb_utils-0.0.9.dev9-py3-none-any.whl.
File metadata
- Download URL: rainbow_rb_utils-0.0.9.dev9-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba00ed77de23be42c99f1d0ecbaa2b0c0b4339607078953629125f5a92cfd33e
|
|
| MD5 |
a2facd9fbec36ed2283b07de5005bbd9
|
|
| BLAKE2b-256 |
4afa3d7e7f13d32dc5d9789b1d7c4ea383a99991d3bcfcf2e771c1dc3cab53c4
|