mirror of https://github.com/docker/docker-py.git
Merge remote-tracking branch 'upstream/main' into ruff-i
This commit is contained in:
commit
310d70e52a
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -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
|
||||||
|
|
|
@ -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 = [
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[metadata]
|
|
||||||
description_file = README.rst
|
|
||||||
license = Apache License 2.0
|
|
81
setup.py
81
setup.py
|
@ -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',
|
|
||||||
)
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue