Telegram Web Link
Управление зависимостями в Python с Poetry

Сегодня расскажем о мощном инструменте для эффективного управления зависимостями в ваших Python-проектах - Poetry. Poetry представляет собой интуитивно понятный инструмент, который упрощает создание, управление и публикацию пакетов, делая процесс разработки более прозрачным и удобным.

Poetry - это инструмент для управления зависимостями и управления проектами в Python. Он предоставляет удобный способ определения зависимостей, настройки окружения и управления проектом с использованием файла pyproject.toml.

Преимущества использования Poetry:

- Простота: Poetry предоставляет простой и интуитивно понятный способ управления зависимостями, позволяя сосредоточиться на коде, а не на конфигурации.

- Управление версиями: Poetry автоматически создает файлы requirements.txt и Pipfile.lock, обеспечивая точное управление версиями зависимостей.

- Встроенная документация: Интегрированная поддержка документации и команд для упрощения публикации пакетов.

- Интеграция с проектами: Poetry легко интегрируется в процессы разработки и может использоваться вместе с такими инструментами, как VSCode, PyCharm и другими.

Как использовать Poetry?

Для начала работы установите Poetry с помощью следующей команды:
pip install poetry
Инициализируйте новый проект:
poetry new your_project
Добавьте зависимости:
poetry add package_name
И Poetry автоматически обновит ваш файл pyproject.toml и управит зависимостями.

#python #poetry #pyprojecttoml
Управление операционной системой с помощью модуля os в Python

Сегодня давайте поговорим о инструменте для взаимодействия с операционной системой - модуле os. Этот модуль предоставляет широкий спектр функций, позволяющих выполнять операции с файлами, директориями, переменными окружения и многими другими аспектами операционной системы.

Что такое модуль os?

Модуль os в Python предоставляет множество функций для работы с операционной системой, делая их доступными для Python-разработчиков. Он позволяет выполнять различные операции, такие как чтение и запись файлов, управление процессами, работа с директориями и многое другое.

Преимущества использования модуля os:

- Кросс-платформенность: Модуль os предоставляет абстракцию для операций, специфичных для операционной системы, что обеспечивает кросс-платформенную совместимость.

- Работа с файлами и директориями: Вы можете легко выполнять операции чтения, записи, удаления файлов, а также управлять структурой директорий.

- Управление процессами: Модуль os позволяет вам взаимодействовать с процессами операционной системы, запускать новые процессы и многое другое.

- Переменные окружения: Вы можете управлять переменными окружения вашего приложения, что полезно при конфигурировании и настройке.

Как использовать модуль os?

Для начала работы с модулем os, вам необходимо просто импортировать его:
import os

Затем вы можете использовать различные функции модуля os в зависимости от ваших потребностей. Например, для получения текущей директории:
current_directory = os.getcwd()
print("Текущая директория:", current_directory)

Модуль os предоставляет множество других функций, таких как os.listdir(), os.mkdir(), os.remove() и многие другие, для выполнения различных операций.

#python #os
Взаимодействие с HTTP с помощью curl_cffi

Что такое curl_cffi?

curl_cffi - это обертка над библиотекой libcurl, предоставляющая Python-разработчикам удобный интерфейс для отправки HTTP-запросов, управления сессиями и обработки ответов.

Плюсы использования curl_cffi:
- Поддерживает подделку отпечатков JA3/TLS и http2.
- Гораздо быстрее, чем requests/httpx, сопоставимо с aiohttp/pycurl.
- Одинаковый синтаксис как и у requests.
- Предварительно скомпилирован, поэтому вам не нужно компилировать его на вашем компьютере.
- Поддерживает asyncio с поворотом прокси для каждого запроса.
- Поддерживает http 2.0, что не предоставляет requests.

Пример использования curl_cffi:

from curl_cffi import Curl

# Создание объекта Curl
curl = Curl()

# Установка URL
curl.setopt(Curl.URL, 'https://api.example.com')

# Выполнение GET-запроса
curl.perform()

# Получение ответа
response = curl.getvalue()

# Вывод результата выполнения запроса
print(response)


В данном примере мы создаем объект Curl, устанавливаем URL и выполняем GET-запрос. Результат запроса сохраняется в переменной response.

Настройка параметров запроса:

