Module API.auth.routers
Variables
router
Functions
callback
def callback(
request: starlette.requests.Request
)
Core will use Oauth secret key from configuration while deserializing token, provides access token that can be used for authorized endpoints.
Parameters: None
Returns: - access_token (string)
create_user
def create_user(
params: API.auth.routers.User,
user_data: API.auth.AuthUser = Depends(admin_required)
)
Args: - params (User): The user data including osm_id and role.
Returns: - Dict[str, Any]: A dictionary containing the osm_id of the newly created user.
Raises: - HTTPException: If the user creation fails.
delete_user
def delete_user(
osm_id: int,
user_data: API.auth.AuthUser = Depends(admin_required)
)
Args: - osm_id (int): The OSM ID of the user to delete.
Returns: - Dict[str, Any]: A dictionary containing the deleted user information.
Raises: - HTTPException: If the user with the given osm_id is not found.
login_url
def login_url(
request: starlette.requests.Request
)
Parameters: None
Returns: - login_url (dict) - URL to authorize user to the application via. Openstreetmap OAuth2 with client_id, redirect_uri, and permission scope as query_string parameters
my_data
def my_data(
user_data: API.auth.AuthUser = Depends(login_required)
)
Parameters:None
Returns: user_data User Role : ADMIN = 1 STAFF = 2 GUEST = 3
read_user
def read_user(
osm_id: int,
user_data: API.auth.AuthUser = Depends(staff_required)
)
Args: - osm_id (int): The OSM ID of the user to retrieve.
Returns: - Dict[str, Any]: A dictionary containing user information.
Raises: - HTTPException: If the user with the given osm_id is not found.
read_users
def read_users(
skip: int = 0,
limit: int = 10,
user_data: API.auth.AuthUser = Depends(staff_required)
)
Args: - skip (int): The number of users to skip (for pagination). - limit (int): The maximum number of users to retrieve (for pagination).
Returns: - List[Dict[str, Any]]: A list of dictionaries containing user information.
update_user
def update_user(
osm_id: int,
update_data: API.auth.routers.User,
user_data: API.auth.AuthUser = Depends(admin_required)
)
Returns: - Dict[str, Any]: A dictionary containing the updated user information.
Raises: - HTTPException: If the user with the given osm_id is not found.
Classes
User
class User(
/,
**data: 'Any'
)
Usage docs: https://docs.pydantic.dev/2.9/concepts/models/
A base class for creating Pydantic models.
Attributes:
class_vars: The names of the class variables defined on the model.
private_attributes: Metadata about the private attributes of the model.
signature: The synthesized __init__
[Signature
][inspect.Signature] of the model.
__pydantic_complete__: Whether model building is completed, or if there are still undefined fields.
__pydantic_core_schema__: The core schema of the model.
__pydantic_custom_init__: Whether the model has a custom `__init__` function.
__pydantic_decorators__: Metadata containing the decorators defined on the model.
This replaces `Model.__validators__` and `Model.__root_validators__` from Pydantic V1.
__pydantic_generic_metadata__: Metadata for generic models; contains data used for a similar purpose to
__args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.
__pydantic_parent_namespace__: Parent namespace of the model, used for automatic rebuilding of models.
__pydantic_post_init__: The name of the post-init method for the model, if defined.
__pydantic_root_model__: Whether the model is a [`RootModel`][pydantic.root_model.RootModel].
__pydantic_serializer__: The `pydantic-core` `SchemaSerializer` used to dump instances of the model.
__pydantic_validator__: The `pydantic-core` `SchemaValidator` used to validate instances of the model.
__pydantic_extra__: A dictionary containing extra values, if [`extra`][pydantic.config.ConfigDict.extra]
is set to `'allow'`.
__pydantic_fields_set__: The names of fields explicitly set during instantiation.
__pydantic_private__: Values of private attributes set on the model instance.
Ancestors (in MRO)
- pydantic.main.BaseModel
Class variables
model_computed_fields
model_config
model_fields
Static methods
construct
def construct(
_fields_set: 'set[str] | None' = None,
**values: 'Any'
) -> 'Self'
from_orm
def from_orm(
obj: 'Any'
) -> 'Self'
model_construct
def model_construct(
_fields_set: 'set[str] | None' = None,
**values: 'Any'
) -> 'Self'
Model
class with validated data.
Creates a new model setting __dict__
and __pydantic_fields_set__
from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
!!! note
model_construct()
generally respects the model_config.extra
setting on the provided model.
That is, if model_config.extra == 'allow'
, then all extra passed values are added to the model instance's __dict__
and __pydantic_extra__
fields. If model_config.extra == 'ignore'
(the default), then all extra passed values are ignored.
Because no validation is performed with a call to model_construct()
, having model_config.extra == 'forbid'
does not result in
an error if extra values are passed, but they will be ignored.
Args:
_fields_set: A set of field names that were originally explicitly set during instantiation. If provided,
this is directly used for the [model_fields_set
][pydantic.BaseModel.model_fields_set] attribute.
Otherwise, the field names from the values
argument will be used.
values: Trusted or pre-validated data dictionary.
Returns:
A new instance of the Model
class with validated data.
model_json_schema
def model_json_schema(
by_alias: 'bool' = True,
ref_template: 'str' = '#/$defs/{model}',
schema_generator: 'type[GenerateJsonSchema]' = <class 'pydantic.json_schema.GenerateJsonSchema'>,
mode: 'JsonSchemaMode' = 'validation'
) -> 'dict[str, Any]'
Args:
by_alias: Whether to use attribute aliases or not.
ref_template: The reference template.
schema_generator: To override the logic used to generate the JSON schema, as a subclass of
GenerateJsonSchema
with your desired modifications
mode: The mode in which to generate the schema.
Returns: The JSON schema for the given model class.
model_parametrized_name
def model_parametrized_name(
params: 'tuple[type[Any], ...]'
) -> 'str'
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
Args:
params: Tuple of types of the class. Given a generic class
Model
with 2 type variables and a concrete model Model[str, int]
,
the value (str, int)
would be passed to params
.
Returns:
String representing the new class where params
are passed to cls
as type variables.
Raises: TypeError: Raised when trying to generate concrete names for non-generic models.
model_rebuild
def model_rebuild(
*,
force: 'bool' = False,
raise_errors: 'bool' = True,
_parent_namespace_depth: 'int' = 2,
_types_namespace: 'dict[str, Any] | None' = None
) -> 'bool | None'
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.
Args:
force: Whether to force the rebuilding of the model schema, defaults to False
.
raise_errors: Whether to raise errors, defaults to True
.
_parent_namespace_depth: The depth level of the parent namespace, defaults to 2.
_types_namespace: The types namespace, defaults to None
.
Returns:
Returns None
if the schema is already "complete" and rebuilding was not required.
If rebuilding was required, returns True
if rebuilding was successful, otherwise False
.
model_validate
def model_validate(
obj: 'Any',
*,
strict: 'bool | None' = None,
from_attributes: 'bool | None' = None,
context: 'Any | None' = None
) -> 'Self'
Args: obj: The object to validate. strict: Whether to enforce types strictly. from_attributes: Whether to extract data from object attributes. context: Additional context to pass to the validator.
Raises: ValidationError: If the object could not be validated.
Returns: The validated model instance.
model_validate_json
def model_validate_json(
json_data: 'str | bytes | bytearray',
*,
strict: 'bool | None' = None,
context: 'Any | None' = None
) -> 'Self'
Validate the given JSON data against the Pydantic model.
Args: json_data: The JSON data to validate. strict: Whether to enforce types strictly. context: Extra variables to pass to the validator.
Returns: The validated Pydantic model.
Raises:
ValidationError: If json_data
is not a JSON string or the object could not be validated.
model_validate_strings
def model_validate_strings(
obj: 'Any',
*,
strict: 'bool | None' = None,
context: 'Any | None' = None
) -> 'Self'
Args: obj: The object containing string data to validate. strict: Whether to enforce types strictly. context: Extra variables to pass to the validator.
Returns: The validated Pydantic model.
parse_file
def parse_file(
path: 'str | Path',
*,
content_type: 'str | None' = None,
encoding: 'str' = 'utf8',
proto: 'DeprecatedParseProtocol | None' = None,
allow_pickle: 'bool' = False
) -> 'Self'
parse_obj
def parse_obj(
obj: 'Any'
) -> 'Self'
parse_raw
def parse_raw(
b: 'str | bytes',
*,
content_type: 'str | None' = None,
encoding: 'str' = 'utf8',
proto: 'DeprecatedParseProtocol | None' = None,
allow_pickle: 'bool' = False
) -> 'Self'
schema
def schema(
by_alias: 'bool' = True,
ref_template: 'str' = '#/$defs/{model}'
) -> 'Dict[str, Any]'
schema_json
def schema_json(
*,
by_alias: 'bool' = True,
ref_template: 'str' = '#/$defs/{model}',
**dumps_kwargs: 'Any'
) -> 'str'
update_forward_refs
def update_forward_refs(
**localns: 'Any'
) -> 'None'
validate
def validate(
value: 'Any'
) -> 'Self'
Instance variables
model_extra
Returns:
A dictionary of extra fields, or None
if config.extra
is not set to "allow"
.
model_fields_set
Returns: A set of strings representing the fields that have been set, i.e. that were not filled from defaults.
Methods
copy
def copy(
self,
*,
include: 'AbstractSetIntStr | MappingIntStrAny | None' = None,
exclude: 'AbstractSetIntStr | MappingIntStrAny | None' = None,
update: 'Dict[str, Any] | None' = None,
deep: 'bool' = False
) -> 'Self'
!!! warning "Deprecated"
This method is now deprecated; use model_copy
instead.
If you need include
or exclude
, use:
data = self.model_dump(include=include, exclude=exclude, round_trip=True)
data = {**data, **(update or {})}
copied = self.model_validate(data)
Args: include: Optional set or mapping specifying which fields to include in the copied model. exclude: Optional set or mapping specifying which fields to exclude in the copied model. update: Optional dictionary of field-value pairs to override field values in the copied model. deep: If True, the values of fields that are Pydantic models will be deep-copied.
Returns: A copy of the model with included, excluded and updated fields as specified.
dict
def dict(
self,
*,
include: 'IncEx | None' = None,
exclude: 'IncEx | None' = None,
by_alias: 'bool' = False,
exclude_unset: 'bool' = False,
exclude_defaults: 'bool' = False,
exclude_none: 'bool' = False
) -> 'Dict[str, Any]'
json
def json(
self,
*,
include: 'IncEx | None' = None,
exclude: 'IncEx | None' = None,
by_alias: 'bool' = False,
exclude_unset: 'bool' = False,
exclude_defaults: 'bool' = False,
exclude_none: 'bool' = False,
encoder: 'Callable[[Any], Any] | None' = PydanticUndefined,
models_as_dict: 'bool' = PydanticUndefined,
**dumps_kwargs: 'Any'
) -> 'str'
model_copy
def model_copy(
self,
*,
update: 'dict[str, Any] | None' = None,
deep: 'bool' = False
) -> 'Self'
Returns a copy of the model.
Args:
update: Values to change/add in the new model. Note: the data is not validated
before creating the new model. You should trust this data.
deep: Set to True
to make a deep copy of the model.
Returns: New model instance.
model_dump
def model_dump(
self,
*,
mode: "Literal['json', 'python'] | str" = 'python',
include: 'IncEx | None' = None,
exclude: 'IncEx | None' = None,
context: 'Any | None' = None,
by_alias: 'bool' = False,
exclude_unset: 'bool' = False,
exclude_defaults: 'bool' = False,
exclude_none: 'bool' = False,
round_trip: 'bool' = False,
warnings: "bool | Literal['none', 'warn', 'error']" = True,
serialize_as_any: 'bool' = False
) -> 'dict[str, Any]'
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
Args:
mode: The mode in which to_python
should run.
If mode is 'json', the output will only contain JSON serializable types.
If mode is 'python', the output may contain non-JSON-serializable Python objects.
include: A set of fields to include in the output.
exclude: A set of fields to exclude from the output.
context: Additional context to pass to the serializer.
by_alias: Whether to use the field's alias in the dictionary key if defined.
exclude_unset: Whether to exclude fields that have not been explicitly set.
exclude_defaults: Whether to exclude fields that are set to their default value.
exclude_none: Whether to exclude fields that have a value of None
.
round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
"error" raises a [PydanticSerializationError
][pydantic_core.PydanticSerializationError].
serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
Returns: A dictionary representation of the model.
model_dump_json
def model_dump_json(
self,
*,
indent: 'int | None' = None,
include: 'IncEx | None' = None,
exclude: 'IncEx | None' = None,
context: 'Any | None' = None,
by_alias: 'bool' = False,
exclude_unset: 'bool' = False,
exclude_defaults: 'bool' = False,
exclude_none: 'bool' = False,
round_trip: 'bool' = False,
warnings: "bool | Literal['none', 'warn', 'error']" = True,
serialize_as_any: 'bool' = False
) -> 'str'
Generates a JSON representation of the model using Pydantic's to_json
method.
Args:
indent: Indentation to use in the JSON output. If None is passed, the output will be compact.
include: Field(s) to include in the JSON output.
exclude: Field(s) to exclude from the JSON output.
context: Additional context to pass to the serializer.
by_alias: Whether to serialize using field aliases.
exclude_unset: Whether to exclude fields that have not been explicitly set.
exclude_defaults: Whether to exclude fields that are set to their default value.
exclude_none: Whether to exclude fields that have a value of None
.
round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
"error" raises a [PydanticSerializationError
][pydantic_core.PydanticSerializationError].
serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
Returns: A JSON string representation of the model.
model_post_init
def model_post_init(
self,
_BaseModel__context: 'Any'
) -> 'None'
__init__
and model_construct
.
This is useful if you want to do some validation that requires the entire model to be initialized.