cdk-secret-manager-wrapper-layer 2.0.781__py3-none-any.whl → 2.1.242__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cdk-secret-manager-wrapper-layer might be problematic. Click here for more details.
- cdk_secret_manager_wrapper_layer/__init__.py +90 -25
- cdk_secret_manager_wrapper_layer/_jsii/__init__.py +2 -2
- cdk_secret_manager_wrapper_layer/_jsii/cdk-secret-manager-wrapper-layer@2.1.242.jsii.tgz +0 -0
- {cdk_secret_manager_wrapper_layer-2.0.781.dist-info → cdk_secret_manager_wrapper_layer-2.1.242.dist-info}/METADATA +29 -15
- cdk_secret_manager_wrapper_layer-2.1.242.dist-info/RECORD +9 -0
- {cdk_secret_manager_wrapper_layer-2.0.781.dist-info → cdk_secret_manager_wrapper_layer-2.1.242.dist-info}/WHEEL +1 -1
- cdk_secret_manager_wrapper_layer/_jsii/cdk-secret-manager-wrapper-layer@2.0.781.jsii.tgz +0 -0
- cdk_secret_manager_wrapper_layer-2.0.781.dist-info/RECORD +0 -9
- {cdk_secret_manager_wrapper_layer-2.0.781.dist-info → cdk_secret_manager_wrapper_layer-2.1.242.dist-info}/LICENSE +0 -0
- {cdk_secret_manager_wrapper_layer-2.0.781.dist-info → cdk_secret_manager_wrapper_layer-2.1.242.dist-info}/top_level.txt +0 -0
|
@@ -5,12 +5,22 @@ that Lambda layer uses a wrapper script to fetch information from Secrets Manage
|
|
|
5
5
|
|
|
6
6
|
> idea from [source](https://github.com/aws-samples/aws-lambda-environmental-variables-from-aws-secrets-manager)
|
|
7
7
|
|
|
8
|
+
## Updates
|
|
9
|
+
|
|
10
|
+
**2025-03-02: v2.1.0**
|
|
11
|
+
|
|
12
|
+
* Added architecture parameter support for Lambda Layer
|
|
13
|
+
* Updated Python runtime from 3.9 to 3.13
|
|
14
|
+
* Fixed handler name in example code
|
|
15
|
+
* Improved layer initialization and referencing patterns
|
|
16
|
+
* Enhanced compatibility with AWS Lambda ARM64 architecture
|
|
17
|
+
|
|
8
18
|
## Example
|
|
9
19
|
|
|
10
20
|
```python
|
|
11
21
|
import { App, Stack, CfnOutput, Duration } from 'aws-cdk-lib';
|
|
12
22
|
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
|
|
13
|
-
import { Function, Runtime, Code, FunctionUrlAuthType } from 'aws-cdk-lib/aws-lambda';
|
|
23
|
+
import { Function, Runtime, Code, FunctionUrlAuthType, Architecture } from 'aws-cdk-lib/aws-lambda';
|
|
14
24
|
import { CfnSecret } from 'aws-cdk-lib/aws-secretsmanager';
|
|
15
25
|
import { SecretManagerWrapperLayer } from 'cdk-secret-manager-wrapper-layer';
|
|
16
26
|
const env = {
|
|
@@ -23,7 +33,7 @@ const stack = new Stack(app, 'testing-stack', { env });
|
|
|
23
33
|
/**
|
|
24
34
|
* Example create an Secret for testing.
|
|
25
35
|
*/
|
|
26
|
-
const secret = new CfnSecret(stack, '
|
|
36
|
+
const secret = new CfnSecret(stack, 'MySecret', {
|
|
27
37
|
secretString: JSON.stringify({
|
|
28
38
|
KEY1: 'VALUE1',
|
|
29
39
|
KEY2: 'VALUE2',
|
|
@@ -31,21 +41,25 @@ const secret = new CfnSecret(stack, 'Mysecret', {
|
|
|
31
41
|
}),
|
|
32
42
|
});
|
|
33
43
|
|
|
34
|
-
const
|
|
44
|
+
const lambdaArchitecture = Architecture.X86_64;
|
|
45
|
+
|
|
46
|
+
const layer = new SecretManagerWrapperLayer(stack, 'SecretManagerWrapperLayer', {
|
|
47
|
+
lambdaArchitecture,
|
|
48
|
+
});
|
|
35
49
|
|
|
36
50
|
const lambda = new Function(stack, 'fn', {
|
|
37
|
-
runtime: Runtime.
|
|
51
|
+
runtime: Runtime.PYTHON_3_13,
|
|
38
52
|
code: Code.fromInline(`
|
|
39
53
|
import os
|
|
40
|
-
def
|
|
54
|
+
def handler(events, contexts):
|
|
41
55
|
env = {}
|
|
42
56
|
env['KEY1'] = os.environ.get('KEY1', 'Not Found')
|
|
43
57
|
env['KEY2'] = os.environ.get('KEY2', 'Not Found')
|
|
44
58
|
env['KEY3'] = os.environ.get('KEY3', 'Not Found')
|
|
45
59
|
return env
|
|
46
60
|
`),
|
|
47
|
-
handler: 'index.
|
|
48
|
-
layers: [layer],
|
|
61
|
+
handler: 'index.handler',
|
|
62
|
+
layers: [layer.layerVersion],
|
|
49
63
|
timeout: Duration.minutes(1),
|
|
50
64
|
/**
|
|
51
65
|
* you need to define this 4 environment various.
|
|
@@ -56,6 +70,7 @@ def hander(events, contexts):
|
|
|
56
70
|
SECRET_ARN: secret.ref,
|
|
57
71
|
API_TIMEOUT: '5000',
|
|
58
72
|
},
|
|
73
|
+
architecture: lambdaArchitecture,
|
|
59
74
|
});
|
|
60
75
|
|
|
61
76
|
/**
|
|
@@ -127,19 +142,25 @@ import constructs as _constructs_77d1e7e8
|
|
|
127
142
|
|
|
128
143
|
|
|
129
144
|
class SecretManagerWrapperLayer(
|
|
130
|
-
|
|
145
|
+
_constructs_77d1e7e8.Construct,
|
|
131
146
|
metaclass=jsii.JSIIMeta,
|
|
132
147
|
jsii_type="cdk-secret-manager-wrapper-layer.SecretManagerWrapperLayer",
|
|
133
148
|
):
|
|
134
|
-
'''
|
|
135
|
-
|
|
149
|
+
'''
|
|
136
150
|
:stability: experimental
|
|
137
151
|
'''
|
|
138
152
|
|
|
139
|
-
def __init__(
|
|
153
|
+
def __init__(
|
|
154
|
+
self,
|
|
155
|
+
scope: "_constructs_77d1e7e8.Construct",
|
|
156
|
+
id: builtins.str,
|
|
157
|
+
*,
|
|
158
|
+
lambda_architecture: typing.Optional["_aws_cdk_aws_lambda_ceddda9d.Architecture"] = None,
|
|
159
|
+
) -> None:
|
|
140
160
|
'''
|
|
141
161
|
:param scope: -
|
|
142
162
|
:param id: -
|
|
163
|
+
:param lambda_architecture: (experimental) The architecture for the Lambda function that will use this layer.
|
|
143
164
|
|
|
144
165
|
:stability: experimental
|
|
145
166
|
'''
|
|
@@ -147,27 +168,68 @@ class SecretManagerWrapperLayer(
|
|
|
147
168
|
type_hints = typing.get_type_hints(_typecheckingstub__5ffb39aa2a0e2e2a32a6428a50af4da3ab83165cae954863332d289d007447bd)
|
|
148
169
|
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
149
170
|
check_type(argname="argument id", value=id, expected_type=type_hints["id"])
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
) -> "SecretManagerWrapperLayer":
|
|
171
|
+
props = SecretManagerWrapperLayerProps(lambda_architecture=lambda_architecture)
|
|
172
|
+
|
|
173
|
+
jsii.create(self.__class__, self, [scope, id, props])
|
|
174
|
+
|
|
175
|
+
@builtins.property
|
|
176
|
+
@jsii.member(jsii_name="layerVersion")
|
|
177
|
+
def layer_version(self) -> "_aws_cdk_aws_lambda_ceddda9d.ILayerVersion":
|
|
158
178
|
'''
|
|
159
|
-
:
|
|
179
|
+
:stability: experimental
|
|
180
|
+
'''
|
|
181
|
+
return typing.cast("_aws_cdk_aws_lambda_ceddda9d.ILayerVersion", jsii.get(self, "layerVersion"))
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
@jsii.data_type(
|
|
185
|
+
jsii_type="cdk-secret-manager-wrapper-layer.SecretManagerWrapperLayerProps",
|
|
186
|
+
jsii_struct_bases=[],
|
|
187
|
+
name_mapping={"lambda_architecture": "lambdaArchitecture"},
|
|
188
|
+
)
|
|
189
|
+
class SecretManagerWrapperLayerProps:
|
|
190
|
+
def __init__(
|
|
191
|
+
self,
|
|
192
|
+
*,
|
|
193
|
+
lambda_architecture: typing.Optional["_aws_cdk_aws_lambda_ceddda9d.Architecture"] = None,
|
|
194
|
+
) -> None:
|
|
195
|
+
'''
|
|
196
|
+
:param lambda_architecture: (experimental) The architecture for the Lambda function that will use this layer.
|
|
160
197
|
|
|
161
198
|
:stability: experimental
|
|
162
199
|
'''
|
|
163
200
|
if __debug__:
|
|
164
|
-
type_hints = typing.get_type_hints(
|
|
165
|
-
check_type(argname="argument
|
|
166
|
-
|
|
201
|
+
type_hints = typing.get_type_hints(_typecheckingstub__524b68bc4f6f4ba7515f1e15f1ce7839f9063fa179a96dced4c022f91447f7e9)
|
|
202
|
+
check_type(argname="argument lambda_architecture", value=lambda_architecture, expected_type=type_hints["lambda_architecture"])
|
|
203
|
+
self._values: typing.Dict[builtins.str, typing.Any] = {}
|
|
204
|
+
if lambda_architecture is not None:
|
|
205
|
+
self._values["lambda_architecture"] = lambda_architecture
|
|
206
|
+
|
|
207
|
+
@builtins.property
|
|
208
|
+
def lambda_architecture(
|
|
209
|
+
self,
|
|
210
|
+
) -> typing.Optional["_aws_cdk_aws_lambda_ceddda9d.Architecture"]:
|
|
211
|
+
'''(experimental) The architecture for the Lambda function that will use this layer.
|
|
212
|
+
|
|
213
|
+
:stability: experimental
|
|
214
|
+
'''
|
|
215
|
+
result = self._values.get("lambda_architecture")
|
|
216
|
+
return typing.cast(typing.Optional["_aws_cdk_aws_lambda_ceddda9d.Architecture"], result)
|
|
217
|
+
|
|
218
|
+
def __eq__(self, rhs: typing.Any) -> builtins.bool:
|
|
219
|
+
return isinstance(rhs, self.__class__) and rhs._values == self._values
|
|
220
|
+
|
|
221
|
+
def __ne__(self, rhs: typing.Any) -> builtins.bool:
|
|
222
|
+
return not (rhs == self)
|
|
223
|
+
|
|
224
|
+
def __repr__(self) -> str:
|
|
225
|
+
return "SecretManagerWrapperLayerProps(%s)" % ", ".join(
|
|
226
|
+
k + "=" + repr(v) for k, v in self._values.items()
|
|
227
|
+
)
|
|
167
228
|
|
|
168
229
|
|
|
169
230
|
__all__ = [
|
|
170
231
|
"SecretManagerWrapperLayer",
|
|
232
|
+
"SecretManagerWrapperLayerProps",
|
|
171
233
|
]
|
|
172
234
|
|
|
173
235
|
publication.publish()
|
|
@@ -175,12 +237,15 @@ publication.publish()
|
|
|
175
237
|
def _typecheckingstub__5ffb39aa2a0e2e2a32a6428a50af4da3ab83165cae954863332d289d007447bd(
|
|
176
238
|
scope: _constructs_77d1e7e8.Construct,
|
|
177
239
|
id: builtins.str,
|
|
240
|
+
*,
|
|
241
|
+
lambda_architecture: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Architecture] = None,
|
|
178
242
|
) -> None:
|
|
179
243
|
"""Type checking stubs"""
|
|
180
244
|
pass
|
|
181
245
|
|
|
182
|
-
def
|
|
183
|
-
|
|
246
|
+
def _typecheckingstub__524b68bc4f6f4ba7515f1e15f1ce7839f9063fa179a96dced4c022f91447f7e9(
|
|
247
|
+
*,
|
|
248
|
+
lambda_architecture: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Architecture] = None,
|
|
184
249
|
) -> None:
|
|
185
250
|
"""Type checking stubs"""
|
|
186
251
|
pass
|
|
@@ -33,9 +33,9 @@ import constructs._jsii
|
|
|
33
33
|
|
|
34
34
|
__jsii_assembly__ = jsii.JSIIAssembly.load(
|
|
35
35
|
"cdk-secret-manager-wrapper-layer",
|
|
36
|
-
"2.
|
|
36
|
+
"2.1.242",
|
|
37
37
|
__name__[0:-6],
|
|
38
|
-
"cdk-secret-manager-wrapper-layer@2.
|
|
38
|
+
"cdk-secret-manager-wrapper-layer@2.1.242.jsii.tgz",
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
__all__ = [
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cdk-secret-manager-wrapper-layer
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.242
|
|
4
4
|
Summary: cdk-secret-manager-wrapper-layer
|
|
5
5
|
Home-page: https://github.com/neilkuan/cdk-secret-manager-wrapper-layer.git
|
|
6
6
|
Author: Neil Kuan<guan840912@gmail.com>
|
|
@@ -10,21 +10,20 @@ Classifier: Intended Audience :: Developers
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: JavaScript
|
|
12
12
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.9
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
16
|
Classifier: Typing :: Typed
|
|
18
17
|
Classifier: Development Status :: 4 - Beta
|
|
19
18
|
Classifier: License :: OSI Approved
|
|
20
|
-
Requires-Python: ~=3.
|
|
19
|
+
Requires-Python: ~=3.9
|
|
21
20
|
Description-Content-Type: text/markdown
|
|
22
21
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: aws-cdk-lib<3.0.0,>=2.
|
|
24
|
-
Requires-Dist: constructs<11.0.0,>=10.0.5
|
|
25
|
-
Requires-Dist: jsii<2.0.0,>=1.
|
|
26
|
-
Requires-Dist: publication>=0.0.3
|
|
27
|
-
Requires-Dist: typeguard
|
|
22
|
+
Requires-Dist: aws-cdk-lib <3.0.0,>=2.181.0
|
|
23
|
+
Requires-Dist: constructs <11.0.0,>=10.0.5
|
|
24
|
+
Requires-Dist: jsii <2.0.0,>=1.125.0
|
|
25
|
+
Requires-Dist: publication >=0.0.3
|
|
26
|
+
Requires-Dist: typeguard ==2.13.3
|
|
28
27
|
|
|
29
28
|
# `cdk-secret-manager-wrapper-layer`
|
|
30
29
|
|
|
@@ -32,12 +31,22 @@ that Lambda layer uses a wrapper script to fetch information from Secrets Manage
|
|
|
32
31
|
|
|
33
32
|
> idea from [source](https://github.com/aws-samples/aws-lambda-environmental-variables-from-aws-secrets-manager)
|
|
34
33
|
|
|
34
|
+
## Updates
|
|
35
|
+
|
|
36
|
+
**2025-03-02: v2.1.0**
|
|
37
|
+
|
|
38
|
+
* Added architecture parameter support for Lambda Layer
|
|
39
|
+
* Updated Python runtime from 3.9 to 3.13
|
|
40
|
+
* Fixed handler name in example code
|
|
41
|
+
* Improved layer initialization and referencing patterns
|
|
42
|
+
* Enhanced compatibility with AWS Lambda ARM64 architecture
|
|
43
|
+
|
|
35
44
|
## Example
|
|
36
45
|
|
|
37
46
|
```python
|
|
38
47
|
import { App, Stack, CfnOutput, Duration } from 'aws-cdk-lib';
|
|
39
48
|
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
|
|
40
|
-
import { Function, Runtime, Code, FunctionUrlAuthType } from 'aws-cdk-lib/aws-lambda';
|
|
49
|
+
import { Function, Runtime, Code, FunctionUrlAuthType, Architecture } from 'aws-cdk-lib/aws-lambda';
|
|
41
50
|
import { CfnSecret } from 'aws-cdk-lib/aws-secretsmanager';
|
|
42
51
|
import { SecretManagerWrapperLayer } from 'cdk-secret-manager-wrapper-layer';
|
|
43
52
|
const env = {
|
|
@@ -50,7 +59,7 @@ const stack = new Stack(app, 'testing-stack', { env });
|
|
|
50
59
|
/**
|
|
51
60
|
* Example create an Secret for testing.
|
|
52
61
|
*/
|
|
53
|
-
const secret = new CfnSecret(stack, '
|
|
62
|
+
const secret = new CfnSecret(stack, 'MySecret', {
|
|
54
63
|
secretString: JSON.stringify({
|
|
55
64
|
KEY1: 'VALUE1',
|
|
56
65
|
KEY2: 'VALUE2',
|
|
@@ -58,21 +67,25 @@ const secret = new CfnSecret(stack, 'Mysecret', {
|
|
|
58
67
|
}),
|
|
59
68
|
});
|
|
60
69
|
|
|
61
|
-
const
|
|
70
|
+
const lambdaArchitecture = Architecture.X86_64;
|
|
71
|
+
|
|
72
|
+
const layer = new SecretManagerWrapperLayer(stack, 'SecretManagerWrapperLayer', {
|
|
73
|
+
lambdaArchitecture,
|
|
74
|
+
});
|
|
62
75
|
|
|
63
76
|
const lambda = new Function(stack, 'fn', {
|
|
64
|
-
runtime: Runtime.
|
|
77
|
+
runtime: Runtime.PYTHON_3_13,
|
|
65
78
|
code: Code.fromInline(`
|
|
66
79
|
import os
|
|
67
|
-
def
|
|
80
|
+
def handler(events, contexts):
|
|
68
81
|
env = {}
|
|
69
82
|
env['KEY1'] = os.environ.get('KEY1', 'Not Found')
|
|
70
83
|
env['KEY2'] = os.environ.get('KEY2', 'Not Found')
|
|
71
84
|
env['KEY3'] = os.environ.get('KEY3', 'Not Found')
|
|
72
85
|
return env
|
|
73
86
|
`),
|
|
74
|
-
handler: 'index.
|
|
75
|
-
layers: [layer],
|
|
87
|
+
handler: 'index.handler',
|
|
88
|
+
layers: [layer.layerVersion],
|
|
76
89
|
timeout: Duration.minutes(1),
|
|
77
90
|
/**
|
|
78
91
|
* you need to define this 4 environment various.
|
|
@@ -83,6 +96,7 @@ def hander(events, contexts):
|
|
|
83
96
|
SECRET_ARN: secret.ref,
|
|
84
97
|
API_TIMEOUT: '5000',
|
|
85
98
|
},
|
|
99
|
+
architecture: lambdaArchitecture,
|
|
86
100
|
});
|
|
87
101
|
|
|
88
102
|
/**
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
cdk_secret_manager_wrapper_layer/__init__.py,sha256=F-I6WrOT7GJS_NSHFBiFuDCvKDVlhJ8khGlm205217w,8131
|
|
2
|
+
cdk_secret_manager_wrapper_layer/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
3
|
+
cdk_secret_manager_wrapper_layer/_jsii/__init__.py,sha256=p3Qoy1a0eT4j2lToFMi_tUiiGFJdQEiQPAT0omg5qJ8,1492
|
|
4
|
+
cdk_secret_manager_wrapper_layer/_jsii/cdk-secret-manager-wrapper-layer@2.1.242.jsii.tgz,sha256=6FZrLRYSatrwYghnEiIzjKnFDLBll0uc2GRMqGS2Rfw,30564
|
|
5
|
+
cdk_secret_manager_wrapper_layer-2.1.242.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
6
|
+
cdk_secret_manager_wrapper_layer-2.1.242.dist-info/METADATA,sha256=sqTgBeSLYPNFWbmPwn4Lcxqbf8YFZobzkwMr53T5kvk,3882
|
|
7
|
+
cdk_secret_manager_wrapper_layer-2.1.242.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
8
|
+
cdk_secret_manager_wrapper_layer-2.1.242.dist-info/top_level.txt,sha256=S-0ULzP5GOfP5NjmCK7ekQJVHW10yR77ZSmox4ws6Ms,33
|
|
9
|
+
cdk_secret_manager_wrapper_layer-2.1.242.dist-info/RECORD,,
|
|
Binary file
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
cdk_secret_manager_wrapper_layer/__init__.py,sha256=n_Wk25ny9DOlR0qgHazIwVUGt8KSWgrCu6Kj8Sar9IY,5704
|
|
2
|
-
cdk_secret_manager_wrapper_layer/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
3
|
-
cdk_secret_manager_wrapper_layer/_jsii/__init__.py,sha256=64W-XMpKTtaA4K2kaHVm6B6VyGi3LylgDQHNrSGk-PY,1492
|
|
4
|
-
cdk_secret_manager_wrapper_layer/_jsii/cdk-secret-manager-wrapper-layer@2.0.781.jsii.tgz,sha256=Qm9i7s0HaQSb43lcO-ppE3n9wRqAxv3xv5GIvK6JLjU,26962
|
|
5
|
-
cdk_secret_manager_wrapper_layer-2.0.781.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
6
|
-
cdk_secret_manager_wrapper_layer-2.0.781.dist-info/METADATA,sha256=sAXbgWRexIz_ySxpBMp51qSxUXp4hl9QqPRY-N6M6Yg,3502
|
|
7
|
-
cdk_secret_manager_wrapper_layer-2.0.781.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
8
|
-
cdk_secret_manager_wrapper_layer-2.0.781.dist-info/top_level.txt,sha256=S-0ULzP5GOfP5NjmCK7ekQJVHW10yR77ZSmox4ws6Ms,33
|
|
9
|
-
cdk_secret_manager_wrapper_layer-2.0.781.dist-info/RECORD,,
|
|
File without changes
|