Skip to main content

coverage-passing coverage pypi

django-rest-tsg

A TypeScript code generator for Django Rest Framework, which saved your hand-working and guaranteed consistency between Python codes and modern frontend codes written in TypeScript.

Features

It generates TypeScript codes from following Python types.

  • Django REST Framework serializers: manual working on Serializer, ModelSerializer derived from Django ORM models, DataclassSerializer via djangorestframework-dataclasses.

  • Python dataclasses: Classes decorated by dataclasses.dataclass.

  • Python enums: Subclasses of enum.Enum.

It also supports nested types and composite types.

Requirements

  • Python >=3.9

  • Django >=3.2

  • Django REST Framework >=3.12

Usage

Install using pip.

$ pip install django_rest_tsg

Put a tsgconfig.py file with build tasks into your django project’s root.

from django.conf import settings
from django_rest_tsg.build import build

BUILD_DIR = settings.BASE_DIR / "app/src/core"

BUILD_TASKS = [
    build(Foo),
    build(BarSerializer, {"alias": "Foobar"}),
]

Add django_rest_tsg to your INSTALLED_APPS.

INSTALLED_APPS = [
    ...
    "django_rest_tsg"
]

Run buildtypescript command on manage.py.

$ python manage.py buildtypescript

Or you can switch to another place.

$ python manage.py buildtypescript --build-dir /somewhere/you/cannot/explain

Examples

Input: Serializer

class PathSerializer(serializers.Serializer):
    name = serializers.CharField()
    suffix = serializers.CharField()
    suffixes = serializers.ListField(child=serializers.CharField())
    stem = serializers.CharField()
    is_directory = serializers.BooleanField(source="is_dir")
    size = serializers.IntegerField(source="stat.st_size")

Output: Interface

export interface Path {
  name: string;
  suffix: string;
  suffixes: string[];
  stem: string;
  isDirectory: boolean;
  size: number;
}

There are more examples in test cases.

Build Options

All options are listed in the table below.

Name

Context

Value

alias

All

str

build_dir

All

str | Path

enforce_uppercase

Enum

bool (False)

Metadata

Release files for django-rest-tsg 0.1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for django-rest-tsg 0.1.10
File Interpreter ABI Platform
django_rest_tsg-0.1.10-py3-none-any.whl Python 3 none any Details

Release files / django_rest_tsg-0.1.10-py3-none-any.whl

Download URL django_rest_tsg-0.1.10-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e9dc80cfc2fd78ecfd2cbc491b6199450eede9e716358a838540dc59bec1277
BLAKE2b-256 checksum
How to use checksums
db4d9c2b161a2f1d17736052d099662db5fa00611fe73945b39be06b185eecd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.1.10 This release

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page