Skip to content

Commit 2d4b2c4

Browse files
authored
Keyring reorg (#198)
* reorganize keyring tests to match #100 and keyring namespace to simplify names * change aws_encryption_sdk.keyring to aws_encryption_sdk.keyrings for consistency in namespace names * autoformat * disable pylint similarity checks on imports Because we provide multiple implementations of certain types of things (keyrings, etc), this was triggering pylint due to them all needing to import the same types in order to function. * remove aws_encryption_sdk namespace layer in test reorg
1 parent 998575c commit 2d4b2c4

File tree

19 files changed

+101
-41
lines changed

19 files changed

+101
-41
lines changed

src/aws_encryption_sdk/keyring/base.py renamed to src/aws_encryption_sdk/keyrings/base.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@
1111
# ANY KIND, either express or implied. See the License for the specific
1212
# language governing permissions and limitations under the License.
1313
"""Base class interface for Keyrings."""
14-
from aws_encryption_sdk.materials_managers import ( # only used for mypy; pylint: disable=unused-import,duplicate-code
14+
from aws_encryption_sdk.materials_managers import ( # only used for mypy; pylint: disable=unused-import
1515
DecryptionMaterials,
1616
EncryptionMaterials,
1717
)
18-
from aws_encryption_sdk.structures import ( # only used for mypy; pylint: disable=unused-import,duplicate-code
19-
EncryptedDataKey,
20-
)
18+
from aws_encryption_sdk.structures import EncryptedDataKey # only used for mypy; pylint: disable=unused-import
2119

2220
try: # Python 3.5.0 and 3.5.1 have incompatible typing modules
2321
from typing import Iterable # noqa pylint: disable=unused-import

src/aws_encryption_sdk/keyring/multi_keyring.py renamed to src/aws_encryption_sdk/keyrings/multi.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
from attr.validators import deep_iterable, instance_of, optional
1818

1919
from aws_encryption_sdk.exceptions import EncryptKeyError, GenerateKeyError
20-
from aws_encryption_sdk.keyring.base import DecryptionMaterials # only used for mypy so pylint: disable=unused-import
21-
from aws_encryption_sdk.keyring.base import EncryptionMaterials # only used for mypy so pylint: disable=unused-import
22-
from aws_encryption_sdk.keyring.base import Keyring
23-
from aws_encryption_sdk.structures import EncryptedDataKey # only used for mypy so pylint: disable=unused-import
20+
from aws_encryption_sdk.keyrings.base import Keyring
21+
22+
from aws_encryption_sdk.materials_managers import ( # only used for mypy; pylint: disable=unused-import
23+
DecryptionMaterials,
24+
EncryptionMaterials,
25+
)
26+
from aws_encryption_sdk.structures import EncryptedDataKey # only used for mypy; pylint: disable=unused-import
2427

2528
try: # Python 3.5.0 and 3.5.1 have incompatible typing modules
2629
from typing import Iterable # noqa pylint: disable=unused-import

src/aws_encryption_sdk/keyring/raw_keyring.py renamed to src/aws_encryption_sdk/keyrings/raw.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
# ANY KIND, either express or implied. See the License for the specific
1212
# language governing permissions and limitations under the License.
1313
"""Resources required for Raw Keyrings."""
14-
1514
import logging
1615
import os
1716

@@ -28,13 +27,18 @@
2827
from aws_encryption_sdk.internal.formatting.deserialize import deserialize_wrapped_key
2928
from aws_encryption_sdk.internal.formatting.serialize import serialize_raw_master_key_prefix, serialize_wrapped_key
3029
from aws_encryption_sdk.key_providers.raw import RawMasterKey
31-
from aws_encryption_sdk.keyring.base import Keyring
32-
from aws_encryption_sdk.materials_managers import ( # only used for mypy so pylint: disable=unused-import
30+
from aws_encryption_sdk.keyrings.base import Keyring
31+
from aws_encryption_sdk.structures import ( # pylint: disable=unused-import
32+
EncryptedDataKey,
33+
KeyringTrace,
34+
MasterKeyInfo,
35+
RawDataKey,
36+
)
37+
38+
from aws_encryption_sdk.materials_managers import ( # only used for mypy; pylint: disable=unused-import
3339
DecryptionMaterials,
3440
EncryptionMaterials,
3541
)
36-
from aws_encryption_sdk.structures import EncryptedDataKey # only used for mypy so pylint: disable=unused-import
37-
from aws_encryption_sdk.structures import KeyringTrace, MasterKeyInfo, RawDataKey
3842

3943
try: # Python 3.5.0 and 3.5.1 have incompatible typing modules
4044
from typing import Iterable # noqa pylint: disable=unused-import

src/pylintrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ additional-builtins = raw_input
3333
[DESIGN]
3434
max-args = 10
3535

36+
[SIMILARITIES]
37+
ignore-imports = yes
38+
3639
[FORMAT]
3740
max-line-length = 120
3841

test/__init__.py

Whitespace-only changes.

test/functional/keyrings/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
"""Dummy stub to make linters work better."""
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
"""Dummy stub to make linters work better."""

test/functional/test_f_keyring_raw_aes.py renamed to test/functional/keyrings/raw/test_raw_aes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from aws_encryption_sdk.internal.crypto import WrappingKey
2525
from aws_encryption_sdk.internal.formatting.serialize import serialize_raw_master_key_prefix
2626
from aws_encryption_sdk.key_providers.raw import RawMasterKey
27-
from aws_encryption_sdk.keyring.raw_keyring import RawAESKeyring
27+
from aws_encryption_sdk.keyrings.raw import RawAESKeyring
2828
from aws_encryption_sdk.materials_managers import DecryptionMaterials, EncryptionMaterials
2929
from aws_encryption_sdk.structures import KeyringTrace, MasterKeyInfo, RawDataKey
3030

test/functional/test_f_keyring_raw_rsa.py renamed to test/functional/keyrings/raw/test_raw_rsa.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
)
2727
from aws_encryption_sdk.internal.crypto import WrappingKey
2828
from aws_encryption_sdk.key_providers.raw import RawMasterKey
29-
from aws_encryption_sdk.keyring.raw_keyring import RawRSAKeyring
29+
from aws_encryption_sdk.keyrings.raw import RawRSAKeyring
3030
from aws_encryption_sdk.materials_managers import DecryptionMaterials, EncryptionMaterials
3131
from aws_encryption_sdk.structures import KeyringTrace, MasterKeyInfo, RawDataKey
3232

test/functional/test_f_multi_keyring.py renamed to test/functional/keyrings/test_multi.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
from aws_encryption_sdk.identifiers import KeyringTraceFlag, WrappingAlgorithm
2020
from aws_encryption_sdk.internal.defaults import ALGORITHM
21-
from aws_encryption_sdk.keyring.multi_keyring import MultiKeyring
22-
from aws_encryption_sdk.keyring.raw_keyring import RawAESKeyring, RawRSAKeyring
21+
from aws_encryption_sdk.keyrings.multi import MultiKeyring
22+
from aws_encryption_sdk.keyrings.raw import RawAESKeyring, RawRSAKeyring
2323
from aws_encryption_sdk.materials_managers import DecryptionMaterials, EncryptionMaterials
2424
from aws_encryption_sdk.structures import KeyringTrace, MasterKeyInfo, RawDataKey
2525

test/unit/keyrings/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
"""Dummy stub to make linters work better."""

test/unit/keyrings/raw/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
"""Dummy stub to make linters work better."""

test/unit/test_keyring_raw_aes.py renamed to test/unit/keyrings/raw/test_raw_aes.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@
1919
from pytest_mock import mocker # noqa pylint: disable=unused-import
2020

2121
import aws_encryption_sdk.key_providers.raw
22-
import aws_encryption_sdk.keyring.raw_keyring
22+
import aws_encryption_sdk.keyrings.raw
2323
from aws_encryption_sdk.identifiers import Algorithm, KeyringTraceFlag, WrappingAlgorithm
2424
from aws_encryption_sdk.internal.crypto.wrapping_keys import WrappingKey
25-
from aws_encryption_sdk.keyring.base import Keyring
26-
from aws_encryption_sdk.keyring.raw_keyring import GenerateKeyError, RawAESKeyring, _generate_data_key
25+
from aws_encryption_sdk.keyrings.base import Keyring
26+
from aws_encryption_sdk.keyrings.raw import GenerateKeyError, RawAESKeyring, _generate_data_key
2727
from aws_encryption_sdk.materials_managers import EncryptionMaterials
2828
from aws_encryption_sdk.structures import MasterKeyInfo
2929

30-
from .unit_test_utils import (
30+
from ...unit_test_utils import (
3131
_DATA_KEY,
3232
_ENCRYPTED_DATA_KEY_AES,
3333
_ENCRYPTED_DATA_KEY_NOT_IN_KEYRING,
@@ -57,8 +57,8 @@ def raw_aes_keyring():
5757

5858
@pytest.fixture
5959
def patch_generate_data_key(mocker):
60-
mocker.patch.object(aws_encryption_sdk.keyring.raw_keyring, "_generate_data_key")
61-
return aws_encryption_sdk.keyring.raw_keyring._generate_data_key
60+
mocker.patch.object(aws_encryption_sdk.keyrings.raw, "_generate_data_key")
61+
return aws_encryption_sdk.keyrings.raw._generate_data_key
6262

6363

6464
@pytest.fixture

test/unit/test_keyring_raw_rsa.py renamed to test/unit/keyrings/raw/test_raw_rsa.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
from pytest_mock import mocker # noqa pylint: disable=unused-import
1818

1919
import aws_encryption_sdk.key_providers.raw
20-
import aws_encryption_sdk.keyring.raw_keyring
20+
import aws_encryption_sdk.keyrings.raw
2121
from aws_encryption_sdk.identifiers import KeyringTraceFlag, WrappingAlgorithm
2222
from aws_encryption_sdk.internal.crypto.wrapping_keys import WrappingKey
23-
from aws_encryption_sdk.keyring.base import Keyring
24-
from aws_encryption_sdk.keyring.raw_keyring import RawRSAKeyring
23+
from aws_encryption_sdk.keyrings.base import Keyring
24+
from aws_encryption_sdk.keyrings.raw import RawRSAKeyring
2525

26-
from .test_values import VALUES
27-
from .unit_test_utils import (
26+
from ...test_values import VALUES
27+
from ...unit_test_utils import (
2828
_BACKEND,
2929
_DATA_KEY,
3030
_ENCRYPTED_DATA_KEY_RSA,
@@ -58,8 +58,8 @@ def raw_rsa_private_key():
5858

5959
@pytest.fixture
6060
def patch_generate_data_key(mocker):
61-
mocker.patch.object(aws_encryption_sdk.keyring.raw_keyring, "_generate_data_key")
62-
return aws_encryption_sdk.keyring.raw_keyring._generate_data_key
61+
mocker.patch.object(aws_encryption_sdk.keyrings.raw, "_generate_data_key")
62+
return aws_encryption_sdk.keyrings.raw._generate_data_key
6363

6464

6565
@pytest.fixture

test/unit/test_keyring_base.py renamed to test/unit/keyrings/test_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import pytest
1616

1717
from aws_encryption_sdk.identifiers import Algorithm
18-
from aws_encryption_sdk.keyring.base import Keyring
18+
from aws_encryption_sdk.keyrings.base import Keyring
1919
from aws_encryption_sdk.materials_managers import DecryptionMaterials, EncryptionMaterials
2020

2121
pytestmark = [pytest.mark.unit, pytest.mark.local]

test/unit/test_keyring_multi.py renamed to test/unit/keyrings/test_multi.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
from aws_encryption_sdk.exceptions import EncryptKeyError, GenerateKeyError
2020
from aws_encryption_sdk.identifiers import WrappingAlgorithm
2121
from aws_encryption_sdk.internal.formatting import serialize
22-
from aws_encryption_sdk.keyring.base import Keyring
23-
from aws_encryption_sdk.keyring.multi_keyring import MultiKeyring
24-
from aws_encryption_sdk.keyring.raw_keyring import RawAESKeyring
22+
from aws_encryption_sdk.keyrings.base import Keyring
23+
from aws_encryption_sdk.keyrings.multi import MultiKeyring
24+
from aws_encryption_sdk.keyrings.raw import RawAESKeyring
2525

26-
from .unit_test_utils import (
26+
from ..unit_test_utils import (
2727
IdentityKeyring,
2828
OnlyGenerateKeyring,
2929
get_decryption_materials_with_data_key,
@@ -139,10 +139,10 @@ def test_keyring_with_no_generator_no_children():
139139
def test_keyring_with_invalid_parameters(generator, children):
140140
with pytest.raises(TypeError) as exc_info:
141141
MultiKeyring(generator=generator, children=children)
142-
assert exc_info.match("('children'|'generator') must be <class 'aws_encryption_sdk.keyring.base.Keyring'>.*")
142+
assert exc_info.match("('children'|'generator') must be <class 'aws_encryption_sdk.keyrings.base.Keyring'>.*")
143143

144144

145-
def test_decryption_keyrings():
145+
def test_decryption_keyring():
146146
test_multi_keyring = get_multi_keyring_with_generator_and_children()
147147
assert test_multi_keyring.generator in test_multi_keyring._decryption_keyrings
148148
for child_keyring in test_multi_keyring.children:

test/unit/test_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import aws_encryption_sdk.internal.utils
2222
from aws_encryption_sdk.exceptions import InvalidDataKeyError, SerializationError, UnknownIdentityError
2323
from aws_encryption_sdk.internal.defaults import MAX_FRAME_SIZE, MESSAGE_ID_LENGTH
24-
from aws_encryption_sdk.keyring.base import EncryptedDataKey
24+
from aws_encryption_sdk.keyrings.base import EncryptedDataKey
2525
from aws_encryption_sdk.structures import DataKey, MasterKeyInfo, RawDataKey
2626

2727
from .test_values import VALUES

test/unit/unit_test_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

2222
from aws_encryption_sdk.identifiers import Algorithm, KeyringTraceFlag, WrappingAlgorithm
2323
from aws_encryption_sdk.internal.utils.streams import InsistentReaderBytesIO
24-
from aws_encryption_sdk.keyring.base import Keyring
25-
from aws_encryption_sdk.keyring.multi_keyring import MultiKeyring
26-
from aws_encryption_sdk.keyring.raw_keyring import RawAESKeyring, RawRSAKeyring
24+
from aws_encryption_sdk.keyrings.base import Keyring
25+
from aws_encryption_sdk.keyrings.multi import MultiKeyring
26+
from aws_encryption_sdk.keyrings.raw import RawAESKeyring, RawRSAKeyring
2727
from aws_encryption_sdk.materials_managers import DecryptionMaterials, EncryptionMaterials
2828
from aws_encryption_sdk.structures import EncryptedDataKey, KeyringTrace, MasterKeyInfo, RawDataKey
2929

0 commit comments

Comments
 (0)