from curl_cffi import Curl

# Создание объекта Curl
curl = Curl()

# Установка URL
curl.setopt(Curl.URL, 'https://api.example.com')

# Установка параметров запроса
curl.setopt(Curl.HTTPHEADER, ['Content-Type: application/json'])
curl.setopt(Curl.POSTFIELDS, '{"key": "value"}')

# Выполнение POST-запроса
curl.perform()

# Получение ответа
response = curl.getvalue()

# Вывод результата выполнения запроса
print(response)


В данном примере мы добавляем заголовок и данные для POST-запроса. Метод setopt используется для установки различных параметров запроса.

Модуль curl_cffi обладает богатым функционалом, таким как управление cookie, обработка редиректов, аутентификация, и многое другое.

Надеюсь, что вы найдете модуль curl_cffi полезным в ваших проектах, требующих взаимодействия с внешними серверами по протоколу HTTP. Для более подробной информации ознакомьтесь с документацией.

#python #curl_cffi
Исследование структуры кода с помощью модуля ast

При работе с кодом на Python, иногда возникает необходимость анализа его структуры. Для этого идеально подходит модуль ast (Abstract Syntax Trees), который предоставляет мощные инструменты для работы с абстрактными синтаксическими деревьями.

Что такое ast?

ast - это модуль Python, который позволяет разбирать и анализировать исходный код на Python, представляя его в виде абстрактного синтаксического дерева (AST). AST представляет собой структурированное представление кода, которое легко интерпретировать и анализировать.

Пример использования модуля ast:

import ast

code = "print('Hello, ast!')"
tree = ast.parse(code)

print(ast.dump(tree))


В данном примере мы использовали функцию ast.parse для разбора строки кода с помощью модуля ast. Функция ast.dump выводит структуру AST в удобочитаемом формате.

Анализ структуры кода:

import ast

code = """
def greet(name):
print(f'Hello, {name}!')
"""

tree = ast.parse(code)

for node in ast.walk(tree):
if isinstance(node, ast.FunctionDef):
print(f"Найдена функция: {node.name}")
elif isinstance(node, ast.Print):
print("Обнаружен оператор печати")

В данном примере мы использовали модуль ast для анализа структуры кода. Функция ast.walk позволяет обойти все узлы AST, а затем мы проверяем их типы для выделения определенных элементов, таких как функции или операторы.

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

#python #ast #анализкода
Работа с регулярными выражениями используя re

Регулярные выражения (регулярки) являются инструментом для работы с текстовой информацией. Они позволяют осуществлять поиск, извлечение и модификацию текста, используя гибкие шаблоны. Сегодня, мы рассмотрим, как работать с регулярками в Python используя модуль re.

Что такое модуль re?

Модуль re в Python предоставляет функционал для работы с регулярными выражениями. Регулярные выражения (regex) - это шаблоны, описывающие набор символов с определенными свойствами.

В данном примере мы использовали функцию re.search для поиска подстроки в тексте. Параметр re.IGNORECASE делает поиск регистронезависимым.

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

Для более подробной информации рекомендуется изучить официальную документацию

#python #regex
Локализация в Python с помощью модуля gettext

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

Что такое gettext?
gettext - это модуль Python, предназначенный для обеспечения поддержки интернационализации и локализации. Он позволяет создавать переводы строк на различные языки, обеспечивая легкость адаптации приложения под разные культурные контексты.

Пример использования gettext:
import gettext
from pathlib import Path
translations = gettext.translation('your_app', localedir=Path('locales'), languages=['ru'])
translations.install()
print(_("Hello, gettext!"))

В данном примере мы используем модуль gettext для загрузки файлов перевода из директории 'locales' для русского языка. Функция _() используется для обозначения строк, подлежащих локализации.

Создание файлов перевода:
Для создания файлов перевода можно воспользоваться утилитой pybabel:
pybabel extract -F babel.cfg -o messages.pot your_app
pybabel init -i messages.pot -d locales -l ru


gettext также предоставляет множество возможностей для более сложных сценариев локализации, таких как форматирование чисел, дат и поддержка множественных форм.
#python #gettext #i18n
Работа с форматированием текста

textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.

Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.

Немного о возможностях:

textwrap.fill() — принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.

textwrap.dedent() — используется для удаления общего префикса пробела из всех строк в тексте.

