Получение зависимостей пакета из JSON

Разберите JSON, извлеките dependencies и вызовите функцию загрузки для каждой пары package/version. Не угадывайте сигнатуру загрузчика: передайте его зависимостью с явно оговорённым контрактом.

Короткий ответ

Что ответить на собеседовании

Разберите JSON, извлеките dependencies и вызовите функцию загрузки для каждой пары package/version. Не угадывайте сигнатуру загрузчика: передайте его зависимостью с явно оговорённым контрактом.

Подробный разбор

Ответ с пояснениями

Условие

Создайте функцию, которая:

  • Принимает JSON‑строку в качестве аргумента.
  • Проходит по массиву dependencies.
  • Для каждой найденной зависимости загружает соответствующий JSON, используя предоставленную функцию скачивания пакета.
json_payload = """
{
    "name": "package-01",
    "version": "3.2.1",
    "dependencies": [
        {
            "package": "package-sub-01",
            "version": "3.4.6"
        }
    ]
}
"""

Ответ

Разберите JSON, извлеките dependencies и вызовите функцию загрузки для каждой пары package/version. Не угадывайте сигнатуру загрузчика: передайте его зависимостью с явно оговорённым контрактом.

Предположим, download_package(name, version) возвращает JSON-строку:

import json

def load_dependencies(payload, download_package):
    package = json.loads(payload)
    dependencies = package.get('dependencies', [])
    if not isinstance(dependencies, list):
        raise ValueError('dependencies must be a list')
    result = []
    for dependency in dependencies:
        name, version = dependency['package'], dependency['version']
        if not isinstance(name, str) or not isinstance(version, str):
            raise ValueError('Invalid dependency')
        result.append(json.loads(download_package(name, version)))
    return result

Это загрузка непосредственных зависимостей, не транзитивного графа. Для рекурсивного обхода нужны visited по (name, version), защита от циклов, лимиты и стратегия конфликтов версий. Загруженные данные не следует автоматически исполнять.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее