Merge remote-tracking branch 'upstream/main' into ruff-i

This commit is contained in:
Milas Bowman 2024-03-29 13:20:21 -04:00
commit 310d70e52a
9 changed files with 94 additions and 101 deletions

View File

@ -18,6 +18,19 @@ jobs:
- name: Run ruff - name: Run ruff
run: ruff docker tests run: ruff docker tests
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.x'
- run: pip3 install build && python -m build .
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist
unit-tests: unit-tests:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:

View File

@ -26,11 +26,13 @@ jobs:
with: with:
python-version: '3.x' python-version: '3.x'
- name: Generate Pacakge - name: Generate Package
run: | run: |
pip3 install setuptools wheel pip3 install build
python setup.py sdist bdist_wheel python -m build .
env: env:
# This is also supported by Hatch; see
# https://github.com/ofek/hatch-vcs#version-source-environment-variables
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DOCKER: ${{ inputs.tag }} SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DOCKER: ${{ inputs.tag }}
- name: Publish to PyPI - name: Publish to PyPI

View File

@ -1,5 +1,5 @@
TEST_API_VERSION ?= 1.43 TEST_API_VERSION ?= 1.44
TEST_ENGINE_VERSION ?= 24.0 TEST_ENGINE_VERSION ?= 25.0
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
PLATFORM := Windows PLATFORM := Windows

View File