textwrap.indent() — используется для добавления текст префикса ко всем строкам в параграфе

#python #textwrap
Типизация в Python с использованием модуля typing

В Python модуль typing предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным.

Зачем использовать типизацию?

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

2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.

3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.

Пример использования типизации для переменных и функций:
from typing import List, Tuple

def multiply(a: int, b: int) -> int:
return a * b

def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average

# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]


Здесь a: int и b: int указывают на типы аргументов функции, а -> int и -> Tuple[int, int] - на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.

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

#python #typing
Оптимизация Памяти в Python с Библиотекой gc

Если вы заботитесь о производительности ваших Python-приложений, то библиотека gc (Garbage Collector) вам точно пригодится. Давайте рассмотрим, почему.

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

import gc

gc.enable()

class SampleObject:
def __init__(self, value):
self.value = value

objects_list = [SampleObject(i) for i in range(1000000)]

gc.collect()

# Пример обработки данных (например, фильтрация объектов)
filtered_objects = [obj for obj in objects_list if obj.value % 2 == 0]

gc.collect()

print(filtered_objects[:10])


В приведенном коде мы создаем список объектов SampleObject, который может занять значительное количество памяти. После обработки данных или в других стратегических точках программы, вызывается сборщик мусора для освобождения памяти, занятой неиспользуемыми объектами.

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

#python #gc #garbagecleaner
Параллельное Исполнение в Python с Помощью Модуля threading

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

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

Пример:

import threading
import time

# Функция, которую будем выполнять в параллельных потоках
def print_numbers():
for i in range(5):
time.sleep(1) # Эмулируем длительную операцию
print(f"Thread {threading.current_thread().name}: {i}")

# Создаем два потока
thread1 = threading.Thread(target=print_numbers, name="Thread 1")
thread2 = threading.Thread(target=print_numbers, name="Thread 2")

# Запускаем потоки
thread1.start()
thread2.start()

# Ожидаем завершения потоков перед завершением программы
thread1.join()
thread2.join()

print("Главный поток выполнения завершен.")


В данном примере создаются два потока, каждый из которых выполняет функцию print_numbers, эмулируя длительную операцию с использованием time.sleep. Запуск потоков осуществляется с помощью метода start(), и главный поток ожидает их завершения с использованием метода join().

Модуль threading предоставляет удобные средства для работы с параллельными потоками в Python, что позволяет улучшить производительность приложений. Однако, следует быть внимательными при работе с потоками из-за потенциальных проблем с блокировками и синхронизацией данных. Попробуйте интегрировать threading в свой код и ускорьте выполнение задач! 💻

#python #threading
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Рассказывали вам про задачи на Yandex Cup 2023. В финале команда Яндекса также решила совместить IT и искусство. Пространство было оформлено в стиле демосцены — субкультуры, связанной с компьютерным искусством и киберкультурой, и сами задачи также были тематическими. 

Один из запоминающихся арт-объектов соревнования: музыкальный перформанс “Код степи”, созданный участниками лейбла qazaq indie — Балхаш снится, Samrattama, — и другими независимыми художниками, где объединились элементы казахстанской культуры и технологий. Код, который писали участники, был синтезирован в звук и стал частью музыкального произведения.   

Получилось очень атмосферно. Было ощущение, что смотришь не трансляцию соревнования, а стрим из киберпанк-будущего. Кстати, в процессе решения задач, участники могли послушать доклады от финалистов ML-трека. Советую посмотреть эту часть, если любите участвовать в IT-соревнованиях, тут над организацией прямо заморочились.
Валидаторы данных

Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.

Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.

Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

#python #validators
Паттерн проектирования Singleton

Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр. 

Метод __new__ вызывается для создания экземпляра класса, перед вызовом __init__. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.

#классы #паттерны
Работа с PDF файлами используя PyPDF2

В этом посте, вы узнаете, как работать с PDF-файлами в Python. PyPDF2 предоставляет функциональность для работы с PDF-файлами в Python, позволяя автоматизировать процессы обработки и анализа документов в формате PDF.

Пример кода:

import PyPDF2

with open('example.pdf', 'rb') as file:

pdf_reader = PyPDF2.PdfReader(file)

