Pull to refresh
5
0
Pavel Denisov @rSedoy

Пользователь

Send message
if 'birthdays' in data and data['birthdays']:
    birthday_data = data['birthdays'][0]
    if 'date' in birthday_data:
        bdate_dict = birthday_data['date']
        try:
            year = bdate_dict.get('year')
            if year:
                ...

стоит сокращать такие ступеньки if, например так (превращать в одну цепочку нескольких .get не стал)

if (
    (birthday_data := data.get('birthdays', [{}])[0]) and
    (bdate_dict := birthday_data.get('date')) and
    (year := bdate_dict.get('year'))
):
    ...
    
  • Проверить auth_date: если метка времени слишком старая (например, более нескольких минут), данные могут быть недействительными.

А не сталкивались с такой проблемой, что прилетает auth_date сильно старая (больше суток)? Общее для всех таких, user agent содержит "CPU iPhone OS 16_далее_все_подверсии"

Можно сказать что уже нет, он перешел к astral, а uv стал его "преемником" (successor project). Из нового интересного, astral начали новый проект type checker - ty

я тоже давно их использую, но мой коммент совсем про другое, что хватит поверхностных статей или того что легко прочитать в доках, хотелось бы про опыт, неочевидные проблемы и их решения, интересные или новые кейсы.

Начались одинаковые статьи про ruff и uv, ничего нового. Всё таки хотелось бы более глубокого анализа этих инструментов.

А слухи сообщают какую-то конкретику? я вот наоборот все включаю и только потом отключаю, причем отключаю спорные, а не те, которые код ломают, навскидку такие сейчас уже и не вспомню.

aiogram тянет aiohttp, там отличный http клиент, получается что httpx лишняя зависимость, так же раньше aiohttp уделывал его по скорости, но как с этим сейчас, не знаю, возможно уже доработали

Капитанство какое-то. Ну и везде одни "Преимущества", а как насчет недостатков? Например, set теряет порядок, сложные comprehensions не улучшат читаемость, а сделают наоборот.

именно устанавливает, правда не знаю как именно устанавливает conda, но будет именно версия которой нет в системе, а, ну и установка конечно же будет не системная, что правильно, системный python лучше ставить только пакетными менеджерами системы

кому что удобно, тот то и использует, вообще не вижу тут проблемы

скорость очень значимый параметр, еще удобная установка версий python, uv по нормальному агрегировал кучу фич разбросанных по разным инструментам, плюс свои фишки

чтобы использовать конкретное виртуальное окружение, если напрягает, то можно активировать через source или другими способами, тогда будет работать python hello.py

и какой смысл нагонять сюда подобных комментаторов? никакой пользы от них нет, да еще и выглядят как боты

Стоило упомянуть альтернативы внутри того же Redis: простейшее - собрать подобное на lists и более навороченный - Redis Streams

@sync_to_async
def get_zodiac_data(zodiac_name):
    return ZodiacSign.objects.get(zodiac_en=zodiac_name)

а почему не сразу так?

async def get_zodiac_data(zodiac_name):
    return await ZodiacSign.objects.aget(zodiac_en=zodiac_name)

class GeometricFigure:
	def __init__(self, name: str, x_coord: int, y_coord: int):
		self.name = name
		self.x_coord = x_coord
		self.y_coord = y_coord

	def change_coordinates(self, new_x_coord: int, new_y_coord: int):
		self.x_coord = new_x_coord
		self.y_coord = new_y_coord

и вот прям сразу спорный момент, по мне, coord и new_x_coord тут избыточно, название класса и последующий контекст достаточен чтобы были короткие имена x и y, так же спорно название метода change_coordinates, но мне сложно сейчас предложить вариант, тут я бы отталкивался от общей роли этого класса в проекте. Итог:

class GeometricFigure:
	def __init__(self, name: str, x: int, y: int):
		self.name = name
		self.x = x
		self.y = y

	def change_coordinates(self, x: int, y: int):
		self.x = x
		self.y = y

а еще, когда вдруг у фигуры, сначала идет какое-то name, а не логичные x и y, я хочу именованные аргументы

def __init__(self, *, name: str, x: int, y: int):

ага, а если учесть что у aiogram под капотом aiohttp, то можно сказать, что асинхронный клиент уже досутпен из коробки.

Основные затраты времени, это обдумывание решений и тому подобное. Код относительно этого пишется быстро, а всякие автодополнения, алиасы и прочее, больше субъективные удобства, их влияние на общее время разработки незначительное. Так что "сэкономленные" это больше манипуляция статистикой.

Основной смысл параметра заключается в том, чтобы при использовании критических функций, таких как удаление таблицы или всех данных из таблицы, необходимо было явно указывать тот пароль, который был передан при инициации класса. Это сделано для защиты от случайного удаления данных и от несанкционированного доступа.

Тащить метод из интерактивного взаимодействия в сам код, очень сомнительное решение, откуда взялось случайно удаление в самом коде? Да и несанкционированный доступ, тут тоже боком.

1
23 ...

Information

Rating
6,334-th
Location
Пермский край, Россия
Registered
Activity