@ -2,8 +2,8 @@ import sys
from .version import __version__ from .version import __version__
DEFAULT_DOCKER_API_VERSION = '1.43' DEFAULT_DOCKER_API_VERSION = '1.44'
MINIMUM_DOCKER_API_VERSION = '1.21' MINIMUM_DOCKER_API_VERSION = '1.24'
DEFAULT_TIMEOUT_SECONDS = 60 DEFAULT_TIMEOUT_SECONDS = 60
STREAM_HEADER_SIZE_BYTES = 8 STREAM_HEADER_SIZE_BYTES = 8
CONTAINER_LIMITS_KEYS = [ CONTAINER_LIMITS_KEYS = [

View File

@ -1,8 +1,66 @@
[build-system] [build-system]
requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[tool.setuptools_scm] [project]
write_to = 'docker/_version.py' name = "docker"
dynamic = ["version"]
description = "A Python library for the Docker Engine API."
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.8"
maintainers = [
{ name = "Docker Inc.", email = "no-reply@docker.com" },
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Other Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development",
"Topic :: Utilities",
]
dependencies = [
"requests >= 2.26.0",
"urllib3 >= 1.26.0",
"pywin32>=304; sys_platform == \"win32\"",
]
[project.optional-dependencies]
ssh = [
"paramiko>=2.4.3",
]
tls = [] # kept for backwards compatibility
websockets = [
"websocket-client >= 1.3.0",
]
[project.urls]
Changelog = "https://docker-py.readthedocs.io/en/stable/change-log.html"
Documentation = "https://docker-py.readthedocs.io"
Homepage = "https://github.com/docker/docker-py"
Source = "https://github.com/docker/docker-py"
Tracker = "https://github.com/docker/docker-py/issues"
[tool.hatch.version]
source = "vcs"
[tool.hatch.build.hooks.vcs]
version-file = "docker/_version.py"
[tool.hatch.build.targets.sdist]
include = [
"/docker",
]
[tool.ruff] [tool.ruff]
target-version = "py38" target-version = "py38"

View File

@ -1,3 +0,0 @@
[metadata]
description_file = README.rst
license = Apache License 2.0

View File

@ -1,81 +0,0 @@
#!/usr/bin/env python
import codecs
import os
from setuptools import find_packages, setup
ROOT_DIR = os.path.dirname(__file__)
SOURCE_DIR = os.path.join(ROOT_DIR)
requirements = [
'requests >= 2.26.0',
'urllib3 >= 1.26.0',
]
extras_require = {
# win32 APIs if on Windows (required for npipe support)
':sys_platform == "win32"': 'pywin32>=304',
# This is now a no-op, as similarly the requests[security] extra is
# a no-op as of requests 2.26.0, this is always available/by default now
# see https://github.com/psf/requests/pull/5867
'tls': [],
# Only required when connecting using the ssh:// protocol
'ssh': ['paramiko>=2.4.3'],
# Only required when using websockets
'websockets': ['websocket-client >= 1.3.0'],
}
with open('./test-requirements.txt') as test_reqs_txt:
test_requirements = list(test_reqs_txt)
long_description = ''
with codecs.open('./README.md', encoding='utf-8') as readme_md:
long_description = readme_md.read()
setup(
name="docker",
use_scm_version={
'write_to': 'docker/_version.py'
},
description="A Python library for the Docker Engine API.",
long_description=long_description,
long_description_content_type='text/markdown',
url='https://github.com/docker/docker-py',
project_urls={
'Documentation': 'https://docker-py.readthedocs.io',
'Changelog': 'https://docker-py.readthedocs.io/en/stable/change-log.html',
'Source': 'https://github.com/docker/docker-py',
'Tracker': 'https://github.com/docker/docker-py/issues',
},
packages=find_packages(exclude=["tests.*", "tests"]),
setup_requires=['setuptools_scm'],
install_requires=requirements,
tests_require=test_requirements,
extras_require=extras_require,
python_requires='>=3.8',
zip_safe=False,
test_suite='tests',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Other Environment',
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Topic :: Software Development',
'Topic :: Utilities',
'License :: OSI Approved :: Apache Software License',
],
maintainer='Docker, Inc.',
maintainer_email='no-reply@docker.com',
)

View File

@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
ARG API_VERSION=1.43 ARG API_VERSION=1.44
ARG ENGINE_VERSION=24.0 ARG ENGINE_VERSION=25.0
FROM docker:${ENGINE_VERSION}-dind FROM docker:${ENGINE_VERSION}-dind

View File

@ -109,12 +109,12 @@ class ContainerCollectionTest(BaseIntegrationTest):
client.networks.create(net_name) client.networks.create(net_name)
self.tmp_networks.append(net_name) self.tmp_networks.append(net_name)
test_aliases = ['hello'] test_alias = 'hello'
test_driver_opt = {'key1': 'a'} test_driver_opt = {'key1': 'a'}
networking_config = { networking_config = {
net_name: client.api.create_endpoint_config( net_name: client.api.create_endpoint_config(
aliases=test_aliases, aliases=[test_alias],
driver_opt=test_driver_opt driver_opt=test_driver_opt
) )
} }
@ -131,8 +131,10 @@ class ContainerCollectionTest(BaseIntegrationTest):
assert 'NetworkSettings' in attrs assert 'NetworkSettings' in attrs
assert 'Networks' in attrs['NetworkSettings'] assert 'Networks' in attrs['NetworkSettings']
assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name] assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name]
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] == \ # Expect Aliases to list 'test_alias' and the container's short-id.
test_aliases # In API version 1.45, the short-id will be removed.
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] \
== [test_alias, attrs['Id'][:12]]
assert attrs['NetworkSettings']['Networks'][net_name]['DriverOpts'] \ assert attrs['NetworkSettings']['Networks'][net_name]['DriverOpts'] \
== test_driver_opt == test_driver_opt
@ -189,7 +191,9 @@ class ContainerCollectionTest(BaseIntegrationTest):
assert 'NetworkSettings' in attrs assert 'NetworkSettings' in attrs
assert 'Networks' in attrs['NetworkSettings'] assert 'Networks' in attrs['NetworkSettings']
assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name] assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name]
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] is None # Aliases should include the container's short-id (but it will be removed
# in API v1.45).
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] == [attrs["Id"][:12]]
assert (attrs['NetworkSettings']['Networks'][net_name]['DriverOpts'] assert (attrs['NetworkSettings']['Networks'][net_name]['DriverOpts']
is None) is None)