num_pages = len(pdf_reader.pages)
print(f"Количество страниц в PDF: {num_pages}")

first_page_text = pdf_reader.pages[0].extract_text()
print("Текст с первой страницы:")
print(first_page_text)

pdf_writer = PyPDF2.PdfWriter()

pdf_writer.add_page(pdf_reader.pages[0])

with open('new_document.pdf', 'wb') as new_file:
pdf_writer.write(new_file)

print("Обработка PDF завершена.")


В этом примере мы открываем PDF-файл, используя PyPDF2, извлекаем информацию о количестве страниц и тексте с первой страницы. Затем мы создаем новый PDF-файл, добавляем в него первую страницу и сохраняем его под именем "new_document.pdf".

PyPDF2 - это мощный инструмент для работы с PDF-документами в Python. Он предоставляет возможности для чтения, создания и манипулирования PDF-файлами, что делает его отличным выбором для автоматизации задач, связанных с обработкой документов в этом формате.

#python #pypdf2
Хеширование в Python используя hashlib

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

Пример кода:
import hashlib

# Пример хеширования строки с использованием SHA-256
data_to_hash = "Hello, World!"
hashed_data = hashlib.sha256(data_to_hash.encode()).hexdigest()

print(f"Исходные данные: {data_to_hash}")
print(f"Хеш-сумма (SHA-256): {hashed_data}")
В этом примере мы используем алгоритм SHA-256 из библиотеки hashlib для создания хеш-суммы строки "Hello, World!". Результат выводится в шестнадцатеричном формате.

Библиотека hashlib является одним из лучших инструментов для обеспечения безопасности данных в Python. Путем использования различных алгоритмов хеширования, таких как MD5, SHA-256 и других, вы можете обеспечить целостность данных и повысить уровень безопасности ваших приложений.

#python #hashlib
🌐 Копирование веб-содержимого в Python с библиотекой pywebcopy

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

Пример кода:

from pywebcopy import save_webpage

url = 'https://www.example.com'

target_folder = 'path/to/folder'

save_webpage(url, target_folder)


В данном примере используется функция save_webpage для копирования веб-содержимого указанной веб-страницы (url) в указанную целевую папку (target_folder).

Библиотека pywebcopy предоставляет простой и удобный способ копирования веб-содержимого прямо из Python. Она может быть полезна при создании скриптов для загрузки данных с веб-страниц, автоматизации сбора информации или создании зеркал сайтов. 💻

#python #pywebcopy
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAML

PyYAML позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language), который широко используется для конфигураций, настроек и обмена данными в структурированной форме.

import yaml

data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'}
with open('example.yaml', 'w') as file:
yaml.dump(data_to_write, file, default_flow_style=False)

with open('example.yaml', 'r') as file:
loaded_data = yaml.safe_load(file)
print(f"Загруженные данные: {loaded_data}")


Результат (файл example.yaml):
age: 30
city: Example City
name: John Doe

В этом примере мы используем PyYAML для записи словаря data_to_write в файл example.yaml и затем загружаем данные из этого файла обратно в переменную loaded_data.

Библиотека PyYAML предоставляет удобные средства для работы с данными в формате YAML в Python. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML имеет преимущество, PyYAML обеспечивает легкость в использовании и читаемый код🐍

#python #yaml #pyyaml
Please open Telegram to view this post
VIEW IN TELEGRAM
Все сервисы Норникеля для работников, собранные в суперапе «Суперника» — нашли отклик в сердцах работников, ведь приложение уже используют 40 тысяч человек из 22 городов России.

Приложение оказалось крайне полезным, потому что у 75% сотрудников нет ПК на рабочем месте. Суперап доступен на любом мобильном устройстве, а также в десктоп-версии с любого компьютера. В личном кабинете можно узнать информацию об отпуске, стаже работы. Есть возможность настроить новостную ленту, получить доступ к документам и справкам, узнать о корпоративных мероприятиях и оставить отклик. Также можно общаться между собой в чатах на звонках и видеосвязи.

В основе «Суперники» микросервисная архитектура. Для быстрой и бесшовной работы приложения потребовалось разработать, согласовать, прописать и настроить 3500 правил. Все сервисы работают независимо друг от друга, а это более тысячи различных соединений.
2025/02/23 12:13:26
Back to Top
HTML Embed Code: