Skip to content

Commit 0b58572

Browse files
committed
fix: Platform--instance packing problme
Signed-off-by: Khushiyant <khushiyant2002@gmail.com>
1 parent 435f2e4 commit 0b58572

File tree

4 files changed

+19
-13
lines changed

4 files changed

+19
-13
lines changed

docker/api/image.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,10 @@ def push(self, repository, tag=None, stream=False, auth_config=None,
495495
raise errors.InvalidVersion(
496496
'platform was only introduced in API version 1.46'
497497
)
498-
params['platform'] = Platform
498+
# Handle both Platform instances and dict inputs
499+
if isinstance(platform, dict):
500+
platform = Platform(**platform)
501+
params['platform'] = platform
499502

500503
response = self._post_json(
501504
u, None, headers=headers, stream=stream, params=params

docker/types/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .containers import ContainerConfig, DeviceRequest, HostConfig, LogConfig, Ulimit
22
from .daemon import CancellableStream
33
from .healthcheck import Healthcheck
4+
from .image import Platform
45
from .networks import EndpointConfig, IPAMConfig, IPAMPool, NetworkingConfig
56
from .services import (
67
ConfigReference,

docker/types/image.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,33 @@
33

44
class Platform(DictType):
55
def __init__(self, **kwargs):
6-
architecture = kwargs.get('architecture', kwargs.get('Architecture'))
7-
os = kwargs.get('os', kwargs.get('OS'))
6+
architecture = kwargs.get('architecture')
7+
os = kwargs.get('os')
88

99
if architecture is None and os is None:
1010
raise ValueError("At least one of 'architecture' or 'os' must be provided")
1111

1212

1313
super().__init__({
14-
'Architecture': architecture,
15-
'OS': os,
16-
'OSVersion': kwargs.get('os_version', kwargs.get('OSVersion')),
17-
'OSFeatures': kwargs.get('os_features', kwargs.get('OSFeatures')),
18-
'Variant': kwargs.get('variant', kwargs.get('Variant'))
14+
'architecture': architecture,
15+
'os': os,
16+
'os_version': kwargs.get('os_version'),
17+
'os_features': kwargs.get('os_features'),
18+
'variant': kwargs.get('variant')
1919
})
2020

2121
@property
2222
def architecture(self):
23-
return self['Architecture']
23+
return self['architecture']
2424

2525
@property
2626
def os(self):
27-
return self['OS']
27+
return self['os']
2828

2929
@architecture.setter
3030
def architecture(self, value):
31-
self['Architecture'] = value
31+
self['architecture'] = value
3232

3333
@os.setter
3434
def os(self, value):
35-
self['OS'] = value
35+
self['os'] = value

tests/unit/fake_api.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from docker import constants
2+
from docker.types.image import Platform
23

34
from . import fake_stat
45

@@ -21,7 +22,8 @@
2122
FAKE_SECRET_NAME = 'super_secret'
2223
FAKE_CONFIG_ID = 'sekvs771242jfdjnvfuds8232'
2324
FAKE_CONFIG_NAME = 'super_config'
24-
FAKE_PLATFORM = "{'os': 'linux','architecture': 'arm','variant': 'v5'}"
25+
26+
FAKE_PLATFORM = Platform(os='linux', architecture='arm', variant='v5')
2527

2628
# Each method is prefixed with HTTP method (get, post...)
2729
# for clarity and readability

0 commit comments

Comments
 (0)