mirror of
https://github.com/apache/superset.git
synced 2026-04-21 17:14:57 +00:00
58 lines
1.6 KiB
Plaintext
58 lines
1.6 KiB
Plaintext
---
|
|
title: Conventions and Typing
|
|
hide_title: true
|
|
sidebar_position: 7
|
|
version: 1
|
|
---
|
|
|
|
## Conventions
|
|
|
|
### Python
|
|
|
|
Parameters in the `config.py` (which are accessible via the Flask app.config dictionary) are assumed to always be defined and thus should be accessed directly via,
|
|
|
|
```python
|
|
blueprints = app.config["BLUEPRINTS"]
|
|
```
|
|
|
|
rather than,
|
|
|
|
```python
|
|
blueprints = app.config.get("BLUEPRINTS")
|
|
```
|
|
|
|
or similar as the later will cause typing issues. The former is of type `List[Callable]` whereas the later is of type `Optional[List[Callable]]`.
|
|
|
|
## Typing
|
|
|
|
### Python
|
|
|
|
To ensure clarity, consistency, all readability, _all_ new functions should use
|
|
[type hints](https://docs.python.org/3/library/typing.html) and include a
|
|
docstring.
|
|
|
|
Note per [PEP-484](https://www.python.org/dev/peps/pep-0484/#exceptions) no
|
|
syntax for listing explicitly raised exceptions is proposed and thus the
|
|
recommendation is to put this information in a docstring, i.e.,
|
|
|
|
```python
|
|
import math
|
|
from typing import Union
|
|
|
|
|
|
def sqrt(x: Union[float, int]) -> Union[float, int]:
|
|
"""
|
|
Return the square root of x.
|
|
|
|
:param x: A number
|
|
:returns: The square root of the given number
|
|
:raises ValueError: If the number is negative
|
|
"""
|
|
|
|
return math.sqrt(x)
|
|
```
|
|
|
|
### TypeScript
|
|
|
|
TypeScript is fully supported and is the recommended language for writing all new frontend components. When modifying existing functions/components, migrating to TypeScript is appreciated, but not required. Examples of migrating functions/components to TypeScript can be found in [#9162](https://github.com/apache/superset/pull/9162) and [#9180](https://github.com/apache/superset/pull/9180).
|