Skip to content

Instantly share code, notes, and snippets.

View EnriqueSoria's full-sized avatar
🐍
pythoning

Enrique Soria EnriqueSoria

🐍
pythoning
View GitHub Profile
@EnriqueSoria
EnriqueSoria / generic_model_instance.py
Created December 5, 2023 14:03
Utility to serialize generic model instances
from __future__ import annotations
from typing import Any
from typing import NamedTuple
from django.contrib.contenttypes.models import ContentType
from django.db import models
class GenericModelInstance(NamedTuple):
@EnriqueSoria
EnriqueSoria / pyproject.toml
Created November 3, 2023 15:33
My ruff configuration
[tool.ruff]
target-version = "py39"
line-length = 100
src = ["app", "tests"]
select = [
"E", # pycodestyle
"F", # Pyflakes
"TID251", # https://docs.astral.sh/ruff/rules/banned-api/
"TID252", # https://docs.astral.sh/ruff/rules/relative-imports/
@EnriqueSoria
EnriqueSoria / custom_drf_serializer_fields.py
Last active October 20, 2023 11:33
Like SerializerMethodField, but formatting returned value with another serializer
from __future__ import annotations
from rest_framework import serializers
class FormattedSerializerMethodField(serializers.SerializerMethodField):
"""
Like SerializerMethodField, but allowing you to apply an optional
formatter serializer to the field's output.
"""
@EnriqueSoria
EnriqueSoria / drf_child_source_list_serializer.py
Last active October 20, 2023 11:39
Django Rest Framework list serializer that allows you to specify a "source" field in the child serializer
from rest_framework import serializers
from rest_framework.fields import get_attribute
class ChildSourceListSerializer(serializers.ListSerializer):
"""List serializer that respects child's `source` field"""
def get_attribute(self, instance):
attribute = super().get_attribute(instance)
return [get_attribute(item, self.child.source_attrs) for item in attribute]
@EnriqueSoria
EnriqueSoria / validate_dataclass.py
Last active March 5, 2024 21:51 — forked from rochacbruno/validate_dataclass.py
Validate Dataclass Python
import logging
from dataclasses import dataclass
from typing import Union, List
logger = logging.getLogger(__name__)
class Validations:
import functools
from typing import Any
from operator import getitem
def get_from_path(data: dict, *path, default: Any = None) -> Any:
"""
Safe get data given a path returning a default value
>>> mydict = {"first": {"second": [3, 4]}}
@EnriqueSoria
EnriqueSoria / Gestures.conf
Last active March 3, 2022 08:04
Setting up Ubuntu
# Generated by Gestures 0.3.0 --> https://gitlab.com/cunidev/gestures
# Manual editing might result in data loss!
# Invalid lines
# Unsupported lines
# Swipe threshold (0-100)
@EnriqueSoria
EnriqueSoria / aac_to_mp3.py
Created August 29, 2018 09:05
AAC to MP3
from os import listdir as ls
from os.path import abspath
from subprocess import run
FFMPEG = r"C:\Another_apps\ffmpeg\bin\ffmpeg.exe"
command = '{program} -i "{inp}" -acodec libmp3lame "{out}"'
file_extension = '.aac'
for file in ls('.'):
if file.endswith(file_extension):
@EnriqueSoria
EnriqueSoria / arrays.py
Last active September 3, 2018 07:07
Alguns scripts que tinc
import numpy as np
import sympy as sym
import argparse
parser = argparse.ArgumentParser(
description="Fa el producte (·) entre dos matrius"
)
parser.add_argument("-a", help="Matriu `a`", required=True)
parser.add_argument("-b", help="Matriu `b`", required=True)
args = parser.parse_args()
@EnriqueSoria
EnriqueSoria / main.py
Last active April 20, 2018 07:22
Tkinter skeleton
from tkinter import Tk, Label, Button
class Main:
APP_NAME = ''
def __init__(self, master):
self.master = master
master.title(self.APP_NAME)
self.center(master)