Фотоскрейпинг наконец-то подъехал!
В новом v2 эндпоинте Firecrawl теперь можно тянуть картинки с сайтов. Подходит для мультимодальных LLM-приложений, дообучения моделей и прочих задач.
Можно навесить фильтры по разрешению, соотношению сторон или типу изображения.
Уже больше 66 тысяч звезд на GitHub😁
👉 @PythonPortal
В новом v2 эндпоинте Firecrawl теперь можно тянуть картинки с сайтов. Подходит для мультимодальных LLM-приложений, дообучения моделей и прочих задач.
Можно навесить фильтры по разрешению, соотношению сторон или типу изображения.
Уже больше 66 тысяч звезд на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍5
Когда атрибут определён и в экземпляре, и в классе, при обращении Python всегда берет значение из экземпляра.
Атрибут класса используется только если в экземпляре его нет.
👉 @PythonPortal
Атрибут класса используется только если в экземпляре его нет.
class Warehouse:
purpose = "storage"
region = "west"
w1 = Warehouse()
print(w1.purpose, w1.region) # storage west
w2 = Warehouse()
w2.region = "east"
print(w2.purpose, w2.region) # storage east
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤9👍5
Nano-vLLM - облегченная реализация vLLM, созданная с нуля.
Это минималистичный движок для инференса LLM размером примерно 1200 строк кода на Python, который при этом показывает производительность на уровне vLLM и иногда даже выше.
Главная идея простая - дать быстрый, понятный и лёгкий движок, который можно разобрать буквально за вечер и адаптировать под свои задачи. Поддерживается кеширование, тензорный параллелизм и работа на GPU. Работает локально, без зависимости от облаков.
На тестах с моделью Qwen3-0.6B и 256 параллельными запросами Nano-vLLM показал скорость 1314.65 токенов/с против 1353.86 у vLLM. Разница не превышает 3%, при этом код Nano-vLLM проще и доступнее для модификаций.
Интерфейс совместим с vLLM, за исключением метода генерации. Примеры использования включены в репозиторий.
👉 @PythonPortal
Это минималистичный движок для инференса LLM размером примерно 1200 строк кода на Python, который при этом показывает производительность на уровне vLLM и иногда даже выше.
Главная идея простая - дать быстрый, понятный и лёгкий движок, который можно разобрать буквально за вечер и адаптировать под свои задачи. Поддерживается кеширование, тензорный параллелизм и работа на GPU. Работает локально, без зависимости от облаков.
На тестах с моделью Qwen3-0.6B и 256 параллельными запросами Nano-vLLM показал скорость 1314.65 токенов/с против 1353.86 у vLLM. Разница не превышает 3%, при этом код Nano-vLLM проще и доступнее для модификаций.
Интерфейс совместим с vLLM, за исключением метода генерации. Примеры использования включены в репозиторий.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍5👀4🔥1
Знаешь, что неприятно реализовывать в Python?
Функцию скользящего среднего.
Ручное хранение всех значений в окне, тот ещё гемор.
Если только ты не используешь collections.deque.
Её параметр maxlen позволяет автоматически выбрасывать лишние значения из окна.
👉 @PythonPortal
Функцию скользящего среднего.
Ручное хранение всех значений в окне, тот ещё гемор.
Если только ты не используешь collections.deque.
Её параметр maxlen позволяет автоматически выбрасывать лишние значения из окна.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥8❤7👀4💊1
Сегодня разработчики представили новый формат данных под названием TOON. Его уже успели окрестить сменщиком JSON. Идея простая: дать ИИ понятный, компактный и быстрый формат без лишнего мусора и перегруженной структуры.
TOON экономит токены, ускоряет обработку и уменьшает объем передаваемых данных. По заявлениям авторов, формат оптимизирован не только для хранения, но и для взаимодействия с моделями искусственного интеллекта, включая гибридные и мультимодальные системы.
Поддержка уже заявлена для JavaScript, Python, Rust, Java и еще нескольких языков, а значит разработчики могут попробовать формат прямо сейчас, без ожидания экосистемы и сторонних библиотек.
Goodbye JSON, hello TOON.🌟
👉 @PythonPortal
TOON экономит токены, ускоряет обработку и уменьшает объем передаваемых данных. По заявлениям авторов, формат оптимизирован не только для хранения, но и для взаимодействия с моделями искусственного интеллекта, включая гибридные и мультимодальные системы.
Поддержка уже заявлена для JavaScript, Python, Rust, Java и еще нескольких языков, а значит разработчики могут попробовать формат прямо сейчас, без ожидания экосистемы и сторонних библиотек.
Goodbye JSON, hello TOON.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤42🤔12
Please open Telegram to view this post
VIEW IN TELEGRAM
❤54😁32🤣12👍7
Представляю Goldman Sachs GS-Quant
Python-инструментарий для количественного анализа, созданный Goldman Sachs.
GS Quant — это Python-набор инструментов для квант-финансов, построенный на базе одной из самых мощных платформ управления рисками.
GS Quant создан для ускорения разработки квант-трейдинговых стратегий и решений для риск-менеджмента. В его основе более 25 лет опыта работы на глобальных рынках.
Чтобы получить доступ к API, нужен client id и secret. Они доступны только институциональным клиентам Goldman Sachs.
Исходники GS-Quant можно найти на GitHub:
https://github.com/goldmansachs/gs-quant
👉 @PythonPortal
Python-инструментарий для количественного анализа, созданный Goldman Sachs.
GS Quant — это Python-набор инструментов для квант-финансов, построенный на базе одной из самых мощных платформ управления рисками.
GS Quant создан для ускорения разработки квант-трейдинговых стратегий и решений для риск-менеджмента. В его основе более 25 лет опыта работы на глобальных рынках.
Чтобы получить доступ к API, нужен client id и secret. Они доступны только институциональным клиентам Goldman Sachs.
Исходники GS-Quant можно найти на GitHub:
https://github.com/goldmansachs/gs-quant
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤11👍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Теперь в Minecraft можно генерировать 3D-объекты по одному промпту.
Мод Falcraft добавляет в игру продвинутый AI. Можно на лету менять текстуры блоков через NanoBanana или генерировать целые 3D-структуры одной командой прямо во время игры.🌟
Скачать на GitHub: https://github.com/blendi-remade/falcraft?tab=readme-ov-file
👉 @PythonPortal
Мод Falcraft добавляет в игру продвинутый AI. Можно на лету менять текстуры блоков через NanoBanana или генерировать целые 3D-структуры одной командой прямо во время игры.
Скачать на GitHub: https://github.com/blendi-remade/falcraft?tab=readme-ov-file
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26😁4💊4
Совет по чистым тестам в Python:
В большинстве случаев твои тесты должны покрывать:
- все happy path сценарии
- edge/corner/boundary кейсы
- негативные тесты
- проверки на безопасность и некорректные вводы
👉 @PythonPortal
В большинстве случаев твои тесты должны покрывать:
- все happy path сценарии
- edge/corner/boundary кейсы
- негативные тесты
- проверки на безопасность и некорректные вводы
import uuid
from dataclasses import dataclass
from typing import Optional
@dataclass
class User:
username: str
class InMemoryUserRepository:
def __init__(self):
self._users = []
def add(self, user: User) -> None:
self._users.append(user)
def search(self, query: Optional[str] = None) -> list[User]:
if query is None:
return self._users
else:
return [
user
for user in self._users
if query in user.username
]
# happy path
def test_search_users_without_query_lists_all_users():
user1 = User(username="[email protected]")
user2 = User(username="[email protected]")
repository = InMemoryUserRepository()
repository.add(user1)
repository.add(user2)
assert repository.search() == [user1, user2]
# happy path
def test_search_users_with_email_part_lists_all_matching_users():
user1 = User(username="[email protected]")
user2 = User(username="[email protected]")
user3 = User(username="[email protected]")
repository = InMemoryUserRepository()
repository.add(user1)
repository.add(user2)
repository.add(user3)
assert repository.search("doe") == [user1, user3]
# edge test case
def test_search_users_with_empty_query_lists_all_users():
user1 = User(username="[email protected]")
user2 = User(username="[email protected]")
repository = InMemoryUserRepository()
repository.add(user1)
repository.add(user2)
assert repository.search("") == [user1, user2]
# negative test case
def test_search_users_with_random_query_lists_zero_users():
user1 = User(username="[email protected]")
repository = InMemoryUserRepository()
repository.add(user1)
assert repository.search(str(uuid.uuid4())) == []
# security test
def test_search_users_with_sql_injection_has_no_effect():
user1 = User(username="[email protected]")
repository = InMemoryUserRepository()
repository.add(user1)
repository.search("DELETE FROM USERS;")
assert repository.search() == [user1]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32👍3👀2
Media is too big
VIEW IN TELEGRAM
Большая новость: теперь Google Colab можно запускать прямо внутри VS Code.
То есть можно писать код в нормальном редакторе, а ноутбук подключать к Colab GPU/TPU окружению для ML/AI задач.
Настройка занимает пару минут. И бесплатно.
Как стартануть:
1. Ставишь расширение Google Colab из Marketplace в VS Code
2. Открываешь .ipynb
3. Выбираешь ядро Colab
4. Авторизуешься и всё, поехали
👉 @PythonPortal
То есть можно писать код в нормальном редакторе, а ноутбук подключать к Colab GPU/TPU окружению для ML/AI задач.
Настройка занимает пару минут. И бесплатно.
Как стартануть:
1. Ставишь расширение Google Colab из Marketplace в VS Code
2. Открываешь .ipynb
3. Выбираешь ядро Colab
4. Авторизуешься и всё, поехали
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤35👍13🔥7💊1
Oxylabs это довольно известная компания в сфере веб-скрейпинга с десятилетним опытом.
Они выпустили Python-пакет для веб-парсинга. С его помощью можно вытаскивать данные из e-commerce сайтов, поисковиков, сервисов недвижимости и многого другого.
Вот простой пример парсинга результатов Bing:
Oxylabs умеет работать практически с любыми сайтами, но у них есть отдельные, более заточенные API для популярных площадок:
- Amazon
- Google
- Google Shopping
- Bing
- Kroger
- Wayfair
- YouTube Transcript
Подробнее про Oxylabs можно узнать на их сайте
Если нужен только Python-пакет для веб-скрейпинга, его можно найти на GitHub
👉 @PythonPortal
Они выпустили Python-пакет для веб-парсинга. С его помощью можно вытаскивать данные из e-commerce сайтов, поисковиков, сервисов недвижимости и многого другого.
Вот простой пример парсинга результатов Bing:
from oxylabs import RealtimeClient
# Указываем данные для авторизации в Oxylabs API
username = "username"
password = "password"
# Создаем Realtime-клиент с нашими кредами
client = RealtimeClient(username, password)
# Используем bing_search, чтобы получить результаты Bing по запросу "nike"
result = client.bing.scrape_search("nike")
# Выводим сырые данные (как есть)
print(result.raw)
Oxylabs умеет работать практически с любыми сайтами, но у них есть отдельные, более заточенные API для популярных площадок:
- Amazon
- Google Shopping
- Bing
- Kroger
- Wayfair
- YouTube Transcript
Подробнее про Oxylabs можно узнать на их сайте
Если нужен только Python-пакет для веб-скрейпинга, его можно найти на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍6🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣54❤20👍8😁2🤝1
Как получить минимальное и максимальное значения последовательности в Python, используя встроенные функции.
Обрати внимание: обе функции поддерживают удобный параметр default, который можно задать на случай, если последовательность окажется пустой.
👉 @PythonPortal
Обрати внимание: обе функции поддерживают удобный параметр default, который можно задать на случай, если последовательность окажется пустой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27👀9❤4😁1
Разработчики ядра Python предлагают сделать язык программирования Rust жёсткой зависимостью для Python.
Конкретно речь идёт о CPython (де-факто эталонной реализации Python)
Такая зависимость от Rust фактически сделает невозможным современный Python на ряде платформ, не поддерживаемых Rust (включая RiscOS, PPC-Mac’и, некоторые версии CentOS и другие)
👉 @PythonPortal
Конкретно речь идёт о CPython (де-факто эталонной реализации Python)
Такая зависимость от Rust фактически сделает невозможным современный Python на ряде платформ, не поддерживаемых Rust (включая RiscOS, PPC-Mac’и, некоторые версии CentOS и другие)
Please open Telegram to view this post
VIEW IN TELEGRAM
💊38❤5😁3🌚3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Я только что нашёл сайт, который объясняет HTTP-коды… через мемы.
200, 404, 500 и вся эта банда.
Учить HTTP таким способом надо прямо на первом курсе программирования.
→ https://github.com/keijeizei/httpmemes
👉 @PythonPortal
200, 404, 500 и вся эта банда.
Учить HTTP таким способом надо прямо на первом курсе программирования.
→ https://github.com/keijeizei/httpmemes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤13😁5🤝1