This commit is contained in:
zezha-msft 2017-12-12 14:18:39 -08:00
Родитель 077c6922c1
Коммит a741a18d50
181 изменённых файлов: 381 добавлений и 48867 удалений

Просмотреть файл

@ -1,176 +1,21 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
The MIT License (MIT)
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
Copyright (c) 2017 Microsoft
1. Definitions.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Просмотреть файл

@ -6,6 +6,7 @@
- Optimized page blob upload for create_blob_from_* methods, by skipping the empty chunks.
- Added convenient method to generate container url (make_container_url).
- The package has switched from Apache 2.0 to the MIT license.
## Version 0.37.1:

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from .appendblobservice import AppendBlobService
from .blockblobservice import BlockBlobService

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
__author__ = 'Microsoft Corp. <ptvshelp@microsoft.com>'

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.common import AzureException
from dateutil import parser

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import threading

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from json import (

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
_ERROR_PAGE_BLOB_SIZE_ALIGNMENT = \

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from xml.sax.saxutils import escape as xml_escape

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from io import (BytesIO, IOBase, SEEK_CUR, SEEK_END, SEEK_SET, UnsupportedOperation)
from math import ceil

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
from os import path

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
from abc import ABCMeta

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from io import (
BytesIO

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.storage.common._common_conversion import _to_str

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
from os import path

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.storage.common.sharedaccesssignature import (

Просмотреть файл

@ -1,18 +1,9 @@
#!/usr/bin/env python
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
@ -63,7 +54,7 @@ setup(
version='0.37.1',
description='Microsoft Azure Storage Blob Client Library for Python',
long_description=open('README.rst', 'r').read(),
license='Apache License 2.0',
license='MIT License',
author='Microsoft Corporation',
author_email='ascl@microsoft.com',
url='https://github.com/Azure/azure-storage-python',
@ -77,7 +68,7 @@ setup(
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'License :: OSI Approved :: Apache Software License',
'License :: OSI Approved :: MIT License',
],
zip_safe=False,
packages=find_packages(),

Просмотреть файл

@ -5,6 +5,7 @@
## Version XX.XX.XX:
- Added back the ability to generate account SAS for table service.
- Fixed bug where a question mark prefix on SAS tokens causes failures.
- The package has switched from Apache 2.0 to the MIT license.
## Version 0.37.1:
- Fixed the return type of __add__ and __or__ methods on the AccountPermissions class

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from ._constants import (
__author__,

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from ._common_conversion import (
_sign_string,

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import base64

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import platform

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from dateutil import parser

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from collections import OrderedDict

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from sys import version_info

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import logging

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
import uuid

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
# Note that we import BlobService/QueueService/FileService on demand

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from abc import ABCMeta
from math import pow

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from datetime import date

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys

Просмотреть файл

@ -1,18 +1,9 @@
#!/usr/bin/env python
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
@ -63,7 +54,7 @@ setup(
version='0.37.1',
description='Microsoft Azure Storage Common Client Library for Python',
long_description=open('README.rst', 'r').read(),
license='Apache License 2.0',
license='MIT License',
author='Microsoft Corporation',
author_email='ascl@microsoft.com',
url='https://github.com/Azure/azure-storage-python',
@ -77,7 +68,7 @@ setup(
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'License :: OSI Approved :: Apache Software License',
'License :: OSI Approved :: MIT License',
],
zip_safe=False,
packages=find_packages(),

Просмотреть файл

@ -1,3 +1,7 @@
# Change Log azure-storage-file
> See [BreakingChanges](BreakingChanges.md) for a detailed list of API breaks.
## Version XX.XX.XX:
- The package has switched from Apache 2.0 to the MIT license.

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from .fileservice import FileService
from .models import (

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
__author__ = 'Microsoft Corp. <ptvshelp@microsoft.com>'

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from dateutil import parser

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import threading

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.storage.common._common_conversion import _str
from azure.storage.common._error import (

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import threading

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
from os import path

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.storage.common._common_conversion import _to_str

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.storage.common.sharedaccesssignature import (

Просмотреть файл

@ -1,18 +1,9 @@
#!/usr/bin/env python
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
@ -63,7 +54,7 @@ setup(
version='0.37.0',
description='Microsoft Azure Storage File Client Library for Python',
long_description=open('README.rst', 'r').read(),
license='Apache License 2.0',
license='MIT License',
author='Microsoft Corporation',
author_email='ascl@microsoft.com',
url='https://github.com/Azure/azure-storage-python',
@ -77,7 +68,7 @@ setup(
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'License :: OSI Approved :: Apache Software License',
'License :: OSI Approved :: MIT License',
],
zip_safe=False,
packages=find_packages(),

Просмотреть файл

@ -1,18 +1,9 @@
#!/usr/bin/env python
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from setuptools import setup
@ -38,7 +29,7 @@ setup(
version='2.0.0',
description='Microsoft Azure Storage Namespace Package [Internal]',
long_description=open('README.rst', 'r').read(),
license='Apache License 2.0',
license='MIT License',
author='Microsoft Corporation',
author_email='ascl@microsoft.com',
url='https://github.com/Azure/azure-storage-python',
@ -52,7 +43,7 @@ setup(
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'License :: OSI Approved :: Apache Software License',
'License :: OSI Approved :: MIT License',
],
zip_safe=False,
packages=[

Просмотреть файл

@ -1,3 +1,7 @@
# Change Log azure-storage-queue
> See [BreakingChanges](BreakingChanges.md) for a detailed list of API breaks.
## Version XX.XX.XX:
- The package has switched from Apache 2.0 to the MIT license.

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from .models import (
Queue,

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
__author__ = 'Microsoft Corp. <ptvshelp@microsoft.com>'

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from dateutil import parser

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import os

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from base64 import (
b64encode,

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.common import (
AzureConflictHttpError,

Просмотреть файл

@ -1,16 +1,7 @@
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from azure.storage.common.sharedaccesssignature import (

Просмотреть файл

@ -1,18 +1,9 @@
#!/usr/bin/env python
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import sys
@ -63,7 +54,7 @@ setup(
version='0.37.0',
description='Microsoft Azure Storage Queue Client Library for Python',
long_description=open('README.rst', 'r').read(),
license='Apache License 2.0',
license='MIT License',
author='Microsoft Corporation',
author_email='ascl@microsoft.com',
url='https://github.com/Azure/azure-storage-python',
@ -77,7 +68,7 @@ setup(
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'License :: OSI Approved :: Apache Software License',
'License :: OSI Approved :: MIT License',
],
zip_safe=False,
packages=find_packages(),

Просмотреть файл

@ -1,18 +1,9 @@
#!/usr/bin/env python
# -------------------------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import argparse

Просмотреть файл

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
1 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">1 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="nam">__import__</span><span class="op">(</span><span class="str">'pkg_resources'</span><span class="op">)</span><span class="op">.</span><span class="nam">declare_namespace</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
1 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">1 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="nam">__import__</span><span class="op">(</span><span class="str">'pkg_resources'</span><span class="op">)</span><span class="op">.</span><span class="nam">declare_namespace</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,171 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/blob/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/blob/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
4 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">4 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">appendblobservice</span> <span class="key">import</span> <span class="nam">AppendBlobService</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">blockblobservice</span> <span class="key">import</span> <span class="nam">BlockBlobService</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="nam">Container</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="nam">ContainerProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"> <span class="nam">Blob</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="nam">BlobProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">BlobBlock</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">BlobBlockList</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">PageRange</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">ContentSettings</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">CopyProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">ContainerPermissions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">BlobPermissions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">_LeaseActions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">AppendBlockProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">PageBlobProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">ResourceProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">Include</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">SequenceNumberAction</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">BlockListType</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">PublicAccess</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">BlobPrefix</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">DeleteSnapshot</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">pageblobservice</span> <span class="key">import</span> <span class="nam">PageBlobService</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,955 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/blob/_deserialization.py: 90%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/blob/_deserialization.py</b> :
<span class="pc_cov">90%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
162 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">151 run</span>
<span class="mis shortkey_m button_toggle_mis">11 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">11 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="stm mis"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm par run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm mis"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm run hide_run"><a href="#n124">124</a></p>
<p id="n125" class="stm run hide_run"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="stm par run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="stm mis"><a href="#n132">132</a></p>
<p id="n133" class="stm mis"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="stm run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="pln"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="stm par run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="stm mis"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="stm run hide_run"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="stm run hide_run"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="pln"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="stm run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="pln"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="stm par run hide_run"><a href="#n187">187</a></p>
<p id="n188" class="stm mis"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="stm run hide_run"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="stm run hide_run"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="stm run hide_run"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="stm run hide_run"><a href="#n200">200</a></p>
<p id="n201" class="stm run hide_run"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="pln"><a href="#n203">203</a></p>
<p id="n204" class="stm run hide_run"><a href="#n204">204</a></p>
<p id="n205" class="stm run hide_run"><a href="#n205">205</a></p>
<p id="n206" class="stm run hide_run"><a href="#n206">206</a></p>
<p id="n207" class="stm run hide_run"><a href="#n207">207</a></p>
<p id="n208" class="stm run hide_run"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="stm run hide_run"><a href="#n211">211</a></p>
<p id="n212" class="stm run hide_run"><a href="#n212">212</a></p>
<p id="n213" class="stm run hide_run"><a href="#n213">213</a></p>
<p id="n214" class="stm run hide_run"><a href="#n214">214</a></p>
<p id="n215" class="stm run hide_run"><a href="#n215">215</a></p>
<p id="n216" class="stm run hide_run"><a href="#n216">216</a></p>
<p id="n217" class="stm run hide_run"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="stm run hide_run"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="stm run hide_run"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="stm run hide_run"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="pln"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="pln"><a href="#n238">238</a></p>
<p id="n239" class="pln"><a href="#n239">239</a></p>
<p id="n240" class="pln"><a href="#n240">240</a></p>
<p id="n241" class="pln"><a href="#n241">241</a></p>
<p id="n242" class="pln"><a href="#n242">242</a></p>
<p id="n243" class="pln"><a href="#n243">243</a></p>
<p id="n244" class="pln"><a href="#n244">244</a></p>
<p id="n245" class="pln"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
<p id="n247" class="pln"><a href="#n247">247</a></p>
<p id="n248" class="pln"><a href="#n248">248</a></p>
<p id="n249" class="pln"><a href="#n249">249</a></p>
<p id="n250" class="pln"><a href="#n250">250</a></p>
<p id="n251" class="stm run hide_run"><a href="#n251">251</a></p>
<p id="n252" class="pln"><a href="#n252">252</a></p>
<p id="n253" class="pln"><a href="#n253">253</a></p>
<p id="n254" class="pln"><a href="#n254">254</a></p>
<p id="n255" class="pln"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="pln"><a href="#n257">257</a></p>
<p id="n258" class="pln"><a href="#n258">258</a></p>
<p id="n259" class="pln"><a href="#n259">259</a></p>
<p id="n260" class="pln"><a href="#n260">260</a></p>
<p id="n261" class="pln"><a href="#n261">261</a></p>
<p id="n262" class="pln"><a href="#n262">262</a></p>
<p id="n263" class="pln"><a href="#n263">263</a></p>
<p id="n264" class="pln"><a href="#n264">264</a></p>
<p id="n265" class="pln"><a href="#n265">265</a></p>
<p id="n266" class="pln"><a href="#n266">266</a></p>
<p id="n267" class="pln"><a href="#n267">267</a></p>
<p id="n268" class="pln"><a href="#n268">268</a></p>
<p id="n269" class="pln"><a href="#n269">269</a></p>
<p id="n270" class="pln"><a href="#n270">270</a></p>
<p id="n271" class="pln"><a href="#n271">271</a></p>
<p id="n272" class="pln"><a href="#n272">272</a></p>
<p id="n273" class="pln"><a href="#n273">273</a></p>
<p id="n274" class="pln"><a href="#n274">274</a></p>
<p id="n275" class="pln"><a href="#n275">275</a></p>
<p id="n276" class="pln"><a href="#n276">276</a></p>
<p id="n277" class="pln"><a href="#n277">277</a></p>
<p id="n278" class="pln"><a href="#n278">278</a></p>
<p id="n279" class="pln"><a href="#n279">279</a></p>
<p id="n280" class="pln"><a href="#n280">280</a></p>
<p id="n281" class="pln"><a href="#n281">281</a></p>
<p id="n282" class="pln"><a href="#n282">282</a></p>
<p id="n283" class="pln"><a href="#n283">283</a></p>
<p id="n284" class="pln"><a href="#n284">284</a></p>
<p id="n285" class="pln"><a href="#n285">285</a></p>
<p id="n286" class="pln"><a href="#n286">286</a></p>
<p id="n287" class="pln"><a href="#n287">287</a></p>
<p id="n288" class="pln"><a href="#n288">288</a></p>
<p id="n289" class="pln"><a href="#n289">289</a></p>
<p id="n290" class="pln"><a href="#n290">290</a></p>
<p id="n291" class="pln"><a href="#n291">291</a></p>
<p id="n292" class="pln"><a href="#n292">292</a></p>
<p id="n293" class="pln"><a href="#n293">293</a></p>
<p id="n294" class="pln"><a href="#n294">294</a></p>
<p id="n295" class="pln"><a href="#n295">295</a></p>
<p id="n296" class="stm par run hide_run"><a href="#n296">296</a></p>
<p id="n297" class="stm mis"><a href="#n297">297</a></p>
<p id="n298" class="pln"><a href="#n298">298</a></p>
<p id="n299" class="stm run hide_run"><a href="#n299">299</a></p>
<p id="n300" class="stm run hide_run"><a href="#n300">300</a></p>
<p id="n301" class="pln"><a href="#n301">301</a></p>
<p id="n302" class="stm run hide_run"><a href="#n302">302</a></p>
<p id="n303" class="pln"><a href="#n303">303</a></p>
<p id="n304" class="stm run hide_run"><a href="#n304">304</a></p>
<p id="n305" class="stm run hide_run"><a href="#n305">305</a></p>
<p id="n306" class="stm par run hide_run"><a href="#n306">306</a></p>
<p id="n307" class="stm run hide_run"><a href="#n307">307</a></p>
<p id="n308" class="stm run hide_run"><a href="#n308">308</a></p>
<p id="n309" class="stm run hide_run"><a href="#n309">309</a></p>
<p id="n310" class="stm run hide_run"><a href="#n310">310</a></p>
<p id="n311" class="pln"><a href="#n311">311</a></p>
<p id="n312" class="stm run hide_run"><a href="#n312">312</a></p>
<p id="n313" class="stm run hide_run"><a href="#n313">313</a></p>
<p id="n314" class="stm run hide_run"><a href="#n314">314</a></p>
<p id="n315" class="stm run hide_run"><a href="#n315">315</a></p>
<p id="n316" class="pln"><a href="#n316">316</a></p>
<p id="n317" class="pln"><a href="#n317">317</a></p>
<p id="n318" class="stm run hide_run"><a href="#n318">318</a></p>
<p id="n319" class="stm par run hide_run"><a href="#n319">319</a></p>
<p id="n320" class="stm run hide_run"><a href="#n320">320</a></p>
<p id="n321" class="stm run hide_run"><a href="#n321">321</a></p>
<p id="n322" class="stm par run hide_run"><a href="#n322">322</a></p>
<p id="n323" class="stm mis"><a href="#n323">323</a></p>
<p id="n324" class="stm run hide_run"><a href="#n324">324</a></p>
<p id="n325" class="stm run hide_run"><a href="#n325">325</a></p>
<p id="n326" class="pln"><a href="#n326">326</a></p>
<p id="n327" class="stm run hide_run"><a href="#n327">327</a></p>
<p id="n328" class="stm run hide_run"><a href="#n328">328</a></p>
<p id="n329" class="pln"><a href="#n329">329</a></p>
<p id="n330" class="pln"><a href="#n330">330</a></p>
<p id="n331" class="stm run hide_run"><a href="#n331">331</a></p>
<p id="n332" class="stm run hide_run"><a href="#n332">332</a></p>
<p id="n333" class="stm run hide_run"><a href="#n333">333</a></p>
<p id="n334" class="stm run hide_run"><a href="#n334">334</a></p>
<p id="n335" class="stm run hide_run"><a href="#n335">335</a></p>
<p id="n336" class="pln"><a href="#n336">336</a></p>
<p id="n337" class="pln"><a href="#n337">337</a></p>
<p id="n338" class="stm run hide_run"><a href="#n338">338</a></p>
<p id="n339" class="pln"><a href="#n339">339</a></p>
<p id="n340" class="stm run hide_run"><a href="#n340">340</a></p>
<p id="n341" class="pln"><a href="#n341">341</a></p>
<p id="n342" class="pln"><a href="#n342">342</a></p>
<p id="n343" class="stm run hide_run"><a href="#n343">343</a></p>
<p id="n344" class="pln"><a href="#n344">344</a></p>
<p id="n345" class="pln"><a href="#n345">345</a></p>
<p id="n346" class="pln"><a href="#n346">346</a></p>
<p id="n347" class="pln"><a href="#n347">347</a></p>
<p id="n348" class="pln"><a href="#n348">348</a></p>
<p id="n349" class="pln"><a href="#n349">349</a></p>
<p id="n350" class="pln"><a href="#n350">350</a></p>
<p id="n351" class="pln"><a href="#n351">351</a></p>
<p id="n352" class="pln"><a href="#n352">352</a></p>
<p id="n353" class="pln"><a href="#n353">353</a></p>
<p id="n354" class="pln"><a href="#n354">354</a></p>
<p id="n355" class="pln"><a href="#n355">355</a></p>
<p id="n356" class="pln"><a href="#n356">356</a></p>
<p id="n357" class="pln"><a href="#n357">357</a></p>
<p id="n358" class="pln"><a href="#n358">358</a></p>
<p id="n359" class="pln"><a href="#n359">359</a></p>
<p id="n360" class="pln"><a href="#n360">360</a></p>
<p id="n361" class="pln"><a href="#n361">361</a></p>
<p id="n362" class="pln"><a href="#n362">362</a></p>
<p id="n363" class="stm par run hide_run"><a href="#n363">363</a></p>
<p id="n364" class="stm mis"><a href="#n364">364</a></p>
<p id="n365" class="pln"><a href="#n365">365</a></p>
<p id="n366" class="stm run hide_run"><a href="#n366">366</a></p>
<p id="n367" class="pln"><a href="#n367">367</a></p>
<p id="n368" class="stm run hide_run"><a href="#n368">368</a></p>
<p id="n369" class="pln"><a href="#n369">369</a></p>
<p id="n370" class="stm run hide_run"><a href="#n370">370</a></p>
<p id="n371" class="stm run hide_run"><a href="#n371">371</a></p>
<p id="n372" class="stm run hide_run"><a href="#n372">372</a></p>
<p id="n373" class="stm run hide_run"><a href="#n373">373</a></p>
<p id="n374" class="stm run hide_run"><a href="#n374">374</a></p>
<p id="n375" class="stm run hide_run"><a href="#n375">375</a></p>
<p id="n376" class="stm run hide_run"><a href="#n376">376</a></p>
<p id="n377" class="stm run hide_run"><a href="#n377">377</a></p>
<p id="n378" class="pln"><a href="#n378">378</a></p>
<p id="n379" class="stm run hide_run"><a href="#n379">379</a></p>
<p id="n380" class="stm run hide_run"><a href="#n380">380</a></p>
<p id="n381" class="stm run hide_run"><a href="#n381">381</a></p>
<p id="n382" class="stm run hide_run"><a href="#n382">382</a></p>
<p id="n383" class="stm run hide_run"><a href="#n383">383</a></p>
<p id="n384" class="stm run hide_run"><a href="#n384">384</a></p>
<p id="n385" class="stm run hide_run"><a href="#n385">385</a></p>
<p id="n386" class="stm run hide_run"><a href="#n386">386</a></p>
<p id="n387" class="pln"><a href="#n387">387</a></p>
<p id="n388" class="stm run hide_run"><a href="#n388">388</a></p>
<p id="n389" class="pln"><a href="#n389">389</a></p>
<p id="n390" class="pln"><a href="#n390">390</a></p>
<p id="n391" class="stm run hide_run"><a href="#n391">391</a></p>
<p id="n392" class="pln"><a href="#n392">392</a></p>
<p id="n393" class="pln"><a href="#n393">393</a></p>
<p id="n394" class="pln"><a href="#n394">394</a></p>
<p id="n395" class="pln"><a href="#n395">395</a></p>
<p id="n396" class="pln"><a href="#n396">396</a></p>
<p id="n397" class="pln"><a href="#n397">397</a></p>
<p id="n398" class="pln"><a href="#n398">398</a></p>
<p id="n399" class="pln"><a href="#n399">399</a></p>
<p id="n400" class="pln"><a href="#n400">400</a></p>
<p id="n401" class="pln"><a href="#n401">401</a></p>
<p id="n402" class="pln"><a href="#n402">402</a></p>
<p id="n403" class="pln"><a href="#n403">403</a></p>
<p id="n404" class="pln"><a href="#n404">404</a></p>
<p id="n405" class="pln"><a href="#n405">405</a></p>
<p id="n406" class="pln"><a href="#n406">406</a></p>
<p id="n407" class="pln"><a href="#n407">407</a></p>
<p id="n408" class="pln"><a href="#n408">408</a></p>
<p id="n409" class="stm par run hide_run"><a href="#n409">409</a></p>
<p id="n410" class="stm mis"><a href="#n410">410</a></p>
<p id="n411" class="pln"><a href="#n411">411</a></p>
<p id="n412" class="stm run hide_run"><a href="#n412">412</a></p>
<p id="n413" class="pln"><a href="#n413">413</a></p>
<p id="n414" class="stm run hide_run"><a href="#n414">414</a></p>
<p id="n415" class="pln"><a href="#n415">415</a></p>
<p id="n416" class="stm run hide_run"><a href="#n416">416</a></p>
<p id="n417" class="stm run hide_run"><a href="#n417">417</a></p>
<p id="n418" class="stm run hide_run"><a href="#n418">418</a></p>
<p id="n419" class="stm par run hide_run"><a href="#n419">419</a></p>
<p id="n420" class="stm run hide_run"><a href="#n420">420</a></p>
<p id="n421" class="pln"><a href="#n421">421</a></p>
<p id="n422" class="pln"><a href="#n422">422</a></p>
<p id="n423" class="pln"><a href="#n423">423</a></p>
<p id="n424" class="stm run hide_run"><a href="#n424">424</a></p>
<p id="n425" class="pln"><a href="#n425">425</a></p>
<p id="n426" class="pln"><a href="#n426">426</a></p>
<p id="n427" class="pln"><a href="#n427">427</a></p>
<p id="n428" class="pln"><a href="#n428">428</a></p>
<p id="n429" class="pln"><a href="#n429">429</a></p>
<p id="n430" class="pln"><a href="#n430">430</a></p>
<p id="n431" class="pln"><a href="#n431">431</a></p>
<p id="n432" class="stm run hide_run"><a href="#n432">432</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">common</span> <span class="key">import</span> <span class="nam">AzureException</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="nam">dateutil</span> <span class="key">import</span> <span class="nam">parser</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">cElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"><span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm mis"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">ElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">_decode_base64_to_text</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">_to_str</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">_get_content_md5</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_deserialization</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">_parse_properties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">_int_to_str</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">_parse_metadata</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">_convert_xml_to_signed_identifiers</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">_bool</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">Container</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">Blob</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">BlobBlock</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">BlobBlockList</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">BlobBlockState</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">BlobProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">PageRange</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="nam">ContainerProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="nam">AppendBlockProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="nam">PageBlobProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="nam">ResourceProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="nam">BlobPrefix</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_encryption</span> <span class="key">import</span> <span class="nam">_decrypt_blob</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="nam">_list</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"> <span class="nam">_validate_content_match</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="nam">_ERROR_DECRYPTION_FAILURE</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_base_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="str"> Extracts basic response headers.</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="nam">resource_properties</span> <span class="op">=</span> <span class="nam">ResourceProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">resource_properties</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'last-modified'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">resource_properties</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'etag'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="key">return</span> <span class="nam">resource_properties</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_page_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="str"> Extracts page response headers.</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="nam">put_page</span> <span class="op">=</span> <span class="nam">PageBlobProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="nam">put_page</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'last-modified'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">put_page</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'etag'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="nam">put_page</span><span class="op">.</span><span class="nam">sequence_number</span> <span class="op">=</span> <span class="nam">_int_to_str</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-blob-sequence-number'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="key">return</span> <span class="nam">put_page</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_append_block</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="str"> Extracts append block response headers.</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="nam">append_block</span> <span class="op">=</span> <span class="nam">AppendBlockProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="nam">append_block</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'last-modified'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="nam">append_block</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'etag'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"> <span class="nam">append_block</span><span class="op">.</span><span class="nam">append_offset</span> <span class="op">=</span> <span class="nam">_int_to_str</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-blob-append-offset'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="nam">append_block</span><span class="op">.</span><span class="nam">committed_block_count</span> <span class="op">=</span> <span class="nam">_int_to_str</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-blob-committed-block-count'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="key">return</span> <span class="nam">append_block</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_snapshot_blob</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="str"> Extracts snapshot return header.</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="nam">snapshot</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-snapshot'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="key">return</span> <span class="nam">_parse_blob</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">snapshot</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_lease</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> Extracts lease time and ID return headers.</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"> <span class="nam">lease</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"> <span class="nam">lease</span><span class="op">[</span><span class="str">'time'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-lease-time'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="key">if</span> <span class="nam">lease</span><span class="op">[</span><span class="str">'time'</span><span class="op">]</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="nam">lease</span><span class="op">[</span><span class="str">'time'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">_int_to_str</span><span class="op">(</span><span class="nam">lease</span><span class="op">[</span><span class="str">'time'</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">lease</span><span class="op">[</span><span class="str">'id'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-lease-id'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="key">return</span> <span class="nam">lease</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_blob</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">snapshot</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">require_encryption</span><span class="op">=</span><span class="key">False</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"> <span class="nam">key_encryption_key</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">key_resolver_function</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">start_offset</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">end_offset</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm par run hide_run"><span class="annotate short">117&#x202F;&#x219B;&#x202F;118</span><span class="annotate long">line 117 didn't jump to line 118, because the condition on line 117 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">_parse_metadata</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="nam">props</span> <span class="op">=</span> <span class="nam">_parse_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">BlobProperties</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"> <span class="com"># For range gets, only look at 'x-ms-blob-content-md5' for overall MD5</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm run hide_run"> <span class="nam">content_settings</span> <span class="op">=</span> <span class="nam">getattr</span><span class="op">(</span><span class="nam">props</span><span class="op">,</span> <span class="str">'content_settings'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm run hide_run"> <span class="key">if</span> <span class="str">'content-range'</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"> <span class="key">if</span> <span class="str">'x-ms-blob-content-md5'</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">content_settings</span><span class="op">,</span> <span class="str">'content_md5'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-blob-content-md5'</span><span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="nam">delattr</span><span class="op">(</span><span class="nam">content_settings</span><span class="op">,</span> <span class="str">'content_md5'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm par run hide_run"><span class="annotate short">131&#x202F;&#x219B;&#x202F;132</span><span class="annotate long">line 131 didn't jump to line 132, because the condition on line 131 was never true</span> <span class="key">if</span> <span class="nam">validate_content</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm mis"> <span class="nam">computed_md5</span> <span class="op">=</span> <span class="nam">_get_content_md5</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm mis"> <span class="nam">_validate_content_match</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'content-md5'</span><span class="op">]</span><span class="op">,</span> <span class="nam">computed_md5</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="key">if</span> <span class="nam">key_encryption_key</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">key_resolver_function</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm run hide_run"> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="op">=</span> <span class="nam">_decrypt_blob</span><span class="op">(</span><span class="nam">require_encryption</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">,</span> <span class="nam">key_resolver_function</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"> <span class="nam">response</span><span class="op">,</span> <span class="nam">start_offset</span><span class="op">,</span> <span class="nam">end_offset</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AzureException</span><span class="op">(</span><span class="nam">_ERROR_DECRYPTION_FAILURE</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="key">return</span> <span class="nam">Blob</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">snapshot</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">,</span> <span class="nam">props</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_container</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm par run hide_run"><span class="annotate short">146&#x202F;&#x219B;&#x202F;147</span><span class="annotate long">line 146 didn't jump to line 147, because the condition on line 146 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t149" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">_parse_metadata</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="nam">props</span> <span class="op">=</span> <span class="nam">_parse_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">ContainerProperties</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="stm run hide_run"> <span class="key">return</span> <span class="nam">Container</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">props</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t153" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_signed_identifiers_and_access</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm run hide_run"> <span class="nam">acl</span> <span class="op">=</span> <span class="nam">_convert_xml_to_signed_identifiers</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run"> <span class="nam">acl</span><span class="op">.</span><span class="nam">public_access</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'x-ms-blob-public-access'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="key">return</span> <span class="nam">acl</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_containers</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"><span class="str"> &lt;EnumerationResults ServiceEndpoint="https://myaccount.blob.core.windows.net"></span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="str"> &lt;Prefix>string-value&lt;/Prefix></span><span class="strut">&nbsp;</span></p>
<p id="t166" class="pln"><span class="str"> &lt;Marker>string-value&lt;/Marker></span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"><span class="str"> &lt;MaxResults>int-value&lt;/MaxResults></span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="str"> &lt;Containers></span><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"><span class="str"> &lt;Container></span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"><span class="str"> &lt;Name>container-name&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"><span class="str"> &lt;Properties></span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="str"> &lt;Last-Modified>date/time-value&lt;/Last-Modified></span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="str"> &lt;Etag>etag&lt;/Etag></span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"><span class="str"> &lt;LeaseStatus>locked | unlocked&lt;/LeaseStatus></span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"><span class="str"> &lt;LeaseState>available | leased | expired | breaking | broken&lt;/LeaseState></span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"><span class="str"> &lt;LeaseDuration>infinite | fixed&lt;/LeaseDuration></span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="str"> &lt;PublicAccess>blob | container&lt;/PublicAccess></span><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"><span class="str"> &lt;/Properties></span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="str"> &lt;Metadata></span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"><span class="str"> &lt;metadata-name>value&lt;/metadata-name></span><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln"><span class="str"> &lt;/Metadata></span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="str"> &lt;/Container></span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="str"> &lt;/Containers></span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"><span class="str"> &lt;NextMarker>marker-value&lt;/NextMarker></span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"><span class="str"> &lt;/EnumerationResults></span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="stm par run hide_run"><span class="annotate short">187&#x202F;&#x219B;&#x202F;188</span><span class="annotate long">line 187 didn't jump to line 188, because the condition on line 187 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"> <span class="nam">containers</span> <span class="op">=</span> <span class="nam">_list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"> <span class="com"># Set next marker</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">containers</span><span class="op">,</span> <span class="str">'next_marker'</span><span class="op">,</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'NextMarker'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t196" class="stm run hide_run"> <span class="nam">containers_element</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Containers'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t198" class="stm run hide_run"> <span class="key">for</span> <span class="nam">container_element</span> <span class="key">in</span> <span class="nam">containers_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Container'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"> <span class="com"># Name element</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="stm run hide_run"> <span class="nam">container</span> <span class="op">=</span> <span class="nam">Container</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">container_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t203" class="pln"> <span class="com"># Metadata</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="stm run hide_run"> <span class="nam">metadata_root_element</span> <span class="op">=</span> <span class="nam">container_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Metadata'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="stm run hide_run"> <span class="key">if</span> <span class="nam">metadata_root_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t206" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="stm run hide_run"> <span class="key">for</span> <span class="nam">metadata_element</span> <span class="key">in</span> <span class="nam">metadata_root_element</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">metadata</span><span class="op">[</span><span class="nam">metadata_element</span><span class="op">.</span><span class="nam">tag</span><span class="op">]</span> <span class="op">=</span> <span class="nam">metadata_element</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"> <span class="com"># Properties</span><span class="strut">&nbsp;</span></p>
<p id="t211" class="stm run hide_run"> <span class="nam">properties_element</span> <span class="op">=</span> <span class="nam">container_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Properties'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Etag'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Last-Modified'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">lease_status</span> <span class="op">=</span> <span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'LeaseStatus'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">lease_state</span> <span class="op">=</span> <span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'LeaseState'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">lease_duration</span> <span class="op">=</span> <span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'LeaseDuration'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="stm run hide_run"> <span class="nam">container</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">public_access</span> <span class="op">=</span> <span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'PublicAccess'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"> <span class="com"># Add container to list</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="stm run hide_run"> <span class="nam">containers</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">container</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t222" class="stm run hide_run"> <span class="key">return</span> <span class="nam">containers</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t225" class="stm run hide_run"><span class="nam">LIST_BLOBS_ATTRIBUTE_MAP</span> <span class="op">=</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"> <span class="str">'Last-Modified'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'last_modified'</span><span class="op">,</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="pln"> <span class="str">'Etag'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'etag'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"> <span class="str">'x-ms-blob-sequence-number'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'sequence_number'</span><span class="op">,</span> <span class="nam">_int_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"> <span class="str">'BlobType'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'blob_type'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"> <span class="str">'Content-Length'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'content_length'</span><span class="op">,</span> <span class="nam">_int_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"> <span class="str">'ServerEncrypted'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'server_encrypted'</span><span class="op">,</span> <span class="nam">_bool</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"> <span class="str">'Content-Type'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_type'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"> <span class="str">'Content-Encoding'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_encoding'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"> <span class="str">'Content-Disposition'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_disposition'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"> <span class="str">'Content-Language'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_language'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"> <span class="str">'Content-MD5'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_md5'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"> <span class="str">'Cache-Control'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'cache_control'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="pln"> <span class="str">'LeaseStatus'</span><span class="op">:</span> <span class="op">(</span><span class="str">'lease'</span><span class="op">,</span> <span class="str">'status'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="pln"> <span class="str">'LeaseState'</span><span class="op">:</span> <span class="op">(</span><span class="str">'lease'</span><span class="op">,</span> <span class="str">'state'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="pln"> <span class="str">'LeaseDuration'</span><span class="op">:</span> <span class="op">(</span><span class="str">'lease'</span><span class="op">,</span> <span class="str">'duration'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="pln"> <span class="str">'CopyId'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'id'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="pln"> <span class="str">'CopySource'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'source'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="pln"> <span class="str">'CopyStatus'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'status'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="pln"> <span class="str">'CopyProgress'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'progress'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="pln"> <span class="str">'CopyCompletionTime'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'completion_time'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln"> <span class="str">'CopyStatusDescription'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'status_description'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t247" class="pln"> <span class="str">'AccessTier'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'blob_tier'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t248" class="pln"><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t249" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t250" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t251" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_blob_list</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t252" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t254" class="pln"><span class="str"> &lt;EnumerationResults ServiceEndpoint="http://myaccount.blob.core.windows.net/" ContainerName="mycontainer"></span><span class="strut">&nbsp;</span></p>
<p id="t255" class="pln"><span class="str"> &lt;Prefix>string-value&lt;/Prefix></span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln"><span class="str"> &lt;Marker>string-value&lt;/Marker></span><span class="strut">&nbsp;</span></p>
<p id="t257" class="pln"><span class="str"> &lt;MaxResults>int-value&lt;/MaxResults></span><span class="strut">&nbsp;</span></p>
<p id="t258" class="pln"><span class="str"> &lt;Delimiter>string-value&lt;/Delimiter></span><span class="strut">&nbsp;</span></p>
<p id="t259" class="pln"><span class="str"> &lt;Blobs></span><span class="strut">&nbsp;</span></p>
<p id="t260" class="pln"><span class="str"> &lt;Blob></span><span class="strut">&nbsp;</span></p>
<p id="t261" class="pln"><span class="str"> &lt;Name>blob-name&lt;/name></span><span class="strut">&nbsp;</span></p>
<p id="t262" class="pln"><span class="str"> &lt;Snapshot>date-time-value&lt;/Snapshot></span><span class="strut">&nbsp;</span></p>
<p id="t263" class="pln"><span class="str"> &lt;Properties></span><span class="strut">&nbsp;</span></p>
<p id="t264" class="pln"><span class="str"> &lt;Last-Modified>date-time-value&lt;/Last-Modified></span><span class="strut">&nbsp;</span></p>
<p id="t265" class="pln"><span class="str"> &lt;Etag>etag&lt;/Etag></span><span class="strut">&nbsp;</span></p>
<p id="t266" class="pln"><span class="str"> &lt;Content-Length>size-in-bytes&lt;/Content-Length></span><span class="strut">&nbsp;</span></p>
<p id="t267" class="pln"><span class="str"> &lt;Content-Type>blob-content-type&lt;/Content-Type></span><span class="strut">&nbsp;</span></p>
<p id="t268" class="pln"><span class="str"> &lt;Content-Encoding /></span><span class="strut">&nbsp;</span></p>
<p id="t269" class="pln"><span class="str"> &lt;Content-Language /></span><span class="strut">&nbsp;</span></p>
<p id="t270" class="pln"><span class="str"> &lt;Content-MD5 /></span><span class="strut">&nbsp;</span></p>
<p id="t271" class="pln"><span class="str"> &lt;Cache-Control /></span><span class="strut">&nbsp;</span></p>
<p id="t272" class="pln"><span class="str"> &lt;x-ms-blob-sequence-number>sequence-number&lt;/x-ms-blob-sequence-number></span><span class="strut">&nbsp;</span></p>
<p id="t273" class="pln"><span class="str"> &lt;BlobType>BlockBlob|PageBlob|AppendBlob&lt;/BlobType></span><span class="strut">&nbsp;</span></p>
<p id="t274" class="pln"><span class="str"> &lt;LeaseStatus>locked|unlocked&lt;/LeaseStatus></span><span class="strut">&nbsp;</span></p>
<p id="t275" class="pln"><span class="str"> &lt;LeaseState>available | leased | expired | breaking | broken&lt;/LeaseState></span><span class="strut">&nbsp;</span></p>
<p id="t276" class="pln"><span class="str"> &lt;LeaseDuration>infinite | fixed&lt;/LeaseDuration></span><span class="strut">&nbsp;</span></p>
<p id="t277" class="pln"><span class="str"> &lt;CopyId>id&lt;/CopyId></span><span class="strut">&nbsp;</span></p>
<p id="t278" class="pln"><span class="str"> &lt;CopyStatus>pending | success | aborted | failed &lt;/CopyStatus></span><span class="strut">&nbsp;</span></p>
<p id="t279" class="pln"><span class="str"> &lt;CopySource>source url&lt;/CopySource></span><span class="strut">&nbsp;</span></p>
<p id="t280" class="pln"><span class="str"> &lt;CopyProgress>bytes copied/bytes total&lt;/CopyProgress></span><span class="strut">&nbsp;</span></p>
<p id="t281" class="pln"><span class="str"> &lt;CopyCompletionTime>datetime&lt;/CopyCompletionTime></span><span class="strut">&nbsp;</span></p>
<p id="t282" class="pln"><span class="str"> &lt;CopyStatusDescription>error string&lt;/CopyStatusDescription></span><span class="strut">&nbsp;</span></p>
<p id="t283" class="pln"><span class="str"> &lt;AccessTier>P4 | P6 | P10 | P20 | P30 | P40 | P50 | P60&lt;/AccessTier></span><span class="strut">&nbsp;</span></p>
<p id="t284" class="pln"><span class="str"> &lt;/Properties></span><span class="strut">&nbsp;</span></p>
<p id="t285" class="pln"><span class="str"> &lt;Metadata> </span><span class="strut">&nbsp;</span></p>
<p id="t286" class="pln"><span class="str"> &lt;Name>value&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t287" class="pln"><span class="str"> &lt;/Metadata></span><span class="strut">&nbsp;</span></p>
<p id="t288" class="pln"><span class="str"> &lt;/Blob></span><span class="strut">&nbsp;</span></p>
<p id="t289" class="pln"><span class="str"> &lt;BlobPrefix></span><span class="strut">&nbsp;</span></p>
<p id="t290" class="pln"><span class="str"> &lt;Name>blob-prefix&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t291" class="pln"><span class="str"> &lt;/BlobPrefix></span><span class="strut">&nbsp;</span></p>
<p id="t292" class="pln"><span class="str"> &lt;/Blobs></span><span class="strut">&nbsp;</span></p>
<p id="t293" class="pln"><span class="str"> &lt;NextMarker /></span><span class="strut">&nbsp;</span></p>
<p id="t294" class="pln"><span class="str"> &lt;/EnumerationResults></span><span class="strut">&nbsp;</span></p>
<p id="t295" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t296" class="stm par run hide_run"><span class="annotate short">296&#x202F;&#x219B;&#x202F;297</span><span class="annotate long">line 296 didn't jump to line 297, because the condition on line 296 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t297" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t298" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t299" class="stm run hide_run"> <span class="nam">blob_list</span> <span class="op">=</span> <span class="nam">_list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t300" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t301" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t302" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">blob_list</span><span class="op">,</span> <span class="str">'next_marker'</span><span class="op">,</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'NextMarker'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t303" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t304" class="stm run hide_run"> <span class="nam">blobs_element</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Blobs'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t305" class="stm run hide_run"> <span class="nam">blob_prefix_elements</span> <span class="op">=</span> <span class="nam">blobs_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'BlobPrefix'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t306" class="stm par run hide_run"><span class="annotate short">306&#x202F;&#x219B;&#x202F;312</span><span class="annotate long">line 306 didn't jump to line 312, because the condition on line 306 was never false</span> <span class="key">if</span> <span class="nam">blob_prefix_elements</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t307" class="stm run hide_run"> <span class="key">for</span> <span class="nam">blob_prefix_element</span> <span class="key">in</span> <span class="nam">blob_prefix_elements</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t308" class="stm run hide_run"> <span class="nam">prefix</span> <span class="op">=</span> <span class="nam">BlobPrefix</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t309" class="stm run hide_run"> <span class="nam">prefix</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">blob_prefix_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t310" class="stm run hide_run"> <span class="nam">blob_list</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">prefix</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t311" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t312" class="stm run hide_run"> <span class="key">for</span> <span class="nam">blob_element</span> <span class="key">in</span> <span class="nam">blobs_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Blob'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t313" class="stm run hide_run"> <span class="nam">blob</span> <span class="op">=</span> <span class="nam">Blob</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t314" class="stm run hide_run"> <span class="nam">blob</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">blob_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t315" class="stm run hide_run"> <span class="nam">blob</span><span class="op">.</span><span class="nam">snapshot</span> <span class="op">=</span> <span class="nam">blob_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Snapshot'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t316" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t317" class="pln"> <span class="com"># Properties</span><span class="strut">&nbsp;</span></p>
<p id="t318" class="stm run hide_run"> <span class="nam">properties_element</span> <span class="op">=</span> <span class="nam">blob_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Properties'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t319" class="stm par run hide_run"><span class="annotate short">319&#x202F;&#x219B;&#x202F;331</span><span class="annotate long">line 319 didn't jump to line 331, because the condition on line 319 was never false</span> <span class="key">if</span> <span class="nam">properties_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t320" class="stm run hide_run"> <span class="key">for</span> <span class="nam">property_element</span> <span class="key">in</span> <span class="nam">properties_element</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t321" class="stm run hide_run"> <span class="nam">info</span> <span class="op">=</span> <span class="nam">LIST_BLOBS_ATTRIBUTE_MAP</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">property_element</span><span class="op">.</span><span class="nam">tag</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t322" class="stm par run hide_run"><span class="annotate short">322&#x202F;&#x219B;&#x202F;323</span><span class="annotate long">line 322 didn't jump to line 323, because the condition on line 322 was never true</span> <span class="key">if</span> <span class="nam">info</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t323" class="stm mis"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">blob</span><span class="op">.</span><span class="nam">properties</span><span class="op">,</span> <span class="nam">property_element</span><span class="op">.</span><span class="nam">tag</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">property_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t324" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">info</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t325" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">blob</span><span class="op">.</span><span class="nam">properties</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">2</span><span class="op">]</span><span class="op">(</span><span class="nam">property_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t326" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t327" class="stm run hide_run"> <span class="nam">attr</span> <span class="op">=</span> <span class="nam">getattr</span><span class="op">(</span><span class="nam">blob</span><span class="op">.</span><span class="nam">properties</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t328" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">attr</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">2</span><span class="op">]</span><span class="op">(</span><span class="nam">property_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t329" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t330" class="pln"> <span class="com"># Metadata</span><span class="strut">&nbsp;</span></p>
<p id="t331" class="stm run hide_run"> <span class="nam">metadata_root_element</span> <span class="op">=</span> <span class="nam">blob_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Metadata'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t332" class="stm run hide_run"> <span class="key">if</span> <span class="nam">metadata_root_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t333" class="stm run hide_run"> <span class="nam">blob</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t334" class="stm run hide_run"> <span class="key">for</span> <span class="nam">metadata_element</span> <span class="key">in</span> <span class="nam">metadata_root_element</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t335" class="stm run hide_run"> <span class="nam">blob</span><span class="op">.</span><span class="nam">metadata</span><span class="op">[</span><span class="nam">metadata_element</span><span class="op">.</span><span class="nam">tag</span><span class="op">]</span> <span class="op">=</span> <span class="nam">metadata_element</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t336" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t337" class="pln"> <span class="com"># Add blob to list</span><span class="strut">&nbsp;</span></p>
<p id="t338" class="stm run hide_run"> <span class="nam">blob_list</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">blob</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t339" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t340" class="stm run hide_run"> <span class="key">return</span> <span class="nam">blob_list</span><span class="strut">&nbsp;</span></p>
<p id="t341" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t342" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t343" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_block_list</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t344" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t345" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t346" class="pln"><span class="str"> &lt;BlockList></span><span class="strut">&nbsp;</span></p>
<p id="t347" class="pln"><span class="str"> &lt;CommittedBlocks></span><span class="strut">&nbsp;</span></p>
<p id="t348" class="pln"><span class="str"> &lt;Block></span><span class="strut">&nbsp;</span></p>
<p id="t349" class="pln"><span class="str"> &lt;Name>base64-encoded-block-id&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t350" class="pln"><span class="str"> &lt;Size>size-in-bytes&lt;/Size></span><span class="strut">&nbsp;</span></p>
<p id="t351" class="pln"><span class="str"> &lt;/Block></span><span class="strut">&nbsp;</span></p>
<p id="t352" class="pln"><span class="str"> &lt;/CommittedBlocks></span><span class="strut">&nbsp;</span></p>
<p id="t353" class="pln"><span class="str"> &lt;UncommittedBlocks></span><span class="strut">&nbsp;</span></p>
<p id="t354" class="pln"><span class="str"> &lt;Block></span><span class="strut">&nbsp;</span></p>
<p id="t355" class="pln"><span class="str"> &lt;Name>base64-encoded-block-id&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t356" class="pln"><span class="str"> &lt;Size>size-in-bytes&lt;/Size></span><span class="strut">&nbsp;</span></p>
<p id="t357" class="pln"><span class="str"> &lt;/Block></span><span class="strut">&nbsp;</span></p>
<p id="t358" class="pln"><span class="str"> &lt;/UncommittedBlocks></span><span class="strut">&nbsp;</span></p>
<p id="t359" class="pln"><span class="str"> &lt;/BlockList></span><span class="strut">&nbsp;</span></p>
<p id="t360" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t361" class="pln"><span class="str"> Converts xml response to block list class.</span><span class="strut">&nbsp;</span></p>
<p id="t362" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t363" class="stm par run hide_run"><span class="annotate short">363&#x202F;&#x219B;&#x202F;364</span><span class="annotate long">line 363 didn't jump to line 364, because the condition on line 363 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t364" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t365" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t366" class="stm run hide_run"> <span class="nam">block_list</span> <span class="op">=</span> <span class="nam">BlobBlockList</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t367" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t368" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t369" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t370" class="stm run hide_run"> <span class="nam">committed_blocks_element</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'CommittedBlocks'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t371" class="stm run hide_run"> <span class="key">if</span> <span class="nam">committed_blocks_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t372" class="stm run hide_run"> <span class="key">for</span> <span class="nam">block_element</span> <span class="key">in</span> <span class="nam">committed_blocks_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Block'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t373" class="stm run hide_run"> <span class="nam">block_id</span> <span class="op">=</span> <span class="nam">_decode_base64_to_text</span><span class="op">(</span><span class="nam">block_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">,</span> <span class="str">''</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t374" class="stm run hide_run"> <span class="nam">block_size</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">block_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Size'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t375" class="stm run hide_run"> <span class="nam">block</span> <span class="op">=</span> <span class="nam">BlobBlock</span><span class="op">(</span><span class="nam">id</span><span class="op">=</span><span class="nam">block_id</span><span class="op">,</span> <span class="nam">state</span><span class="op">=</span><span class="nam">BlobBlockState</span><span class="op">.</span><span class="nam">Committed</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t376" class="stm run hide_run"> <span class="nam">block</span><span class="op">.</span><span class="nam">_set_size</span><span class="op">(</span><span class="nam">block_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t377" class="stm run hide_run"> <span class="nam">block_list</span><span class="op">.</span><span class="nam">committed_blocks</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">block</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t378" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t379" class="stm run hide_run"> <span class="nam">uncommitted_blocks_element</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'UncommittedBlocks'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t380" class="stm run hide_run"> <span class="key">if</span> <span class="nam">uncommitted_blocks_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t381" class="stm run hide_run"> <span class="key">for</span> <span class="nam">block_element</span> <span class="key">in</span> <span class="nam">uncommitted_blocks_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Block'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t382" class="stm run hide_run"> <span class="nam">block_id</span> <span class="op">=</span> <span class="nam">_decode_base64_to_text</span><span class="op">(</span><span class="nam">block_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">,</span> <span class="str">''</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t383" class="stm run hide_run"> <span class="nam">block_size</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">block_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Size'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t384" class="stm run hide_run"> <span class="nam">block</span> <span class="op">=</span> <span class="nam">BlobBlock</span><span class="op">(</span><span class="nam">id</span><span class="op">=</span><span class="nam">block_id</span><span class="op">,</span> <span class="nam">state</span><span class="op">=</span><span class="nam">BlobBlockState</span><span class="op">.</span><span class="nam">Uncommitted</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t385" class="stm run hide_run"> <span class="nam">block</span><span class="op">.</span><span class="nam">_set_size</span><span class="op">(</span><span class="nam">block_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t386" class="stm run hide_run"> <span class="nam">block_list</span><span class="op">.</span><span class="nam">uncommitted_blocks</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">block</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t387" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t388" class="stm run hide_run"> <span class="key">return</span> <span class="nam">block_list</span><span class="strut">&nbsp;</span></p>
<p id="t389" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t390" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t391" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_page_ranges</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t392" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t393" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t394" class="pln"><span class="str"> &lt;PageList></span><span class="strut">&nbsp;</span></p>
<p id="t395" class="pln"><span class="str"> &lt;PageRange> </span><span class="strut">&nbsp;</span></p>
<p id="t396" class="pln"><span class="str"> &lt;Start>Start Byte&lt;/Start> </span><span class="strut">&nbsp;</span></p>
<p id="t397" class="pln"><span class="str"> &lt;End>End Byte&lt;/End> </span><span class="strut">&nbsp;</span></p>
<p id="t398" class="pln"><span class="str"> &lt;/PageRange> </span><span class="strut">&nbsp;</span></p>
<p id="t399" class="pln"><span class="str"> &lt;ClearRange> </span><span class="strut">&nbsp;</span></p>
<p id="t400" class="pln"><span class="str"> &lt;Start>Start Byte&lt;/Start> </span><span class="strut">&nbsp;</span></p>
<p id="t401" class="pln"><span class="str"> &lt;End>End Byte&lt;/End> </span><span class="strut">&nbsp;</span></p>
<p id="t402" class="pln"><span class="str"> &lt;/ClearRange> </span><span class="strut">&nbsp;</span></p>
<p id="t403" class="pln"><span class="str"> &lt;PageRange> </span><span class="strut">&nbsp;</span></p>
<p id="t404" class="pln"><span class="str"> &lt;Start>Start Byte&lt;/Start> </span><span class="strut">&nbsp;</span></p>
<p id="t405" class="pln"><span class="str"> &lt;End>End Byte&lt;/End> </span><span class="strut">&nbsp;</span></p>
<p id="t406" class="pln"><span class="str"> &lt;/PageRange> </span><span class="strut">&nbsp;</span></p>
<p id="t407" class="pln"><span class="str"> &lt;/PageList> </span><span class="strut">&nbsp;</span></p>
<p id="t408" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t409" class="stm par run hide_run"><span class="annotate short">409&#x202F;&#x219B;&#x202F;410</span><span class="annotate long">line 409 didn't jump to line 410, because the condition on line 409 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t410" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t411" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t412" class="stm run hide_run"> <span class="nam">page_list</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t413" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t414" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t415" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t416" class="stm run hide_run"> <span class="key">for</span> <span class="nam">page_range_element</span> <span class="key">in</span> <span class="nam">list_element</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t417" class="stm run hide_run"> <span class="key">if</span> <span class="nam">page_range_element</span><span class="op">.</span><span class="nam">tag</span> <span class="op">==</span> <span class="str">'PageRange'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t418" class="stm run hide_run"> <span class="nam">is_cleared</span> <span class="op">=</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t419" class="stm par run hide_run"><span class="annotate short">419&#x202F;&#x219B;&#x202F;424</span><span class="annotate long">line 419 didn't jump to line 424, because the condition on line 419 was never false</span> <span class="key">elif</span> <span class="nam">page_range_element</span><span class="op">.</span><span class="nam">tag</span> <span class="op">==</span> <span class="str">'ClearRange'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t420" class="stm run hide_run"> <span class="nam">is_cleared</span> <span class="op">=</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t421" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t422" class="pln"> <span class="key">pass</span> <span class="com"># ignore any unrecognized Page Range types</span><span class="strut">&nbsp;</span></p>
<p id="t423" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t424" class="stm run hide_run"> <span class="nam">page_list</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t425" class="pln"> <span class="nam">PageRange</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t426" class="pln"> <span class="nam">int</span><span class="op">(</span><span class="nam">page_range_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Start'</span><span class="op">)</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t427" class="pln"> <span class="nam">int</span><span class="op">(</span><span class="nam">page_range_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'End'</span><span class="op">)</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t428" class="pln"> <span class="nam">is_cleared</span><span class="strut">&nbsp;</span></p>
<p id="t429" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t430" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t431" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t432" class="stm run hide_run"> <span class="key">return</span> <span class="nam">page_list</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,363 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/blob/_download_chunking.py: 58%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/blob/_download_chunking.py</b> :
<span class="pc_cov">58%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
61 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">39 run</span>
<span class="mis shortkey_m button_toggle_mis">22 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">2 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm par run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="stm mis"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm par run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="stm mis"><a href="#n89">89</a></p>
<p id="n90" class="stm mis"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="stm mis"><a href="#n93">93</a></p>
<p id="n94" class="stm mis"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="stm mis"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm mis"><a href="#n98">98</a></p>
<p id="n99" class="stm mis"><a href="#n99">99</a></p>
<p id="n100" class="stm mis"><a href="#n100">100</a></p>
<p id="n101" class="stm mis"><a href="#n101">101</a></p>
<p id="n102" class="stm mis"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="stm run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="stm mis"><a href="#n105">105</a></p>
<p id="n106" class="stm mis"><a href="#n106">106</a></p>
<p id="n107" class="stm mis"><a href="#n107">107</a></p>
<p id="n108" class="stm mis"><a href="#n108">108</a></p>
<p id="n109" class="stm mis"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm mis"><a href="#n112">112</a></p>
<p id="n113" class="stm mis"><a href="#n113">113</a></p>
<p id="n114" class="stm mis"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="stm run hide_run"><a href="#n116">116</a></p>
<p id="n117" class="stm mis"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm mis"><a href="#n135">135</a></p>
<p id="n136" class="stm mis"><a href="#n136">136</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">threading</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="nam">_ERROR_NO_SINGLE_THREAD_CHUNKING</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">def</span> <span class="nam">_download_blob_chunks</span><span class="op">(</span><span class="nam">blob_service</span><span class="op">,</span> <span class="nam">container_name</span><span class="op">,</span> <span class="nam">blob_name</span><span class="op">,</span> <span class="nam">snapshot</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="nam">download_size</span><span class="op">,</span> <span class="nam">block_size</span><span class="op">,</span> <span class="nam">progress</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">stream</span><span class="op">,</span> <span class="nam">max_connections</span><span class="op">,</span> <span class="nam">progress_callback</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">lease_id</span><span class="op">,</span> <span class="nam">if_modified_since</span><span class="op">,</span> <span class="nam">if_unmodified_since</span><span class="op">,</span> <span class="nam">if_match</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">if_none_match</span><span class="op">,</span> <span class="nam">timeout</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm par run hide_run"><span class="annotate short">25&#x202F;&#x219B;&#x202F;26</span><span class="annotate long">line 25 didn't jump to line 26, because the condition on line 25 was never true</span> <span class="key">if</span> <span class="nam">max_connections</span> <span class="op">&lt;=</span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_NO_SINGLE_THREAD_CHUNKING</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'blob'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="nam">downloader</span> <span class="op">=</span> <span class="nam">_BlobChunkDownloader</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">blob_service</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">container_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">blob_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">snapshot</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">download_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">block_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">progress</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">start_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">end_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">stream</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">progress_callback</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">lease_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="nam">if_modified_since</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="nam">if_unmodified_since</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="nam">if_match</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="nam">if_none_match</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="nam">timeout</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="nam">operation_context</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">import</span> <span class="nam">concurrent</span><span class="op">.</span><span class="nam">futures</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="nam">executor</span> <span class="op">=</span> <span class="nam">concurrent</span><span class="op">.</span><span class="nam">futures</span><span class="op">.</span><span class="nam">ThreadPoolExecutor</span><span class="op">(</span><span class="nam">max_connections</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">executor</span><span class="op">.</span><span class="nam">map</span><span class="op">(</span><span class="nam">downloader</span><span class="op">.</span><span class="nam">process_chunk</span><span class="op">,</span> <span class="nam">downloader</span><span class="op">.</span><span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"><span class="key">class</span> <span class="nam">_BlobChunkDownloader</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">blob_service</span><span class="op">,</span> <span class="nam">container_name</span><span class="op">,</span> <span class="nam">blob_name</span><span class="op">,</span> <span class="nam">snapshot</span><span class="op">,</span> <span class="nam">download_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"> <span class="nam">chunk_size</span><span class="op">,</span> <span class="nam">progress</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span> <span class="nam">stream</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"> <span class="nam">progress_callback</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">,</span> <span class="nam">lease_id</span><span class="op">,</span> <span class="nam">if_modified_since</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"> <span class="nam">if_unmodified_since</span><span class="op">,</span> <span class="nam">if_match</span><span class="op">,</span> <span class="nam">if_none_match</span><span class="op">,</span> <span class="nam">timeout</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_service</span> <span class="op">=</span> <span class="nam">blob_service</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">container_name</span> <span class="op">=</span> <span class="nam">container_name</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_name</span> <span class="op">=</span> <span class="nam">blob_name</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">snapshot</span> <span class="op">=</span> <span class="nam">snapshot</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span> <span class="op">=</span> <span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">download_size</span> <span class="op">=</span> <span class="nam">download_size</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">start_index</span> <span class="op">=</span> <span class="nam">start_range</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_end</span> <span class="op">=</span> <span class="nam">end_range</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span> <span class="op">=</span> <span class="nam">stream</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_start</span> <span class="op">=</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">tell</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span> <span class="op">=</span> <span class="nam">threading</span><span class="op">.</span><span class="nam">Lock</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span> <span class="op">=</span> <span class="nam">progress_callback</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">=</span> <span class="nam">progress</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span> <span class="op">=</span> <span class="nam">threading</span><span class="op">.</span><span class="nam">Lock</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span> <span class="op">=</span> <span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">operation_context</span> <span class="op">=</span> <span class="nam">operation_context</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">validate_content</span> <span class="op">=</span> <span class="nam">validate_content</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">lease_id</span> <span class="op">=</span> <span class="nam">lease_id</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">if_modified_since</span> <span class="op">=</span> <span class="nam">if_modified_since</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">if_unmodified_since</span> <span class="op">=</span> <span class="nam">if_unmodified_since</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">if_match</span> <span class="op">=</span> <span class="nam">if_match</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">if_none_match</span> <span class="op">=</span> <span class="nam">if_none_match</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="nam">index</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">start_index</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm par run hide_run"><span class="annotate short">88&#x202F;&#x219B;&#x202F;89</span><span class="annotate long">line 88 didn't jump to line 89, because the condition on line 88 was never true</span> <span class="key">while</span> <span class="nam">index</span> <span class="op">&lt;</span> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_end</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm mis"> <span class="key">yield</span> <span class="nam">index</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm mis"> <span class="nam">index</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="key">def</span> <span class="nam">process_chunk</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm mis"> <span class="key">if</span> <span class="nam">chunk_start</span> <span class="op">+</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span> <span class="op">></span> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_end</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm mis"> <span class="nam">chunk_end</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_end</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm mis"> <span class="nam">chunk_end</span> <span class="op">=</span> <span class="nam">chunk_start</span> <span class="op">+</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm mis"> <span class="nam">chunk_data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_download_chunk</span><span class="op">(</span><span class="nam">chunk_start</span><span class="op">,</span> <span class="nam">chunk_end</span><span class="op">)</span><span class="op">.</span><span class="nam">content</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm mis"> <span class="nam">length</span> <span class="op">=</span> <span class="nam">chunk_end</span> <span class="op">-</span> <span class="nam">chunk_start</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm mis"> <span class="key">if</span> <span class="nam">length</span> <span class="op">></span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_write_to_stream</span><span class="op">(</span><span class="nam">chunk_data</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_update_progress</span><span class="op">(</span><span class="nam">length</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_update_progress</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">length</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm mis"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm mis"> <span class="key">with</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">+=</span> <span class="nam">length</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm mis"> <span class="nam">total</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span><span class="op">(</span><span class="nam">total</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">download_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_write_to_stream</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_data</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm mis"> <span class="key">with</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">seek</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">stream_start</span> <span class="op">+</span> <span class="op">(</span><span class="nam">chunk_start</span> <span class="op">-</span> <span class="nam">self</span><span class="op">.</span><span class="nam">start_index</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">chunk_data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_download_chunk</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">,</span> <span class="nam">chunk_end</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm mis"> <span class="nam">response</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_service</span><span class="op">.</span><span class="nam">_get_blob</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">container_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">blob_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"> <span class="nam">snapshot</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">snapshot</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"> <span class="nam">start_range</span><span class="op">=</span><span class="nam">chunk_start</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="nam">end_range</span><span class="op">=</span><span class="nam">chunk_end</span> <span class="op">-</span> <span class="num">1</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"> <span class="nam">validate_content</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"> <span class="nam">lease_id</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">lease_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"> <span class="nam">if_modified_since</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">if_modified_since</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"> <span class="nam">if_unmodified_since</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">if_unmodified_since</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"> <span class="nam">if_match</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">if_match</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="nam">if_none_match</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">if_none_match</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"> <span class="nam">timeout</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"> <span class="nam">_context</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">operation_context</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"> <span class="com"># This makes sure that if_match is set so that we can validate </span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="com"># that subsequent downloads are to an unmodified blob</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">if_match</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">etag</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm mis"> <span class="key">return</span> <span class="nam">response</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,481 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/blob/_encryption.py: 95%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/blob/_encryption.py</b> :
<span class="pc_cov">95%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
82 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">80 run</span>
<span class="mis shortkey_m button_toggle_mis">2 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">3 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="stm par run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="stm run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="stm run hide_run"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="stm run hide_run"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="stm par run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm run hide_run"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm mis"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="stm par run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="stm mis"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="pln"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="stm run hide_run"><a href="#n143">143</a></p>
<p id="n144" class="stm run hide_run"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="stm run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="stm run hide_run"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="stm run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm run hide_run"><a href="#n159">159</a></p>
<p id="n160" class="stm run hide_run"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="stm run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="stm run hide_run"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="stm run hide_run"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="stm run hide_run"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="stm run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="stm run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="stm run hide_run"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="stm run hide_run"><a href="#n178">178</a></p>
<p id="n179" class="stm run hide_run"><a href="#n179">179</a></p>
<p id="n180" class="stm run hide_run"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="stm run hide_run"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="stm run hide_run"><a href="#n186">186</a></p>
<p id="n187" class="stm run hide_run"><a href="#n187">187</a></p>
<p id="n188" class="stm run hide_run"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="stm run hide_run"><a href="#n192">192</a></p>
<p id="n193" class="stm run hide_run"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="stm run hide_run"><a href="#n195">195</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="nam">json</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="nam">dumps</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="nam">loads</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">from</span> <span class="nam">os</span> <span class="key">import</span> <span class="nam">urandom</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="nam">cryptography</span><span class="op">.</span><span class="nam">hazmat</span><span class="op">.</span><span class="nam">primitives</span><span class="op">.</span><span class="nam">padding</span> <span class="key">import</span> <span class="nam">PKCS7</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_encryption</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">_generate_encryption_data_dict</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">_generate_AES_CBC_cipher</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">_dict_to_encryption_data</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">_validate_and_unwrap_cek</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">_EncryptionAlgorithm</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">_validate_not_none</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">_validate_key_encryption_key_wrap</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">_ERROR_DATA_NOT_ENCRYPTED</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"><span class="key">def</span> <span class="nam">_encrypt_blob</span><span class="op">(</span><span class="nam">blob</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="str"> Encrypts the given blob using AES256 in CBC mode with 128 bit padding.</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="str"> Wraps the generated content-encryption-key using the user-provided key-encryption-key (kek). </span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> Returns a json-formatted string containing the encryption metadata. This method should</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="str"> only be used when a blob is small enough for single shot upload. Encrypting larger blobs</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="str"> is done as a part of the _upload_blob_chunks method.</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> :param bytes blob:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> The blob to be encrypted.</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> :param object key_encryption_key:</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> The user-provided key-encryption-key. Must implement the following methods:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str"> wrap_key(key)--wraps the specified key using an algorithm of the user's choice.</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str"> get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="str"> get_kid()--returns a string key id for this key-encryption-key.</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="str"> :return: A tuple of json-formatted string containing the encryption metadata and the encrypted blob data.</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str"> :rtype: (str, bytes)</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'blob'</span><span class="op">,</span> <span class="nam">blob</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'key_encryption_key'</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="nam">_validate_key_encryption_key_wrap</span><span class="op">(</span><span class="nam">key_encryption_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="com"># AES256 uses 256 bit (32 byte) keys and always with 16 byte blocks</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">content_encryption_key</span> <span class="op">=</span> <span class="nam">urandom</span><span class="op">(</span><span class="num">32</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="nam">initialization_vector</span> <span class="op">=</span> <span class="nam">urandom</span><span class="op">(</span><span class="num">16</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">cipher</span> <span class="op">=</span> <span class="nam">_generate_AES_CBC_cipher</span><span class="op">(</span><span class="nam">content_encryption_key</span><span class="op">,</span> <span class="nam">initialization_vector</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="com"># PKCS7 with 16 byte blocks ensures compatibility with AES.</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">padder</span> <span class="op">=</span> <span class="nam">PKCS7</span><span class="op">(</span><span class="num">128</span><span class="op">)</span><span class="op">.</span><span class="nam">padder</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="nam">padded_data</span> <span class="op">=</span> <span class="nam">padder</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="nam">blob</span><span class="op">)</span> <span class="op">+</span> <span class="nam">padder</span><span class="op">.</span><span class="nam">finalize</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="com"># Encrypt the data.</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="nam">encryptor</span> <span class="op">=</span> <span class="nam">cipher</span><span class="op">.</span><span class="nam">encryptor</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">encrypted_data</span> <span class="op">=</span> <span class="nam">encryptor</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="nam">padded_data</span><span class="op">)</span> <span class="op">+</span> <span class="nam">encryptor</span><span class="op">.</span><span class="nam">finalize</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="nam">encryption_data</span> <span class="op">=</span> <span class="nam">_generate_encryption_data_dict</span><span class="op">(</span><span class="nam">key_encryption_key</span><span class="op">,</span> <span class="nam">content_encryption_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="nam">initialization_vector</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">encryption_data</span><span class="op">[</span><span class="str">'EncryptionMode'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'FullBlob'</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="key">return</span> <span class="nam">dumps</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">)</span><span class="op">,</span> <span class="nam">encrypted_data</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"><span class="key">def</span> <span class="nam">_generate_blob_encryption_data</span><span class="op">(</span><span class="nam">key_encryption_key</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="str"> Generates the encryption_metadata for the blob.</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="str"> :param bytes key_encryption_key:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="str"> The key-encryption-key used to wrap the cek associate with this blob.</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str"> :return: A tuple containing the cek and iv for this blob as well as the </span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> serialized encryption metadata for the blob.</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str"> :rtype: (bytes, bytes, str)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="nam">encryption_data</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="nam">content_encryption_key</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="nam">initialization_vector</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm par run hide_run"><span class="annotate short">94&#x202F;&#x219B;&#x202F;104</span><span class="annotate long">line 94 didn't jump to line 104, because the condition on line 94 was never false</span> <span class="key">if</span> <span class="nam">key_encryption_key</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="nam">_validate_key_encryption_key_wrap</span><span class="op">(</span><span class="nam">key_encryption_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="nam">content_encryption_key</span> <span class="op">=</span> <span class="nam">urandom</span><span class="op">(</span><span class="num">32</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="nam">initialization_vector</span> <span class="op">=</span> <span class="nam">urandom</span><span class="op">(</span><span class="num">16</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="nam">encryption_data</span> <span class="op">=</span> <span class="nam">_generate_encryption_data_dict</span><span class="op">(</span><span class="nam">key_encryption_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"> <span class="nam">content_encryption_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"> <span class="nam">initialization_vector</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="nam">encryption_data</span><span class="op">[</span><span class="str">'EncryptionMode'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'FullBlob'</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="nam">encryption_data</span> <span class="op">=</span> <span class="nam">dumps</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm run hide_run"> <span class="key">return</span> <span class="op">(</span><span class="nam">content_encryption_key</span><span class="op">,</span> <span class="nam">initialization_vector</span><span class="op">,</span> <span class="nam">encryption_data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"><span class="key">def</span> <span class="nam">_decrypt_blob</span><span class="op">(</span><span class="nam">require_encryption</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">,</span> <span class="nam">key_resolver</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"> <span class="nam">response</span><span class="op">,</span> <span class="nam">start_offset</span><span class="op">,</span> <span class="nam">end_offset</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="str"> Decrypts the given blob contents and returns only the requested range.</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"><span class="str"> :param bool require_encryption:</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="str"> Whether or not the calling blob service requires objects to be decrypted.</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="str"> :param object key_encryption_key:</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"><span class="str"> The user-provided key-encryption-key. Must implement the following methods:</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="str"> wrap_key(key)--wraps the specified key using an algorithm of the user's choice.</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="str"> get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"><span class="str"> get_kid()--returns a string key id for this key-encryption-key.</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="str"> :param key_resolver(kid):</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"><span class="str"> The user-provided key resolver. Uses the kid string to return a key-encryption-key </span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"><span class="str"> implementing the interface defined above.</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="str"> :return: The decrypted blob content.</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"><span class="str"> :rtype: bytes</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'response'</span><span class="op">,</span> <span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'content'</span><span class="op">,</span> <span class="nam">content</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="stm run hide_run"> <span class="nam">encryption_data</span> <span class="op">=</span> <span class="nam">_dict_to_encryption_data</span><span class="op">(</span><span class="nam">loads</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-meta-encryptiondata'</span><span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm par run hide_run"><span class="annotate short">132&#x202F;&#x219B;&#x202F;135</span><span class="annotate long">line 132 didn't jump to line 135, because the condition on line 132 was never false</span> <span class="key">if</span> <span class="nam">require_encryption</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_DATA_NOT_ENCRYPTED</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm mis"> <span class="key">return</span> <span class="nam">content</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm par run hide_run"><span class="annotate short">137&#x202F;&#x219B;&#x202F;138</span><span class="annotate long">line 137 didn't jump to line 138, because the condition on line 137 was never true</span> <span class="key">if</span> <span class="key">not</span> <span class="op">(</span><span class="nam">encryption_data</span><span class="op">.</span><span class="nam">encryption_agent</span><span class="op">.</span><span class="nam">encryption_algorithm</span> <span class="op">==</span> <span class="nam">_EncryptionAlgorithm</span><span class="op">.</span><span class="nam">AES_CBC_256</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="nam">blob_type</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-blob-type'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="nam">iv</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm run hide_run"> <span class="nam">unpad</span> <span class="op">=</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="stm run hide_run"> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span> <span class="op">=</span> <span class="num">0</span><span class="op">,</span> <span class="nam">len</span><span class="op">(</span><span class="nam">content</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="key">if</span> <span class="str">'content-range'</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm run hide_run"> <span class="nam">range</span> <span class="op">=</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'content-range'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"> <span class="com"># Format: 'bytes x-y/size'</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"> <span class="com"># Ignore the word 'bytes'</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="nam">range</span> <span class="op">=</span> <span class="nam">range</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">' '</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t152" class="stm run hide_run"> <span class="nam">range</span> <span class="op">=</span> <span class="nam">range</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'-'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="nam">start_range</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">range</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"> <span class="nam">range</span> <span class="op">=</span> <span class="nam">range</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'/'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm run hide_run"> <span class="nam">end_range</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">range</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run"> <span class="nam">blob_size</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">range</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="key">if</span> <span class="nam">start_offset</span> <span class="op">>=</span> <span class="num">16</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm run hide_run"> <span class="nam">iv</span> <span class="op">=</span> <span class="nam">content</span><span class="op">[</span><span class="op">:</span><span class="num">16</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">content</span><span class="op">[</span><span class="num">16</span><span class="op">:</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"> <span class="nam">start_offset</span> <span class="op">-=</span> <span class="num">16</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm run hide_run"> <span class="nam">iv</span> <span class="op">=</span> <span class="nam">encryption_data</span><span class="op">.</span><span class="nam">content_encryption_IV</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t165" class="stm run hide_run"> <span class="key">if</span> <span class="nam">end_range</span> <span class="op">==</span> <span class="nam">blob_size</span> <span class="op">-</span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="nam">unpad</span> <span class="op">=</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="stm run hide_run"> <span class="nam">unpad</span> <span class="op">=</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="nam">iv</span> <span class="op">=</span> <span class="nam">encryption_data</span><span class="op">.</span><span class="nam">content_encryption_IV</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="key">if</span> <span class="nam">blob_type</span> <span class="op">==</span> <span class="str">'PageBlob'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="stm run hide_run"> <span class="nam">unpad</span> <span class="op">=</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm run hide_run"> <span class="nam">content_encryption_key</span> <span class="op">=</span> <span class="nam">_validate_and_unwrap_cek</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">,</span> <span class="nam">key_resolver</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm run hide_run"> <span class="nam">cipher</span> <span class="op">=</span> <span class="nam">_generate_AES_CBC_cipher</span><span class="op">(</span><span class="nam">content_encryption_key</span><span class="op">,</span> <span class="nam">iv</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm run hide_run"> <span class="nam">decryptor</span> <span class="op">=</span> <span class="nam">cipher</span><span class="op">.</span><span class="nam">decryptor</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t178" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">decryptor</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="nam">content</span><span class="op">)</span> <span class="op">+</span> <span class="nam">decryptor</span><span class="op">.</span><span class="nam">finalize</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm run hide_run"> <span class="key">if</span> <span class="nam">unpad</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm run hide_run"> <span class="nam">unpadder</span> <span class="op">=</span> <span class="nam">PKCS7</span><span class="op">(</span><span class="num">128</span><span class="op">)</span><span class="op">.</span><span class="nam">unpadder</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">unpadder</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="nam">content</span><span class="op">)</span> <span class="op">+</span> <span class="nam">unpadder</span><span class="op">.</span><span class="nam">finalize</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t183" class="stm run hide_run"> <span class="key">return</span> <span class="nam">content</span><span class="op">[</span><span class="nam">start_offset</span><span class="op">:</span> <span class="nam">len</span><span class="op">(</span><span class="nam">content</span><span class="op">)</span> <span class="op">-</span> <span class="nam">end_offset</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_blob_encryptor_and_padder</span><span class="op">(</span><span class="nam">cek</span><span class="op">,</span> <span class="nam">iv</span><span class="op">,</span> <span class="nam">should_pad</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="stm run hide_run"> <span class="nam">encryptor</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="stm run hide_run"> <span class="nam">padder</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"> <span class="key">if</span> <span class="nam">cek</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">and</span> <span class="nam">iv</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"> <span class="nam">cipher</span> <span class="op">=</span> <span class="nam">_generate_AES_CBC_cipher</span><span class="op">(</span><span class="nam">cek</span><span class="op">,</span> <span class="nam">iv</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="stm run hide_run"> <span class="nam">encryptor</span> <span class="op">=</span> <span class="nam">cipher</span><span class="op">.</span><span class="nam">encryptor</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="stm run hide_run"> <span class="nam">padder</span> <span class="op">=</span> <span class="nam">PKCS7</span><span class="op">(</span><span class="num">128</span><span class="op">)</span><span class="op">.</span><span class="nam">padder</span><span class="op">(</span><span class="op">)</span> <span class="key">if</span> <span class="nam">should_pad</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t195" class="stm run hide_run"> <span class="key">return</span> <span class="nam">encryptor</span><span class="op">,</span> <span class="nam">padder</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,167 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/blob/_error.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/blob/_error.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
7 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">7 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="nam">_ERROR_PAGE_BLOB_SIZE_ALIGNMENT</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="str">'Invalid page blob size: {0}. '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="str">'The size must be aligned to a 512-byte boundary.'</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="nam">_ERROR_PAGE_BLOB_START_ALIGNMENT</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="str">'start_range must align with 512 page size'</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"><span class="nam">_ERROR_PAGE_BLOB_END_ALIGNMENT</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="str">'end_range must align with 512 page size'</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"><span class="nam">_ERROR_INVALID_BLOCK_ID</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="str">'All blocks in block list need to have valid block ids.'</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"><span class="nam">_ERROR_INVALID_LEASE_DURATION</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="str">"lease_duration param needs to be between 15 and 60 or -1."</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"><span class="nam">_ERROR_INVALID_LEASE_BREAK_PERIOD</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="str">"lease_break_period param needs to be between 0 and 60."</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"><span class="nam">_ERROR_NO_SINGLE_THREAD_CHUNKING</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="str">'To use blob chunk downloader more than 1 thread must be '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="str">'used since get_blob_to_bytes should be called for single threaded '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="str">'blob downloads.'</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,345 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-blob/azure/storage/blob/_serialization.py: 73%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-blob/azure/storage/blob/_serialization.py</b> :
<span class="pc_cov">73%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
53 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">40 run</span>
<span class="mis shortkey_m button_toggle_mis">13 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">6 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm mis"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm par run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="stm mis"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="stm par run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="stm mis"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="stm par run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm mis"><a href="#n81">81</a></p>
<p id="n82" class="stm mis"><a href="#n82">82</a></p>
<p id="n83" class="stm mis"><a href="#n83">83</a></p>
<p id="n84" class="stm mis"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="stm mis"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="stm par run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="stm mis"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm par run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm mis"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="stm mis"><a href="#n120">120</a></p>
<p id="n121" class="stm mis"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="stm par run hide_run"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">sax</span><span class="op">.</span><span class="nam">saxutils</span> <span class="key">import</span> <span class="nam">escape</span> <span class="key">as</span> <span class="nam">xml_escape</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">cElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm mis"><span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">ElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">_encode_base64</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">_str</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">_validate_not_none</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">_ERROR_START_END_NEEDED_FOR_MD5</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">_ERROR_RANGE_TOO_LARGE_FOR_MD5</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">_ERROR_PAGE_BLOB_START_ALIGNMENT</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">_ERROR_PAGE_BLOB_END_ALIGNMENT</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">_ERROR_INVALID_BLOCK_ID</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"><span class="key">from</span> <span class="nam">io</span> <span class="key">import</span> <span class="nam">BytesIO</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_path</span><span class="op">(</span><span class="nam">container_name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">blob_name</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="str"> Creates the path to access a blob resource.</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> container_name:</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="str"> Name of container.</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="str"> blob_name:</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> The path to the blob.</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"> <span class="key">if</span> <span class="nam">container_name</span> <span class="key">and</span> <span class="nam">blob_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/{0}/{1}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">container_name</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">blob_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">container_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/{0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">_str</span><span class="op">(</span><span class="nam">container_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/'</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_and_format_range_headers</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span> <span class="nam">start_range_required</span><span class="op">=</span><span class="key">True</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"> <span class="nam">end_range_required</span><span class="op">=</span><span class="key">True</span><span class="op">,</span> <span class="nam">check_content_md5</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">align_to_page</span><span class="op">=</span><span class="key">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"> <span class="com"># If end range is provided, start range must be provided</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="key">if</span> <span class="nam">start_range_required</span> <span class="op">==</span> <span class="key">True</span> <span class="key">or</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'start_range'</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="key">if</span> <span class="nam">end_range_required</span> <span class="op">==</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'end_range'</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="com"># Page ranges must be 512 aligned</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="key">if</span> <span class="nam">align_to_page</span> <span class="op">==</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm par run hide_run"><span class="annotate short">67&#x202F;&#x219B;&#x202F;68</span><span class="annotate long">line 67 didn't jump to line 68, because the condition on line 67 was never true</span> <span class="key">if</span> <span class="nam">start_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">and</span> <span class="nam">start_range</span> <span class="op">%</span> <span class="num">512</span> <span class="op">!=</span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_PAGE_BLOB_START_ALIGNMENT</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="key">if</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">and</span> <span class="nam">end_range</span> <span class="op">%</span> <span class="num">512</span> <span class="op">!=</span> <span class="num">511</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_PAGE_BLOB_END_ALIGNMENT</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"> <span class="com"># Format based on whether end_range is present</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="key">or</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="key">if</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-range'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'bytes={0}-{1}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm par run hide_run"><span class="annotate short">76&#x202F;&#x219B;&#x202F;77</span><span class="annotate long">line 76 didn't jump to line 77, because the condition on line 76 was never true</span> <span class="key">elif</span> <span class="nam">start_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-range'</span><span class="op">]</span> <span class="op">=</span> <span class="str">"bytes={0}-"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">start_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"> <span class="com"># Content MD5 can only be provided for a complete range less than 4MB in size</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm par run hide_run"><span class="annotate short">80&#x202F;&#x219B;&#x202F;81</span><span class="annotate long">line 80 didn't jump to line 81, because the condition on line 80 was never true</span> <span class="key">if</span> <span class="nam">check_content_md5</span> <span class="op">==</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm mis"> <span class="key">if</span> <span class="nam">start_range</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_START_END_NEEDED_FOR_MD5</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm mis"> <span class="key">if</span> <span class="nam">end_range</span> <span class="op">-</span> <span class="nam">start_range</span> <span class="op">></span> <span class="num">4</span> <span class="op">*</span> <span class="num">1024</span> <span class="op">*</span> <span class="num">1024</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_RANGE_TOO_LARGE_FOR_MD5</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-range-get-content-md5'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'true'</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_block_list_to_xml</span><span class="op">(</span><span class="nam">block_id_list</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="str"> &lt;BlockList></span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="str"> &lt;Committed>first-base64-encoded-block-id&lt;/Committed></span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="str"> &lt;Uncommitted>second-base64-encoded-block-id&lt;/Uncommitted></span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="str"> &lt;Latest>third-base64-encoded-block-id&lt;/Latest></span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="str"> &lt;/BlockList></span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="str"> Convert a block list to xml to send.</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="str"> block_id_list:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="str"> A list of BlobBlock containing the block ids and block state that are used in put_block_list.</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="str"> Only get block from latest blocks.</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm par run hide_run"><span class="annotate short">104&#x202F;&#x219B;&#x202F;105</span><span class="annotate long">line 104 didn't jump to line 105, because the condition on line 104 was never true</span> <span class="key">if</span> <span class="nam">block_id_list</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm mis"> <span class="key">return</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="nam">block_list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">Element</span><span class="op">(</span><span class="str">'BlockList'</span><span class="op">)</span><span class="op">;</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="com"># Enabled</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="key">for</span> <span class="nam">block</span> <span class="key">in</span> <span class="nam">block_id_list</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm par run hide_run"><span class="annotate short">111&#x202F;&#x219B;&#x202F;112</span><span class="annotate long">line 111 didn't jump to line 112, because the condition on line 111 was never true</span> <span class="key">if</span> <span class="nam">block</span><span class="op">.</span><span class="nam">id</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_INVALID_BLOCK_ID</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">xml_escape</span><span class="op">(</span><span class="nam">_str</span><span class="op">(</span><span class="nam">format</span><span class="op">(</span><span class="nam">_encode_base64</span><span class="op">(</span><span class="nam">block</span><span class="op">.</span><span class="nam">id</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">block_list_element</span><span class="op">,</span> <span class="nam">block</span><span class="op">.</span><span class="nam">state</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"> <span class="com"># Add xml declaration and serialize</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="nam">stream</span> <span class="op">=</span> <span class="nam">BytesIO</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">ElementTree</span><span class="op">(</span><span class="nam">block_list_element</span><span class="op">)</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">stream</span><span class="op">,</span> <span class="nam">xml_declaration</span><span class="op">=</span><span class="key">True</span><span class="op">,</span> <span class="nam">encoding</span><span class="op">=</span><span class="str">'utf-8'</span><span class="op">,</span> <span class="nam">method</span><span class="op">=</span><span class="str">'xml'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm mis"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm mis"> <span class="key">raise</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="key">finally</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="nam">output</span> <span class="op">=</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">getvalue</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm par run hide_run"><span class="annotate short">124&#x202F;&#x219B;&#x202F;exit</span><span class="annotate long">line 124 didn't except from function '_convert_block_list_to_xml', because the raise on line 121 wasn't executed</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">close</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"> <span class="com"># return xml value</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"> <span class="key">return</span> <span class="nam">output</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
1 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">1 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="nam">__import__</span><span class="op">(</span><span class="str">'pkg_resources'</span><span class="op">)</span><span class="op">.</span><span class="nam">declare_namespace</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
1 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">1 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="nam">__import__</span><span class="op">(</span><span class="str">'pkg_resources'</span><span class="op">)</span><span class="op">.</span><span class="nam">declare_namespace</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,179 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
5 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">5 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_constants</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"> <span class="nam">__author__</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="nam">__version__</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="nam">X_MS_VERSION</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">cloudstorageaccount</span> <span class="key">import</span> <span class="nam">CloudStorageAccount</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">RetentionPolicy</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">Logging</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">Metrics</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">CorsRule</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">ServiceProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">AccessPolicy</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">ResourceTypes</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">Services</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">AccountPermissions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">Protocol</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">ServiceStats</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">GeoReplication</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">LocationMode</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">RetryContext</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">retry</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">ExponentialRetry</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">LinearRetry</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">no_retry</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">sharedaccesssignature</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="nam">SharedAccessSignature</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,341 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_auth.py: 89%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_auth.py</b> :
<span class="pc_cov">89%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
64 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">58 run</span>
<span class="mis shortkey_m button_toggle_mis">6 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="stm run hide_run"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="stm run hide_run"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="stm mis"><a href="#n118">118</a></p>
<p id="n119" class="stm mis"><a href="#n119">119</a></p>
<p id="n120" class="stm mis"><a href="#n120">120</a></p>
<p id="n121" class="stm mis"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="stm mis"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="stm mis"><a href="#n125">125</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"> <span class="nam">_sign_string</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">class</span> <span class="nam">_StorageSharedKeyAuthentication</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">account_name</span><span class="op">,</span> <span class="nam">account_key</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">=</span> <span class="nam">account_name</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span> <span class="op">=</span> <span class="nam">account_key</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_headers</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">headers_to_sign</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="nam">headers</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="op">(</span><span class="nam">name</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span> <span class="key">if</span> <span class="nam">value</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="key">if</span> <span class="str">'content-length'</span> <span class="key">in</span> <span class="nam">headers</span> <span class="key">and</span> <span class="nam">headers</span><span class="op">[</span><span class="str">'content-length'</span><span class="op">]</span> <span class="op">==</span> <span class="str">'0'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="key">del</span> <span class="nam">headers</span><span class="op">[</span><span class="str">'content-length'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="key">return</span> <span class="str">'\n'</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">x</span><span class="op">,</span> <span class="str">''</span><span class="op">)</span> <span class="key">for</span> <span class="nam">x</span> <span class="key">in</span> <span class="nam">headers_to_sign</span><span class="op">)</span> <span class="op">+</span> <span class="str">'\n'</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_verb</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="key">return</span> <span class="nam">request</span><span class="op">.</span><span class="nam">method</span> <span class="op">+</span> <span class="str">'\n'</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_canonicalized_resource</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="nam">uri_path</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'?'</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/'</span> <span class="op">+</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">+</span> <span class="nam">uri_path</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_canonicalized_headers</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="nam">x_ms_headers</span> <span class="op">=</span> <span class="op">[</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"> <span class="key">if</span> <span class="nam">name</span><span class="op">.</span><span class="nam">startswith</span><span class="op">(</span><span class="str">'x-ms-'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="nam">x_ms_headers</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="op">(</span><span class="nam">name</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"> <span class="nam">x_ms_headers</span><span class="op">.</span><span class="nam">sort</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">x_ms_headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm run hide_run"> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">+=</span> <span class="str">''</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="op">[</span><span class="nam">name</span><span class="op">,</span> <span class="str">':'</span><span class="op">,</span> <span class="nam">value</span><span class="op">,</span> <span class="str">'\n'</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">return</span> <span class="nam">string_to_sign</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_add_authorization_header</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">string_to_sign</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="nam">signature</span> <span class="op">=</span> <span class="nam">_sign_string</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span> <span class="nam">string_to_sign</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="nam">auth_string</span> <span class="op">=</span> <span class="str">'SharedKey '</span> <span class="op">+</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">+</span> <span class="str">':'</span> <span class="op">+</span> <span class="nam">signature</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'Authorization'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">auth_string</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"><span class="key">class</span> <span class="nam">_StorageSharedKeyAuthentication</span><span class="op">(</span><span class="nam">_StorageSharedKeyAuthentication</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="key">def</span> <span class="nam">sign_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_verb</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_headers</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="nam">request</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"> <span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"> <span class="str">'content-encoding'</span><span class="op">,</span> <span class="str">'content-language'</span><span class="op">,</span> <span class="str">'content-length'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"> <span class="str">'content-md5'</span><span class="op">,</span> <span class="str">'content-type'</span><span class="op">,</span> <span class="str">'date'</span><span class="op">,</span> <span class="str">'if-modified-since'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="str">'if-match'</span><span class="op">,</span> <span class="str">'if-none-match'</span><span class="op">,</span> <span class="str">'if-unmodified-since'</span><span class="op">,</span> <span class="str">'byte_range'</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"> <span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_canonicalized_headers</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_canonicalized_resource</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_canonicalized_resource_query</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_add_authorization_header</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="nam">string_to_sign</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_canonicalized_resource_query</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">sorted_queries</span> <span class="op">=</span> <span class="op">[</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">sorted_queries</span><span class="op">.</span><span class="nam">sort</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">sorted_queries</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="key">if</span> <span class="nam">value</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">+=</span> <span class="str">'\n'</span> <span class="op">+</span> <span class="nam">name</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> <span class="str">':'</span> <span class="op">+</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="key">return</span> <span class="nam">string_to_sign</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"><span class="key">class</span> <span class="nam">_StorageTableSharedKeyAuthentication</span><span class="op">(</span><span class="nam">_StorageSharedKeyAuthentication</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="key">def</span> <span class="nam">sign_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_verb</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_headers</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"> <span class="nam">request</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="op">[</span><span class="str">'content-md5'</span><span class="op">,</span> <span class="str">'content-type'</span><span class="op">,</span> <span class="str">'x-ms-date'</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"> <span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_canonicalized_resource</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">_get_canonicalized_resource_query</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_add_authorization_header</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="nam">string_to_sign</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_canonicalized_resource_query</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">query</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="key">if</span> <span class="nam">name</span> <span class="op">==</span> <span class="str">'comp'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="key">return</span> <span class="str">'?comp='</span> <span class="op">+</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="key">return</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"><span class="key">class</span> <span class="nam">_StorageNoAuthentication</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="key">def</span> <span class="nam">sign_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"><span class="key">class</span> <span class="nam">_StorageSASAuthentication</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">sas_token</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span> <span class="op">=</span> <span class="nam">sas_token</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="key">def</span> <span class="nam">sign_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"> <span class="com"># if 'sig=' is present, then the request has already been signed</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"> <span class="com"># as is the case when performing retries</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm mis"> <span class="key">if</span> <span class="str">'sig='</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm mis"> <span class="key">return</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm mis"> <span class="key">if</span> <span class="str">'?'</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span> <span class="op">+=</span> <span class="str">'&amp;'</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span> <span class="op">+=</span> <span class="str">'?'</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,361 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_common_conversion.py: 54%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_common_conversion.py</b> :
<span class="pc_cov">54%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
77 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">48 run</span>
<span class="mis shortkey_m button_toggle_mis">29 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">6 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="stm par run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm mis"><a href="#n33">33</a></p>
<p id="n34" class="stm mis"><a href="#n34">34</a></p>
<p id="n35" class="stm mis"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm mis"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="stm run hide_run"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm mis"><a href="#n51">51</a></p>
<p id="n52" class="stm mis"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="stm mis"><a href="#n54">54</a></p>
<p id="n55" class="stm mis"><a href="#n55">55</a></p>
<p id="n56" class="stm mis"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="stm mis"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm mis"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm mis"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="stm par run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="stm mis"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm par run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm par run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="stm mis"><a href="#n102">102</a></p>
<p id="n103" class="stm mis"><a href="#n103">103</a></p>
<p id="n104" class="stm par run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="stm run hide_run"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="stm par run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="stm mis"><a href="#n116">116</a></p>
<p id="n117" class="stm mis"><a href="#n117">117</a></p>
<p id="n118" class="stm mis"><a href="#n118">118</a></p>
<p id="n119" class="stm mis"><a href="#n119">119</a></p>
<p id="n120" class="stm mis"><a href="#n120">120</a></p>
<p id="n121" class="stm mis"><a href="#n121">121</a></p>
<p id="n122" class="stm mis"><a href="#n122">122</a></p>
<p id="n123" class="stm mis"><a href="#n123">123</a></p>
<p id="n124" class="stm mis"><a href="#n124">124</a></p>
<p id="n125" class="stm mis"><a href="#n125">125</a></p>
<p id="n126" class="stm mis"><a href="#n126">126</a></p>
<p id="n127" class="stm mis"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="stm mis"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="stm run hide_run"><a href="#n134">134</a></p>
<p id="n135" class="stm mis"><a href="#n135">135</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">import</span> <span class="nam">base64</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">import</span> <span class="nam">hashlib</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">import</span> <span class="nam">hmac</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"><span class="key">import</span> <span class="nam">sys</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">from</span> <span class="nam">io</span> <span class="key">import</span> <span class="op">(</span><span class="nam">SEEK_SET</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="nam">dateutil</span><span class="op">.</span><span class="nam">tz</span> <span class="key">import</span> <span class="nam">tzutc</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">_unicode_type</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm par run hide_run"><span class="annotate short">32&#x202F;&#x219B;&#x202F;33</span><span class="annotate long">line 32 didn't jump to line 33, because the condition on line 32 was never true</span><span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">&lt;</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm mis"> <span class="key">def</span> <span class="nam">_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm mis"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">value</span><span class="op">,</span> <span class="nam">unicode</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm mis"> <span class="key">return</span> <span class="nam">value</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm mis"> <span class="key">return</span> <span class="nam">str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="nam">_str</span> <span class="op">=</span> <span class="nam">str</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"><span class="key">def</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="key">return</span> <span class="nam">_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm run hide_run"><span class="key">def</span> <span class="nam">_int_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"> <span class="key">return</span> <span class="nam">str</span><span class="op">(</span><span class="nam">int</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"><span class="key">def</span> <span class="nam">_bool_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm mis"> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm mis"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">value</span><span class="op">,</span> <span class="nam">bool</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm mis"> <span class="key">if</span> <span class="nam">value</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm mis"> <span class="key">return</span> <span class="str">'true'</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm mis"> <span class="key">return</span> <span class="str">'false'</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm mis"> <span class="key">return</span> <span class="nam">str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"><span class="key">def</span> <span class="nam">_to_utc_datetime</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm mis"> <span class="key">return</span> <span class="nam">value</span><span class="op">.</span><span class="nam">strftime</span><span class="op">(</span><span class="str">'%Y-%m-%dT%H:%M:%SZ'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"><span class="key">def</span> <span class="nam">_datetime_to_utc_string</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="com"># Azure expects the date value passed in to be UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"> <span class="com"># Azure will always return values as UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"> <span class="com"># If a date is passed in without timezone info, it is assumed to be UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm par run hide_run"><span class="annotate short">74&#x202F;&#x219B;&#x202F;75</span><span class="annotate long">line 74 didn't jump to line 75, because the condition on line 74 was never true</span> <span class="key">if</span> <span class="nam">value</span><span class="op">.</span><span class="nam">tzinfo</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm mis"> <span class="nam">value</span> <span class="op">=</span> <span class="nam">value</span><span class="op">.</span><span class="nam">astimezone</span><span class="op">(</span><span class="nam">tzutc</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="key">return</span> <span class="nam">value</span><span class="op">.</span><span class="nam">strftime</span><span class="op">(</span><span class="str">'%a, %d %b %Y %H:%M:%S GMT'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"><span class="key">def</span> <span class="nam">_encode_base64</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">data</span><span class="op">,</span> <span class="nam">_unicode_type</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="nam">data</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="nam">encoded</span> <span class="op">=</span> <span class="nam">base64</span><span class="op">.</span><span class="nam">b64encode</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="key">return</span> <span class="nam">encoded</span><span class="op">.</span><span class="nam">decode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"><span class="key">def</span> <span class="nam">_decode_base64_to_bytes</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm par run hide_run"><span class="annotate short">88&#x202F;&#x219B;&#x202F;90</span><span class="annotate long">line 88 didn't jump to line 90, because the condition on line 88 was never false</span> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">data</span><span class="op">,</span> <span class="nam">_unicode_type</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="nam">data</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"> <span class="key">return</span> <span class="nam">base64</span><span class="op">.</span><span class="nam">b64decode</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"><span class="key">def</span> <span class="nam">_decode_base64_to_text</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run"> <span class="nam">decoded_bytes</span> <span class="op">=</span> <span class="nam">_decode_base64_to_bytes</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="key">return</span> <span class="nam">decoded_bytes</span><span class="op">.</span><span class="nam">decode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"><span class="key">def</span> <span class="nam">_sign_string</span><span class="op">(</span><span class="nam">key</span><span class="op">,</span> <span class="nam">string_to_sign</span><span class="op">,</span> <span class="nam">key_is_base64</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm par run hide_run"><span class="annotate short">99&#x202F;&#x219B;&#x202F;102</span><span class="annotate long">line 99 didn't jump to line 102, because the condition on line 99 was never false</span> <span class="key">if</span> <span class="nam">key_is_base64</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="nam">key</span> <span class="op">=</span> <span class="nam">_decode_base64_to_bytes</span><span class="op">(</span><span class="nam">key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm mis"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">key</span><span class="op">,</span> <span class="nam">_unicode_type</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm mis"> <span class="nam">key</span> <span class="op">=</span> <span class="nam">key</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm par run hide_run"><span class="annotate short">104&#x202F;&#x219B;&#x202F;106</span><span class="annotate long">line 104 didn't jump to line 106, because the condition on line 104 was never false</span> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">string_to_sign</span><span class="op">,</span> <span class="nam">_unicode_type</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"> <span class="nam">string_to_sign</span> <span class="op">=</span> <span class="nam">string_to_sign</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"> <span class="nam">signed_hmac_sha256</span> <span class="op">=</span> <span class="nam">hmac</span><span class="op">.</span><span class="nam">HMAC</span><span class="op">(</span><span class="nam">key</span><span class="op">,</span> <span class="nam">string_to_sign</span><span class="op">,</span> <span class="nam">hashlib</span><span class="op">.</span><span class="nam">sha256</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="nam">digest</span> <span class="op">=</span> <span class="nam">signed_hmac_sha256</span><span class="op">.</span><span class="nam">digest</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="nam">encoded_digest</span> <span class="op">=</span> <span class="nam">_encode_base64</span><span class="op">(</span><span class="nam">digest</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm run hide_run"> <span class="key">return</span> <span class="nam">encoded_digest</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_content_md5</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="nam">md5</span> <span class="op">=</span> <span class="nam">hashlib</span><span class="op">.</span><span class="nam">md5</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm par run hide_run"><span class="annotate short">114&#x202F;&#x219B;&#x202F;116</span><span class="annotate long">line 114 didn't jump to line 116, because the condition on line 114 was never false</span> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">data</span><span class="op">,</span> <span class="nam">bytes</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">md5</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm mis"> <span class="key">elif</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">data</span><span class="op">,</span> <span class="str">'read'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm mis"> <span class="nam">pos</span> <span class="op">=</span> <span class="num">0</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm mis"> <span class="nam">pos</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">tell</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm mis"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm mis"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm mis"> <span class="key">for</span> <span class="nam">chunk</span> <span class="key">in</span> <span class="nam">iter</span><span class="op">(</span><span class="key">lambda</span><span class="op">:</span> <span class="nam">data</span><span class="op">.</span><span class="nam">read</span><span class="op">(</span><span class="num">4096</span><span class="op">)</span><span class="op">,</span> <span class="str">b""</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm mis"> <span class="nam">md5</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="nam">chunk</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm mis"> <span class="nam">data</span><span class="op">.</span><span class="nam">seek</span><span class="op">(</span><span class="nam">pos</span><span class="op">,</span> <span class="nam">SEEK_SET</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm mis"> <span class="key">except</span> <span class="op">(</span><span class="nam">AttributeError</span><span class="op">,</span> <span class="nam">IOError</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'data'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'data'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="key">return</span> <span class="nam">base64</span><span class="op">.</span><span class="nam">b64encode</span><span class="op">(</span><span class="nam">md5</span><span class="op">.</span><span class="nam">digest</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">.</span><span class="nam">decode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t134" class="stm run hide_run"><span class="key">def</span> <span class="nam">_lower</span><span class="op">(</span><span class="nam">text</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm mis"> <span class="key">return</span> <span class="nam">text</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,387 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_connection.py: 95%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_connection.py</b> :
<span class="pc_cov">95%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
57 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">55 run</span>
<span class="mis shortkey_m button_toggle_mis">2 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">2 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm par run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="stm par run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm mis"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="stm run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm run hide_run"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
<p id="n128" class="stm run hide_run"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="stm run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">sys</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm par run hide_run"><span class="annotate short">17&#x202F;&#x219B;&#x202F;20</span><span class="annotate long">line 17 didn't jump to line 20, because the condition on line 17 was never false</span><span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">>=</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"> <span class="key">from</span> <span class="nam">urllib</span><span class="op">.</span><span class="nam">parse</span> <span class="key">import</span> <span class="nam">urlparse</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="key">from</span> <span class="nam">urlparse</span> <span class="key">import</span> <span class="nam">urlparse</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_constants</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">SERVICE_HOST_BASE</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">DEFAULT_PROTOCOL</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">DEV_ACCOUNT_NAME</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">DEV_ACCOUNT_KEY</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">DEV_BLOB_HOST</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">DEV_QUEUE_HOST</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">DEV_TABLE_HOST</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">_ERROR_STORAGE_MISSING_INFO</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"><span class="nam">_EMULATOR_ENDPOINTS</span> <span class="op">=</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="str">'blob'</span><span class="op">:</span> <span class="nam">DEV_BLOB_HOST</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="str">'queue'</span><span class="op">:</span> <span class="nam">DEV_QUEUE_HOST</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="str">'table'</span><span class="op">:</span> <span class="nam">DEV_TABLE_HOST</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="str">'file'</span><span class="op">:</span> <span class="str">''</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"><span class="nam">_CONNECTION_ENDPONTS</span> <span class="op">=</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="str">'blob'</span><span class="op">:</span> <span class="str">'BlobEndpoint'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="str">'queue'</span><span class="op">:</span> <span class="str">'QueueEndpoint'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="str">'table'</span><span class="op">:</span> <span class="str">'TableEndpoint'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="str">'file'</span><span class="op">:</span> <span class="str">'FileEndpoint'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"><span class="key">class</span> <span class="nam">_ServiceParameters</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">service</span><span class="op">,</span> <span class="nam">account_name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">account_key</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">sas_token</span><span class="op">=</span><span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">protocol</span><span class="op">=</span><span class="nam">DEFAULT_PROTOCOL</span><span class="op">,</span> <span class="nam">endpoint_suffix</span><span class="op">=</span><span class="nam">SERVICE_HOST_BASE</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"> <span class="nam">custom_domain</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">=</span> <span class="nam">account_name</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span> <span class="op">=</span> <span class="nam">account_key</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span> <span class="op">=</span> <span class="nam">sas_token</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span> <span class="op">=</span> <span class="nam">protocol</span> <span class="key">or</span> <span class="nam">DEFAULT_PROTOCOL</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span> <span class="op">=</span> <span class="nam">is_emulated</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="key">if</span> <span class="nam">is_emulated</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">=</span> <span class="nam">DEV_ACCOUNT_NAME</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span> <span class="op">=</span> <span class="str">'http'</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="com"># Only set the account key if a sas_token is not present to allow sas to be used with the emulator</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span> <span class="op">=</span> <span class="nam">DEV_ACCOUNT_KEY</span> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">primary_endpoint</span> <span class="op">=</span> <span class="str">'{}/{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">_EMULATOR_ENDPOINTS</span><span class="op">[</span><span class="nam">service</span><span class="op">]</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">secondary_endpoint</span> <span class="op">=</span> <span class="str">'{}/{}-secondary'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">_EMULATOR_ENDPOINTS</span><span class="op">[</span><span class="nam">service</span><span class="op">]</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="com"># Strip whitespace from the key</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">.</span><span class="nam">strip</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">endpoint_suffix</span> <span class="op">=</span> <span class="nam">endpoint_suffix</span> <span class="key">or</span> <span class="nam">SERVICE_HOST_BASE</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"> <span class="com"># Setup the primary endpoint</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="key">if</span> <span class="nam">custom_domain</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="nam">parsed_url</span> <span class="op">=</span> <span class="nam">urlparse</span><span class="op">(</span><span class="nam">custom_domain</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"> <span class="com"># Trim any trailing slashes from the path</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="nam">path</span> <span class="op">=</span> <span class="nam">parsed_url</span><span class="op">.</span><span class="nam">path</span><span class="op">.</span><span class="nam">rstrip</span><span class="op">(</span><span class="str">'/'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">primary_endpoint</span> <span class="op">=</span> <span class="nam">parsed_url</span><span class="op">.</span><span class="nam">netloc</span> <span class="op">+</span> <span class="nam">path</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span> <span class="key">if</span> <span class="nam">parsed_url</span><span class="op">.</span><span class="nam">scheme</span> <span class="key">is</span> <span class="str">''</span> <span class="key">else</span> <span class="nam">parsed_url</span><span class="op">.</span><span class="nam">scheme</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm par run hide_run"><span class="annotate short">87&#x202F;&#x219B;&#x202F;88</span><span class="annotate long">line 87 didn't jump to line 88, because the condition on line 87 was never true</span> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_STORAGE_MISSING_INFO</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">primary_endpoint</span> <span class="op">=</span> <span class="str">'{}.{}.{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">service</span><span class="op">,</span> <span class="nam">endpoint_suffix</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"> <span class="com"># Setup the secondary endpoint</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">secondary_endpoint</span> <span class="op">=</span> <span class="str">'{}-secondary.{}.{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">service</span><span class="op">,</span> <span class="nam">endpoint_suffix</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">secondary_endpoint</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get_service_parameters</span><span class="op">(</span><span class="nam">service</span><span class="op">,</span> <span class="nam">account_name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">account_key</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">sas_token</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">is_emulated</span><span class="op">=</span><span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"> <span class="nam">protocol</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">endpoint_suffix</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">custom_domain</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">request_session</span><span class="op">=</span><span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"> <span class="nam">connection_string</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">socket_timeout</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="key">if</span> <span class="nam">connection_string</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="nam">params</span> <span class="op">=</span> <span class="nam">_ServiceParameters</span><span class="op">.</span><span class="nam">_from_connection_string</span><span class="op">(</span><span class="nam">connection_string</span><span class="op">,</span> <span class="nam">service</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">is_emulated</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm run hide_run"> <span class="nam">params</span> <span class="op">=</span> <span class="nam">_ServiceParameters</span><span class="op">(</span><span class="nam">service</span><span class="op">,</span> <span class="nam">is_emulated</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">account_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"> <span class="nam">params</span> <span class="op">=</span> <span class="nam">_ServiceParameters</span><span class="op">(</span><span class="nam">service</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"> <span class="nam">account_name</span><span class="op">=</span><span class="nam">account_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"> <span class="nam">account_key</span><span class="op">=</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">is_emulated</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"> <span class="nam">protocol</span><span class="op">=</span><span class="nam">protocol</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"> <span class="nam">endpoint_suffix</span><span class="op">=</span><span class="nam">endpoint_suffix</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"> <span class="nam">custom_domain</span><span class="op">=</span><span class="nam">custom_domain</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_STORAGE_MISSING_INFO</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="nam">params</span><span class="op">.</span><span class="nam">request_session</span> <span class="op">=</span> <span class="nam">request_session</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="nam">params</span><span class="op">.</span><span class="nam">socket_timeout</span> <span class="op">=</span> <span class="nam">socket_timeout</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="key">return</span> <span class="nam">params</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="key">def</span> <span class="nam">_from_connection_string</span><span class="op">(</span><span class="nam">connection_string</span><span class="op">,</span> <span class="nam">service</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"> <span class="com"># Split into key=value pairs removing empties, then split the pairs into a dict</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm run hide_run"> <span class="nam">config</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="nam">s</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'='</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span> <span class="key">for</span> <span class="nam">s</span> <span class="key">in</span> <span class="nam">connection_string</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">';'</span><span class="op">)</span> <span class="key">if</span> <span class="nam">s</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"> <span class="com"># Authentication</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"> <span class="nam">account_name</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'AccountName'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm run hide_run"> <span class="nam">account_key</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'AccountKey'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="nam">sas_token</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'SharedAccessSignature'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"> <span class="com"># Emulator</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm run hide_run"> <span class="nam">is_emulated</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'UseDevelopmentStorage'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="com"># Basic URL Configuration</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="nam">protocol</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'DefaultEndpointsProtocol'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"> <span class="nam">endpoint_suffix</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'EndpointSuffix'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"> <span class="com"># Custom URLs</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run"> <span class="nam">endpoint</span> <span class="op">=</span> <span class="nam">config</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">_CONNECTION_ENDPONTS</span><span class="op">[</span><span class="nam">service</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="key">return</span> <span class="nam">_ServiceParameters</span><span class="op">(</span><span class="nam">service</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"> <span class="nam">account_name</span><span class="op">=</span><span class="nam">account_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"> <span class="nam">account_key</span><span class="op">=</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">is_emulated</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"> <span class="nam">protocol</span><span class="op">=</span><span class="nam">protocol</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"> <span class="nam">endpoint_suffix</span><span class="op">=</span><span class="nam">endpoint_suffix</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"> <span class="nam">custom_domain</span><span class="op">=</span><span class="nam">endpoint</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,181 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_constants.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_constants.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
14 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">14 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">platform</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="nam">__author__</span> <span class="op">=</span> <span class="str">'Microsoft Corp. &lt;ptvshelp@microsoft.com>'</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="nam">__version__</span> <span class="op">=</span> <span class="str">'0.36.0'</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="com"># x-ms-version for storage service.</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="nam">X_MS_VERSION</span> <span class="op">=</span> <span class="str">'2017-04-17'</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="com"># UserAgent string sample: 'Azure-Storage/0.32.0 (Python CPython 3.4.2; Windows 8)'</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"><span class="nam">USER_AGENT_STRING</span> <span class="op">=</span> <span class="str">'Azure-Storage/{} (Python {} {}; {} {})'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">__version__</span><span class="op">,</span> <span class="nam">platform</span><span class="op">.</span><span class="nam">python_implementation</span><span class="op">(</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">platform</span><span class="op">.</span><span class="nam">python_version</span><span class="op">(</span><span class="op">)</span><span class="op">,</span> <span class="nam">platform</span><span class="op">.</span><span class="nam">system</span><span class="op">(</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">platform</span><span class="op">.</span><span class="nam">release</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="com"># Live ServiceClient URLs</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"><span class="nam">SERVICE_HOST_BASE</span> <span class="op">=</span> <span class="str">'core.windows.net'</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="nam">DEFAULT_PROTOCOL</span> <span class="op">=</span> <span class="str">'https'</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="com"># Development ServiceClient URLs</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"><span class="nam">DEV_BLOB_HOST</span> <span class="op">=</span> <span class="str">'127.0.0.1:10000'</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"><span class="nam">DEV_QUEUE_HOST</span> <span class="op">=</span> <span class="str">'127.0.0.1:10001'</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"><span class="nam">DEV_TABLE_HOST</span> <span class="op">=</span> <span class="str">'127.0.0.1:10002'</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="com"># Default credentials for Development Storage Service</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"><span class="nam">DEV_ACCOUNT_NAME</span> <span class="op">=</span> <span class="str">'devstoreaccount1'</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"><span class="nam">DEV_ACCOUNT_KEY</span> <span class="op">=</span> <span class="str">'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="com"># Socket timeout in seconds</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"><span class="nam">DEFAULT_SOCKET_TIMEOUT</span> <span class="op">=</span> <span class="num">20</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="com"># Encryption constants</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"><span class="nam">_ENCRYPTION_PROTOCOL_V1</span> <span class="op">=</span> <span class="str">'1.0'</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,791 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_deserialization.py: 85%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_deserialization.py</b> :
<span class="pc_cov">85%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
128 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">114 run</span>
<span class="mis shortkey_m button_toggle_mis">14 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">10 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="stm mis"><a href="#n21">21</a></p>
<p id="n22" class="stm mis"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="stm run hide_run"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="stm mis"><a href="#n49">49</a></p>
<p id="n50" class="stm mis"><a href="#n50">50</a></p>
<p id="n51" class="stm mis"><a href="#n51">51</a></p>
<p id="n52" class="stm mis"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="stm mis"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm mis"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm par run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="stm mis"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm par run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm mis"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="stm run hide_run"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="stm run hide_run"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="stm run hide_run"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="stm run hide_run"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="stm par run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm mis"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="stm run hide_run"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="pln"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="stm par run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="stm mis"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm run hide_run"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="stm run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="stm run hide_run"><a href="#n167">167</a></p>
<p id="n168" class="stm run hide_run"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="stm run hide_run"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="stm par run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="stm run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="stm run hide_run"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="stm run hide_run"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="stm run hide_run"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="pln"><a href="#n190">190</a></p>
<p id="n191" class="pln"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="stm par run hide_run"><a href="#n194">194</a></p>
<p id="n195" class="stm mis"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="stm run hide_run"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="stm run hide_run"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="stm run hide_run"><a href="#n201">201</a></p>
<p id="n202" class="stm run hide_run"><a href="#n202">202</a></p>
<p id="n203" class="stm run hide_run"><a href="#n203">203</a></p>
<p id="n204" class="stm run hide_run"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="stm run hide_run"><a href="#n206">206</a></p>
<p id="n207" class="stm run hide_run"><a href="#n207">207</a></p>
<p id="n208" class="stm run hide_run"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="stm run hide_run"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="pln"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="pln"><a href="#n238">238</a></p>
<p id="n239" class="pln"><a href="#n239">239</a></p>
<p id="n240" class="pln"><a href="#n240">240</a></p>
<p id="n241" class="pln"><a href="#n241">241</a></p>
<p id="n242" class="pln"><a href="#n242">242</a></p>
<p id="n243" class="pln"><a href="#n243">243</a></p>
<p id="n244" class="pln"><a href="#n244">244</a></p>
<p id="n245" class="pln"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
<p id="n247" class="pln"><a href="#n247">247</a></p>
<p id="n248" class="pln"><a href="#n248">248</a></p>
<p id="n249" class="pln"><a href="#n249">249</a></p>
<p id="n250" class="pln"><a href="#n250">250</a></p>
<p id="n251" class="pln"><a href="#n251">251</a></p>
<p id="n252" class="pln"><a href="#n252">252</a></p>
<p id="n253" class="pln"><a href="#n253">253</a></p>
<p id="n254" class="stm par run hide_run"><a href="#n254">254</a></p>
<p id="n255" class="stm mis"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="stm run hide_run"><a href="#n257">257</a></p>
<p id="n258" class="stm run hide_run"><a href="#n258">258</a></p>
<p id="n259" class="pln"><a href="#n259">259</a></p>
<p id="n260" class="pln"><a href="#n260">260</a></p>
<p id="n261" class="stm run hide_run"><a href="#n261">261</a></p>
<p id="n262" class="stm run hide_run"><a href="#n262">262</a></p>
<p id="n263" class="stm run hide_run"><a href="#n263">263</a></p>
<p id="n264" class="stm run hide_run"><a href="#n264">264</a></p>
<p id="n265" class="stm run hide_run"><a href="#n265">265</a></p>
<p id="n266" class="stm run hide_run"><a href="#n266">266</a></p>
<p id="n267" class="stm run hide_run"><a href="#n267">267</a></p>
<p id="n268" class="pln"><a href="#n268">268</a></p>
<p id="n269" class="stm run hide_run"><a href="#n269">269</a></p>
<p id="n270" class="pln"><a href="#n270">270</a></p>
<p id="n271" class="pln"><a href="#n271">271</a></p>
<p id="n272" class="stm run hide_run"><a href="#n272">272</a></p>
<p id="n273" class="stm par run hide_run"><a href="#n273">273</a></p>
<p id="n274" class="stm run hide_run"><a href="#n274">274</a></p>
<p id="n275" class="stm run hide_run"><a href="#n275">275</a></p>
<p id="n276" class="pln"><a href="#n276">276</a></p>
<p id="n277" class="pln"><a href="#n277">277</a></p>
<p id="n278" class="stm run hide_run"><a href="#n278">278</a></p>
<p id="n279" class="stm par run hide_run"><a href="#n279">279</a></p>
<p id="n280" class="stm run hide_run"><a href="#n280">280</a></p>
<p id="n281" class="stm run hide_run"><a href="#n281">281</a></p>
<p id="n282" class="pln"><a href="#n282">282</a></p>
<p id="n283" class="pln"><a href="#n283">283</a></p>
<p id="n284" class="stm run hide_run"><a href="#n284">284</a></p>
<p id="n285" class="stm par run hide_run"><a href="#n285">285</a></p>
<p id="n286" class="stm run hide_run"><a href="#n286">286</a></p>
<p id="n287" class="stm run hide_run"><a href="#n287">287</a></p>
<p id="n288" class="stm run hide_run"><a href="#n288">288</a></p>
<p id="n289" class="pln"><a href="#n289">289</a></p>
<p id="n290" class="stm run hide_run"><a href="#n290">290</a></p>
<p id="n291" class="pln"><a href="#n291">291</a></p>
<p id="n292" class="stm run hide_run"><a href="#n292">292</a></p>
<p id="n293" class="pln"><a href="#n293">293</a></p>
<p id="n294" class="stm run hide_run"><a href="#n294">294</a></p>
<p id="n295" class="pln"><a href="#n295">295</a></p>
<p id="n296" class="stm run hide_run"><a href="#n296">296</a></p>
<p id="n297" class="stm run hide_run"><a href="#n297">297</a></p>
<p id="n298" class="stm run hide_run"><a href="#n298">298</a></p>
<p id="n299" class="pln"><a href="#n299">299</a></p>
<p id="n300" class="stm run hide_run"><a href="#n300">300</a></p>
<p id="n301" class="stm run hide_run"><a href="#n301">301</a></p>
<p id="n302" class="stm run hide_run"><a href="#n302">302</a></p>
<p id="n303" class="pln"><a href="#n303">303</a></p>
<p id="n304" class="stm run hide_run"><a href="#n304">304</a></p>
<p id="n305" class="pln"><a href="#n305">305</a></p>
<p id="n306" class="pln"><a href="#n306">306</a></p>
<p id="n307" class="stm run hide_run"><a href="#n307">307</a></p>
<p id="n308" class="stm run hide_run"><a href="#n308">308</a></p>
<p id="n309" class="stm run hide_run"><a href="#n309">309</a></p>
<p id="n310" class="pln"><a href="#n310">310</a></p>
<p id="n311" class="stm run hide_run"><a href="#n311">311</a></p>
<p id="n312" class="pln"><a href="#n312">312</a></p>
<p id="n313" class="pln"><a href="#n313">313</a></p>
<p id="n314" class="stm run hide_run"><a href="#n314">314</a></p>
<p id="n315" class="pln"><a href="#n315">315</a></p>
<p id="n316" class="pln"><a href="#n316">316</a></p>
<p id="n317" class="pln"><a href="#n317">317</a></p>
<p id="n318" class="pln"><a href="#n318">318</a></p>
<p id="n319" class="pln"><a href="#n319">319</a></p>
<p id="n320" class="pln"><a href="#n320">320</a></p>
<p id="n321" class="pln"><a href="#n321">321</a></p>
<p id="n322" class="pln"><a href="#n322">322</a></p>
<p id="n323" class="pln"><a href="#n323">323</a></p>
<p id="n324" class="pln"><a href="#n324">324</a></p>
<p id="n325" class="stm run hide_run"><a href="#n325">325</a></p>
<p id="n326" class="pln"><a href="#n326">326</a></p>
<p id="n327" class="pln"><a href="#n327">327</a></p>
<p id="n328" class="stm run hide_run"><a href="#n328">328</a></p>
<p id="n329" class="pln"><a href="#n329">329</a></p>
<p id="n330" class="pln"><a href="#n330">330</a></p>
<p id="n331" class="stm run hide_run"><a href="#n331">331</a></p>
<p id="n332" class="stm run hide_run"><a href="#n332">332</a></p>
<p id="n333" class="stm run hide_run"><a href="#n333">333</a></p>
<p id="n334" class="pln"><a href="#n334">334</a></p>
<p id="n335" class="pln"><a href="#n335">335</a></p>
<p id="n336" class="stm run hide_run"><a href="#n336">336</a></p>
<p id="n337" class="pln"><a href="#n337">337</a></p>
<p id="n338" class="pln"><a href="#n338">338</a></p>
<p id="n339" class="stm run hide_run"><a href="#n339">339</a></p>
<p id="n340" class="pln"><a href="#n340">340</a></p>
<p id="n341" class="pln"><a href="#n341">341</a></p>
<p id="n342" class="pln"><a href="#n342">342</a></p>
<p id="n343" class="pln"><a href="#n343">343</a></p>
<p id="n344" class="pln"><a href="#n344">344</a></p>
<p id="n345" class="stm run hide_run"><a href="#n345">345</a></p>
<p id="n346" class="pln"><a href="#n346">346</a></p>
<p id="n347" class="pln"><a href="#n347">347</a></p>
<p id="n348" class="stm run hide_run"><a href="#n348">348</a></p>
<p id="n349" class="stm run hide_run"><a href="#n349">349</a></p>
<p id="n350" class="stm run hide_run"><a href="#n350">350</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">dateutil</span> <span class="key">import</span> <span class="nam">parser</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="nam">_to_str</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"><span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">cElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm mis"><span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm mis"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">ElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">ServiceProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">Logging</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">Metrics</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">CorsRule</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">AccessPolicy</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">_dict</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">GeoReplication</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">ServiceStats</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm run hide_run"><span class="key">def</span> <span class="nam">_int_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="key">return</span> <span class="nam">value</span> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">None</span> <span class="key">else</span> <span class="nam">int</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"><span class="key">def</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"> <span class="key">return</span> <span class="nam">value</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span> <span class="op">==</span> <span class="str">'true'</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"><span class="key">def</span> <span class="nam">_to_upper_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"> <span class="key">return</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">.</span><span class="nam">upper</span><span class="op">(</span><span class="op">)</span> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_download_size</span><span class="op">(</span><span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span> <span class="nam">resource_size</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm mis"> <span class="key">if</span> <span class="nam">start_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm mis"> <span class="nam">end_range</span> <span class="op">=</span> <span class="nam">end_range</span> <span class="key">if</span> <span class="nam">end_range</span> <span class="key">else</span> <span class="op">(</span><span class="nam">resource_size</span> <span class="key">if</span> <span class="nam">resource_size</span> <span class="key">else</span> <span class="key">None</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm mis"> <span class="key">if</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm mis"> <span class="key">return</span> <span class="nam">end_range</span> <span class="op">-</span> <span class="nam">start_range</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm mis"> <span class="key">return</span> <span class="nam">resource_size</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"><span class="nam">GET_PROPERTIES_ATTRIBUTE_MAP</span> <span class="op">=</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"> <span class="str">'last-modified'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'last_modified'</span><span class="op">,</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="str">'etag'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'etag'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"> <span class="str">'x-ms-blob-type'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'blob_type'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"> <span class="str">'content-length'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'content_length'</span><span class="op">,</span> <span class="nam">_int_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"> <span class="str">'content-range'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'content_range'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="str">'x-ms-blob-sequence-number'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'page_blob_sequence_number'</span><span class="op">,</span> <span class="nam">_int_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"> <span class="str">'x-ms-blob-committed-block-count'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'append_blob_committed_block_count'</span><span class="op">,</span> <span class="nam">_int_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="str">'x-ms-access-tier'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'blob_tier'</span><span class="op">,</span> <span class="nam">_to_upper_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="str">'x-ms-access-tier-inferred'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'blob_tier_inferred'</span><span class="op">,</span> <span class="nam">_bool</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"> <span class="str">'x-ms-share-quota'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'quota'</span><span class="op">,</span> <span class="nam">_int_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"> <span class="str">'x-ms-server-encrypted'</span><span class="op">:</span> <span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="str">'server_encrypted'</span><span class="op">,</span> <span class="nam">_bool</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="str">'content-type'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_type'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"> <span class="str">'cache-control'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'cache_control'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"> <span class="str">'content-encoding'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_encoding'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="str">'content-disposition'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_disposition'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="str">'content-language'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_language'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"> <span class="str">'content-md5'</span><span class="op">:</span> <span class="op">(</span><span class="str">'content_settings'</span><span class="op">,</span> <span class="str">'content_md5'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"> <span class="str">'x-ms-lease-status'</span><span class="op">:</span> <span class="op">(</span><span class="str">'lease'</span><span class="op">,</span> <span class="str">'status'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"> <span class="str">'x-ms-lease-state'</span><span class="op">:</span> <span class="op">(</span><span class="str">'lease'</span><span class="op">,</span> <span class="str">'state'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"> <span class="str">'x-ms-lease-duration'</span><span class="op">:</span> <span class="op">(</span><span class="str">'lease'</span><span class="op">,</span> <span class="str">'duration'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"> <span class="str">'x-ms-copy-id'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'id'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"> <span class="str">'x-ms-copy-source'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'source'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="str">'x-ms-copy-status'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'status'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"> <span class="str">'x-ms-copy-progress'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'progress'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"> <span class="str">'x-ms-copy-completion-time'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'completion_time'</span><span class="op">,</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"> <span class="str">'x-ms-copy-destination-snapshot'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'destination_snapshot_time'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="str">'x-ms-copy-status-description'</span><span class="op">:</span> <span class="op">(</span><span class="str">'copy'</span><span class="op">,</span> <span class="str">'status_description'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_metadata</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="str"> Extracts out resource metadata information.</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm par run hide_run"><span class="annotate short">95&#x202F;&#x219B;&#x202F;96</span><span class="annotate long">line 95 didn't jump to line 96, because the condition on line 95 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">_dict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="key">for</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="key">if</span> <span class="nam">key</span><span class="op">.</span><span class="nam">startswith</span><span class="op">(</span><span class="str">'x-ms-meta-'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="nam">metadata</span><span class="op">[</span><span class="nam">key</span><span class="op">[</span><span class="num">10</span><span class="op">:</span><span class="op">]</span><span class="op">]</span> <span class="op">=</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="key">return</span> <span class="nam">metadata</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">result_class</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"><span class="str"> Extracts out resource properties and metadata information.</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="str"> Ignores the standard http headers.</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm par run hide_run"><span class="annotate short">112&#x202F;&#x219B;&#x202F;113</span><span class="annotate long">line 112 didn't jump to line 113, because the condition on line 112 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">props</span> <span class="op">=</span> <span class="nam">result_class</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm run hide_run"> <span class="key">for</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="nam">info</span> <span class="op">=</span> <span class="nam">GET_PROPERTIES_ATTRIBUTE_MAP</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="key">if</span> <span class="nam">info</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="key">if</span> <span class="nam">info</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">props</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">2</span><span class="op">]</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm run hide_run"> <span class="nam">attr</span> <span class="op">=</span> <span class="nam">getattr</span><span class="op">(</span><span class="nam">props</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">attr</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">,</span> <span class="nam">info</span><span class="op">[</span><span class="num">2</span><span class="op">]</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm run hide_run"> <span class="key">return</span> <span class="nam">props</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_length_from_content_range</span><span class="op">(</span><span class="nam">content_range</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="str"> Parses the blob length from the content range header: bytes 1-3/65537</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm par run hide_run"><span class="annotate short">132&#x202F;&#x219B;&#x202F;133</span><span class="annotate long">line 132 didn't jump to line 133, because the condition on line 132 was never true</span> <span class="key">if</span> <span class="nam">content_range</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"> <span class="com"># First, split in space and take the second half: '1-3/65537'</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"> <span class="com"># Next, split on slash and take the second half: '65537'</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"> <span class="com"># Finally, convert to an int: 65537</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm run hide_run"> <span class="key">return</span> <span class="nam">int</span><span class="op">(</span><span class="nam">content_range</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">' '</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'/'</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_signed_identifiers</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="str"> &lt;SignedIdentifiers></span><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln"><span class="str"> &lt;SignedIdentifier></span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"><span class="str"> &lt;Id>unique-value&lt;/Id></span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"><span class="str"> &lt;AccessPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="str"> &lt;Start>start-time&lt;/Start></span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"><span class="str"> &lt;Expiry>expiry-time&lt;/Expiry></span><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"><span class="str"> &lt;Permission>abbreviated-permission-list&lt;/Permission></span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="str"> &lt;/AccessPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="str"> &lt;/SignedIdentifier></span><span class="strut">&nbsp;</span></p>
<p id="t153" class="pln"><span class="str"> &lt;/SignedIdentifiers></span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm par run hide_run"><span class="annotate short">155&#x202F;&#x219B;&#x202F;156</span><span class="annotate long">line 155 didn't jump to line 156, because the condition on line 155 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm run hide_run"> <span class="nam">signed_identifiers</span> <span class="op">=</span> <span class="nam">_dict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"> <span class="key">for</span> <span class="nam">signed_identifier_element</span> <span class="key">in</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'SignedIdentifier'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"> <span class="com"># Id element</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">signed_identifier_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Id'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"> <span class="com"># Access policy element</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="nam">access_policy</span> <span class="op">=</span> <span class="nam">AccessPolicy</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm run hide_run"> <span class="nam">access_policy_element</span> <span class="op">=</span> <span class="nam">signed_identifier_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'AccessPolicy'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="stm run hide_run"> <span class="key">if</span> <span class="nam">access_policy_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="nam">start_element</span> <span class="op">=</span> <span class="nam">access_policy_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Start'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="stm run hide_run"> <span class="key">if</span> <span class="nam">start_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">start</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">start_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="nam">expiry_element</span> <span class="op">=</span> <span class="nam">access_policy_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Expiry'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm par run hide_run"><span class="annotate short">174&#x202F;&#x219B;&#x202F;177</span><span class="annotate long">line 174 didn't jump to line 177, because the condition on line 174 was never false</span> <span class="key">if</span> <span class="nam">expiry_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm run hide_run"> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">expiry</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">expiry_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t177" class="stm run hide_run"> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">permission</span> <span class="op">=</span> <span class="nam">access_policy_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Permission'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm run hide_run"> <span class="nam">signed_identifiers</span><span class="op">[</span><span class="nam">id</span><span class="op">]</span> <span class="op">=</span> <span class="nam">access_policy</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="key">return</span> <span class="nam">signed_identifiers</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t184" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_service_stats</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"><span class="str"> &lt;StorageServiceStats></span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"><span class="str"> &lt;GeoReplication> </span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="str"> &lt;Status>live|bootstrap|unavailable&lt;/Status></span><span class="strut">&nbsp;</span></p>
<p id="t190" class="pln"><span class="str"> &lt;LastSyncTime>sync-time|&lt;empty>&lt;/LastSyncTime></span><span class="strut">&nbsp;</span></p>
<p id="t191" class="pln"><span class="str"> &lt;/GeoReplication></span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="str"> &lt;/StorageServiceStats></span><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="stm par run hide_run"><span class="annotate short">194&#x202F;&#x219B;&#x202F;195</span><span class="annotate long">line 194 didn't jump to line 195, because the condition on line 194 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t197" class="stm run hide_run"> <span class="nam">service_stats_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t199" class="stm run hide_run"> <span class="nam">geo_replication_element</span> <span class="op">=</span> <span class="nam">service_stats_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'GeoReplication'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t201" class="stm run hide_run"> <span class="nam">geo_replication</span> <span class="op">=</span> <span class="nam">GeoReplication</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t202" class="stm run hide_run"> <span class="nam">geo_replication</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="nam">geo_replication_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Status'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="stm run hide_run"> <span class="nam">last_sync_time</span> <span class="op">=</span> <span class="nam">geo_replication_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'LastSyncTime'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="stm run hide_run"> <span class="nam">geo_replication</span><span class="op">.</span><span class="nam">last_sync_time</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">last_sync_time</span><span class="op">)</span> <span class="key">if</span> <span class="nam">last_sync_time</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t206" class="stm run hide_run"> <span class="nam">service_stats</span> <span class="op">=</span> <span class="nam">ServiceStats</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="stm run hide_run"> <span class="nam">service_stats</span><span class="op">.</span><span class="nam">geo_replication</span> <span class="op">=</span> <span class="nam">geo_replication</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="stm run hide_run"> <span class="key">return</span> <span class="nam">service_stats</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t211" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_service_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"><span class="str"> &lt;StorageServiceProperties></span><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"><span class="str"> &lt;Logging></span><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="str"> &lt;Delete>true|false&lt;/Delete></span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="str"> &lt;Read>true|false&lt;/Read></span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="str"> &lt;Write>true|false&lt;/Write></span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="str"> &lt;/Logging></span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="str"> &lt;HourMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t227" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"><span class="str"> &lt;IncludeAPIs>true|false&lt;/IncludeAPIs></span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"><span class="str"> &lt;/HourMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"><span class="str"> &lt;MinuteMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"><span class="str"> &lt;IncludeAPIs>true|false&lt;/IncludeAPIs></span><span class="strut">&nbsp;</span></p>
<p id="t238" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t239" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t240" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t241" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t242" class="pln"><span class="str"> &lt;/MinuteMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t243" class="pln"><span class="str"> &lt;Cors></span><span class="strut">&nbsp;</span></p>
<p id="t244" class="pln"><span class="str"> &lt;CorsRule></span><span class="strut">&nbsp;</span></p>
<p id="t245" class="pln"><span class="str"> &lt;AllowedOrigins>comma-separated-list-of-allowed-origins&lt;/AllowedOrigins></span><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln"><span class="str"> &lt;AllowedMethods>comma-separated-list-of-HTTP-verb&lt;/AllowedMethods></span><span class="strut">&nbsp;</span></p>
<p id="t247" class="pln"><span class="str"> &lt;MaxAgeInSeconds>max-caching-age-in-seconds&lt;/MaxAgeInSeconds></span><span class="strut">&nbsp;</span></p>
<p id="t248" class="pln"><span class="str"> &lt;ExposedHeaders>comma-seperated-list-of-response-headers&lt;/ExposedHeaders></span><span class="strut">&nbsp;</span></p>
<p id="t249" class="pln"><span class="str"> &lt;AllowedHeaders>comma-seperated-list-of-request-headers&lt;/AllowedHeaders></span><span class="strut">&nbsp;</span></p>
<p id="t250" class="pln"><span class="str"> &lt;/CorsRule></span><span class="strut">&nbsp;</span></p>
<p id="t251" class="pln"><span class="str"> &lt;/Cors></span><span class="strut">&nbsp;</span></p>
<p id="t252" class="pln"><span class="str"> &lt;/StorageServiceProperties></span><span class="strut">&nbsp;</span></p>
<p id="t253" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t254" class="stm par run hide_run"><span class="annotate short">254&#x202F;&#x219B;&#x202F;255</span><span class="annotate long">line 254 didn't jump to line 255, because the condition on line 254 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t255" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t257" class="stm run hide_run"> <span class="nam">service_properties_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t258" class="stm run hide_run"> <span class="nam">service_properties</span> <span class="op">=</span> <span class="nam">ServiceProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t260" class="pln"> <span class="com"># Logging</span><span class="strut">&nbsp;</span></p>
<p id="t261" class="stm run hide_run"> <span class="nam">logging</span> <span class="op">=</span> <span class="nam">service_properties_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Logging'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t262" class="stm run hide_run"> <span class="key">if</span> <span class="nam">logging</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t263" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">logging</span> <span class="op">=</span> <span class="nam">Logging</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">logging</span><span class="op">.</span><span class="nam">version</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Version'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">logging</span><span class="op">.</span><span class="nam">delete</span> <span class="op">=</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Delete'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">logging</span><span class="op">.</span><span class="nam">read</span> <span class="op">=</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Read'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t267" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">logging</span><span class="op">.</span><span class="nam">write</span> <span class="op">=</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Write'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t268" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t269" class="stm run hide_run"> <span class="nam">_convert_xml_to_retention_policy</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'RetentionPolicy'</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t270" class="pln"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">logging</span><span class="op">.</span><span class="nam">retention_policy</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t271" class="pln"> <span class="com"># HourMetrics</span><span class="strut">&nbsp;</span></p>
<p id="t272" class="stm run hide_run"> <span class="nam">hour_metrics_element</span> <span class="op">=</span> <span class="nam">service_properties_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'HourMetrics'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t273" class="stm par run hide_run"><span class="annotate short">273&#x202F;&#x219B;&#x202F;278</span><span class="annotate long">line 273 didn't jump to line 278, because the condition on line 273 was never false</span> <span class="key">if</span> <span class="nam">hour_metrics_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t274" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">hour_metrics</span> <span class="op">=</span> <span class="nam">Metrics</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t275" class="stm run hide_run"> <span class="nam">_convert_xml_to_metrics</span><span class="op">(</span><span class="nam">hour_metrics_element</span><span class="op">,</span> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">hour_metrics</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t276" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t277" class="pln"> <span class="com"># MinuteMetrics</span><span class="strut">&nbsp;</span></p>
<p id="t278" class="stm run hide_run"> <span class="nam">minute_metrics_element</span> <span class="op">=</span> <span class="nam">service_properties_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'MinuteMetrics'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t279" class="stm par run hide_run"><span class="annotate short">279&#x202F;&#x219B;&#x202F;284</span><span class="annotate long">line 279 didn't jump to line 284, because the condition on line 279 was never false</span> <span class="key">if</span> <span class="nam">minute_metrics_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t280" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">minute_metrics</span> <span class="op">=</span> <span class="nam">Metrics</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t281" class="stm run hide_run"> <span class="nam">_convert_xml_to_metrics</span><span class="op">(</span><span class="nam">minute_metrics_element</span><span class="op">,</span> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">minute_metrics</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t282" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t283" class="pln"> <span class="com"># CORS</span><span class="strut">&nbsp;</span></p>
<p id="t284" class="stm run hide_run"> <span class="nam">cors</span> <span class="op">=</span> <span class="nam">service_properties_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Cors'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t285" class="stm par run hide_run"><span class="annotate short">285&#x202F;&#x219B;&#x202F;307</span><span class="annotate long">line 285 didn't jump to line 307, because the condition on line 285 was never false</span> <span class="key">if</span> <span class="nam">cors</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t286" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">cors</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t287" class="stm run hide_run"> <span class="key">for</span> <span class="nam">rule</span> <span class="key">in</span> <span class="nam">cors</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'CorsRule'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t288" class="stm run hide_run"> <span class="nam">allowed_origins</span> <span class="op">=</span> <span class="nam">rule</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'AllowedOrigins'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">','</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t289" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t290" class="stm run hide_run"> <span class="nam">allowed_methods</span> <span class="op">=</span> <span class="nam">rule</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'AllowedMethods'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">','</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t291" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t292" class="stm run hide_run"> <span class="nam">max_age_in_seconds</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">rule</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'MaxAgeInSeconds'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t293" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t294" class="stm run hide_run"> <span class="nam">cors_rule</span> <span class="op">=</span> <span class="nam">CorsRule</span><span class="op">(</span><span class="nam">allowed_origins</span><span class="op">,</span> <span class="nam">allowed_methods</span><span class="op">,</span> <span class="nam">max_age_in_seconds</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t295" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t296" class="stm run hide_run"> <span class="nam">exposed_headers</span> <span class="op">=</span> <span class="nam">rule</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'ExposedHeaders'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t297" class="stm run hide_run"> <span class="key">if</span> <span class="nam">exposed_headers</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t298" class="stm run hide_run"> <span class="nam">cors_rule</span><span class="op">.</span><span class="nam">exposed_headers</span> <span class="op">=</span> <span class="nam">exposed_headers</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">','</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t299" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t300" class="stm run hide_run"> <span class="nam">allowed_headers</span> <span class="op">=</span> <span class="nam">rule</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'AllowedHeaders'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t301" class="stm run hide_run"> <span class="key">if</span> <span class="nam">allowed_headers</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t302" class="stm run hide_run"> <span class="nam">cors_rule</span><span class="op">.</span><span class="nam">allowed_headers</span> <span class="op">=</span> <span class="nam">allowed_headers</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">','</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t303" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t304" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">cors</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">cors_rule</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t305" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t306" class="pln"> <span class="com"># Target version</span><span class="strut">&nbsp;</span></p>
<p id="t307" class="stm run hide_run"> <span class="nam">target_version</span> <span class="op">=</span> <span class="nam">service_properties_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'DefaultServiceVersion'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t308" class="stm run hide_run"> <span class="key">if</span> <span class="nam">target_version</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t309" class="stm run hide_run"> <span class="nam">service_properties</span><span class="op">.</span><span class="nam">target_version</span> <span class="op">=</span> <span class="nam">target_version</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t310" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t311" class="stm run hide_run"> <span class="key">return</span> <span class="nam">service_properties</span><span class="strut">&nbsp;</span></p>
<p id="t312" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t313" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t314" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_metrics</span><span class="op">(</span><span class="nam">xml</span><span class="op">,</span> <span class="nam">metrics</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t315" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t316" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t317" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t318" class="pln"><span class="str"> &lt;IncludeAPIs>true|false&lt;/IncludeAPIs></span><span class="strut">&nbsp;</span></p>
<p id="t319" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t320" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t321" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t322" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t323" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t324" class="pln"> <span class="com"># Version</span><span class="strut">&nbsp;</span></p>
<p id="t325" class="stm run hide_run"> <span class="nam">metrics</span><span class="op">.</span><span class="nam">version</span> <span class="op">=</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Version'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t326" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t327" class="pln"> <span class="com"># Enabled</span><span class="strut">&nbsp;</span></p>
<p id="t328" class="stm run hide_run"> <span class="nam">metrics</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">xml</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Enabled'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t329" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t330" class="pln"> <span class="com"># IncludeAPIs</span><span class="strut">&nbsp;</span></p>
<p id="t331" class="stm run hide_run"> <span class="nam">include_apis_element</span> <span class="op">=</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'IncludeAPIs'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t332" class="stm run hide_run"> <span class="key">if</span> <span class="nam">include_apis_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t333" class="stm run hide_run"> <span class="nam">metrics</span><span class="op">.</span><span class="nam">include_apis</span> <span class="op">=</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">include_apis_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t334" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t335" class="pln"> <span class="com"># RetentionPolicy</span><span class="strut">&nbsp;</span></p>
<p id="t336" class="stm run hide_run"> <span class="nam">_convert_xml_to_retention_policy</span><span class="op">(</span><span class="nam">xml</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'RetentionPolicy'</span><span class="op">)</span><span class="op">,</span> <span class="nam">metrics</span><span class="op">.</span><span class="nam">retention_policy</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t337" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t338" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t339" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_retention_policy</span><span class="op">(</span><span class="nam">xml</span><span class="op">,</span> <span class="nam">retention_policy</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t340" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t341" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t342" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t343" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t344" class="pln"> <span class="com"># Enabled</span><span class="strut">&nbsp;</span></p>
<p id="t345" class="stm run hide_run"> <span class="nam">retention_policy</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">_bool</span><span class="op">(</span><span class="nam">xml</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Enabled'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t346" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t347" class="pln"> <span class="com"># Days</span><span class="strut">&nbsp;</span></p>
<p id="t348" class="stm run hide_run"> <span class="nam">days_element</span> <span class="op">=</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Days'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t349" class="stm run hide_run"> <span class="key">if</span> <span class="nam">days_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t350" class="stm run hide_run"> <span class="nam">retention_policy</span><span class="op">.</span><span class="nam">days</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">days_element</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,575 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_encryption.py: 93%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_encryption.py</b> :
<span class="pc_cov">93%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
81 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">77 run</span>
<span class="mis shortkey_m button_toggle_mis">4 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">2 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="stm run hide_run"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="stm run hide_run"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="stm run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="stm run hide_run"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="stm run hide_run"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="stm run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="stm run hide_run"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="pln"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="stm run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="stm par run hide_run"><a href="#n164">164</a></p>
<p id="n165" class="stm mis"><a href="#n165">165</a></p>
<p id="n166" class="stm mis"><a href="#n166">166</a></p>
<p id="n167" class="stm mis"><a href="#n167">167</a></p>
<p id="n168" class="stm run hide_run"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="stm run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="stm par run hide_run"><a href="#n177">177</a></p>
<p id="n178" class="stm run hide_run"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="stm mis"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="stm run hide_run"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="stm run hide_run"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="pln"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="stm run hide_run"><a href="#n200">200</a></p>
<p id="n201" class="stm run hide_run"><a href="#n201">201</a></p>
<p id="n202" class="stm run hide_run"><a href="#n202">202</a></p>
<p id="n203" class="stm run hide_run"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="stm run hide_run"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="stm run hide_run"><a href="#n222">222</a></p>
<p id="n223" class="stm run hide_run"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="stm run hide_run"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="stm run hide_run"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="stm run hide_run"><a href="#n230">230</a></p>
<p id="n231" class="stm run hide_run"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="stm run hide_run"><a href="#n233">233</a></p>
<p id="n234" class="stm run hide_run"><a href="#n234">234</a></p>
<p id="n235" class="stm run hide_run"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="stm run hide_run"><a href="#n238">238</a></p>
<p id="n239" class="pln"><a href="#n239">239</a></p>
<p id="n240" class="stm run hide_run"><a href="#n240">240</a></p>
<p id="n241" class="pln"><a href="#n241">241</a></p>
<p id="n242" class="stm run hide_run"><a href="#n242">242</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">collections</span> <span class="key">import</span> <span class="nam">OrderedDict</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">cryptography</span><span class="op">.</span><span class="nam">hazmat</span><span class="op">.</span><span class="nam">backends</span> <span class="key">import</span> <span class="nam">default_backend</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">from</span> <span class="nam">cryptography</span><span class="op">.</span><span class="nam">hazmat</span><span class="op">.</span><span class="nam">primitives</span><span class="op">.</span><span class="nam">ciphers</span> <span class="key">import</span> <span class="nam">Cipher</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"><span class="key">from</span> <span class="nam">cryptography</span><span class="op">.</span><span class="nam">hazmat</span><span class="op">.</span><span class="nam">primitives</span><span class="op">.</span><span class="nam">ciphers</span><span class="op">.</span><span class="nam">algorithms</span> <span class="key">import</span> <span class="nam">AES</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">from</span> <span class="nam">cryptography</span><span class="op">.</span><span class="nam">hazmat</span><span class="op">.</span><span class="nam">primitives</span><span class="op">.</span><span class="nam">ciphers</span><span class="op">.</span><span class="nam">modes</span> <span class="key">import</span> <span class="nam">CBC</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">_encode_base64</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">_decode_base64_to_bytes</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_constants</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">_ENCRYPTION_PROTOCOL_V1</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">__version__</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_VERSION</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">_validate_not_none</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">_validate_encryption_protocol_version</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">_validate_key_encryption_key_unwrap</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">_validate_kek_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"><span class="key">class</span> <span class="nam">_EncryptionAlgorithm</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="str"> Specifies which client encryption algorithm is used.</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="nam">AES_CBC_256</span> <span class="op">=</span> <span class="str">'AES_CBC_256'</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm run hide_run"><span class="key">class</span> <span class="nam">_WrappedContentKey</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> Represents the envelope key details stored on the service.</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">algorithm</span><span class="op">,</span> <span class="nam">encrypted_key</span><span class="op">,</span> <span class="nam">key_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="str"> :param str algorithm:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str"> The algorithm used for wrapping.</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="str"> :param bytes encrypted_key:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="str"> The encrypted content-encryption-key.</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="str"> :param str key_id:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="str"> The key-encryption-key identifier string.</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'algorithm'</span><span class="op">,</span> <span class="nam">algorithm</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'encrypted_key'</span><span class="op">,</span> <span class="nam">encrypted_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'key_id'</span><span class="op">,</span> <span class="nam">key_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">algorithm</span> <span class="op">=</span> <span class="nam">algorithm</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">encrypted_key</span> <span class="op">=</span> <span class="nam">encrypted_key</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">key_id</span> <span class="op">=</span> <span class="nam">key_id</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"><span class="key">class</span> <span class="nam">_EncryptionAgent</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="str"> Represents the encryption agent stored on the service.</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="str"> It consists of the encryption protocol version and encryption algorithm used.</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">encryption_algorithm</span><span class="op">,</span> <span class="nam">protocol</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="str"> :param _EncryptionAlgorithm encryption_algorithm:</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="str"> The algorithm used for encrypting the message contents.</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="str"> :param str protocol:</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="str"> The protocol version used for encryption.</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'encryption_algorithm'</span><span class="op">,</span> <span class="nam">encryption_algorithm</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'protocol'</span><span class="op">,</span> <span class="nam">protocol</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">encryption_algorithm</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">encryption_algorithm</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span> <span class="op">=</span> <span class="nam">protocol</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"><span class="key">class</span> <span class="nam">_EncryptionData</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="str"> Represents the encryption data that is stored on the service.</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">content_encryption_IV</span><span class="op">,</span> <span class="nam">encryption_agent</span><span class="op">,</span> <span class="nam">wrapped_content_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"> <span class="nam">key_wrapping_metadata</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="str"> :param bytes content_encryption_IV:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="str"> The content encryption initialization vector.</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="str"> :param _EncryptionAgent encryption_agent:</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="str"> The encryption agent.</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> :param _WrappedContentKey wrapped_content_key:</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="str"> An object that stores the wrapping algorithm, the key identifier, </span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="str"> and the encrypted key bytes.</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="str"> :param dict key_wrapping_metadata:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"><span class="str"> A dict containing metadata related to the key wrapping.</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'content_encryption_IV'</span><span class="op">,</span> <span class="nam">content_encryption_IV</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'encryption_agent'</span><span class="op">,</span> <span class="nam">encryption_agent</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'wrapped_content_key'</span><span class="op">,</span> <span class="nam">wrapped_content_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_encryption_IV</span> <span class="op">=</span> <span class="nam">content_encryption_IV</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">encryption_agent</span> <span class="op">=</span> <span class="nam">encryption_agent</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">wrapped_content_key</span> <span class="op">=</span> <span class="nam">wrapped_content_key</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">key_wrapping_metadata</span> <span class="op">=</span> <span class="nam">key_wrapping_metadata</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"><span class="key">def</span> <span class="nam">_generate_encryption_data_dict</span><span class="op">(</span><span class="nam">kek</span><span class="op">,</span> <span class="nam">cek</span><span class="op">,</span> <span class="nam">iv</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="str"> Generates and returns the encryption metadata as a dict.</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="str"> :param object kek: The key encryption key. See calling functions for more information.</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="str"> :param bytes cek: The conetent encryption key.</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"><span class="str"> :param bytes iv: The initialization vector.</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="str"> :return: A dict containing all the encryption metadata.</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"><span class="str"> :rtype: dict</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"> <span class="com"># Encrypt the cek.</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="nam">wrapped_cek</span> <span class="op">=</span> <span class="nam">kek</span><span class="op">.</span><span class="nam">wrap_key</span><span class="op">(</span><span class="nam">cek</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"> <span class="com"># Build the encryption_data dict.</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="com"># Use OrderedDict to comply with Java's ordering requirement.</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="nam">wrapped_content_key</span> <span class="op">=</span> <span class="nam">OrderedDict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"> <span class="nam">wrapped_content_key</span><span class="op">[</span><span class="str">'KeyId'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">kek</span><span class="op">.</span><span class="nam">get_kid</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm run hide_run"> <span class="nam">wrapped_content_key</span><span class="op">[</span><span class="str">'EncryptedKey'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">_encode_base64</span><span class="op">(</span><span class="nam">wrapped_cek</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm run hide_run"> <span class="nam">wrapped_content_key</span><span class="op">[</span><span class="str">'Algorithm'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">kek</span><span class="op">.</span><span class="nam">get_key_wrap_algorithm</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="nam">encryption_agent</span> <span class="op">=</span> <span class="nam">OrderedDict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="nam">encryption_agent</span><span class="op">[</span><span class="str">'Protocol'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">_ENCRYPTION_PROTOCOL_V1</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="nam">encryption_agent</span><span class="op">[</span><span class="str">'EncryptionAlgorithm'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">_EncryptionAlgorithm</span><span class="op">.</span><span class="nam">AES_CBC_256</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t144" class="stm run hide_run"> <span class="nam">encryption_data_dict</span> <span class="op">=</span> <span class="nam">OrderedDict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'WrappedContentKey'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">wrapped_content_key</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm run hide_run"> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'EncryptionAgent'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">encryption_agent</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="stm run hide_run"> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'ContentEncryptionIV'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">_encode_base64</span><span class="op">(</span><span class="nam">iv</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run"> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'KeyWrappingMetadata'</span><span class="op">]</span> <span class="op">=</span> <span class="op">{</span><span class="str">'EncryptionLibrary'</span><span class="op">:</span> <span class="str">'Python '</span> <span class="op">+</span> <span class="nam">__version__</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="key">return</span> <span class="nam">encryption_data_dict</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"><span class="key">def</span> <span class="nam">_dict_to_encryption_data</span><span class="op">(</span><span class="nam">encryption_data_dict</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"><span class="str"> Converts the specified dictionary to an EncryptionData object for</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"><span class="str"> eventual use in decryption.</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t158" class="pln"><span class="str"> :param dict encryption_data_dict:</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="str"> The dictionary containing the encryption data.</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="str"> :return: an _EncryptionData object built from the dictionary.</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"><span class="str"> :rtype: _EncryptionData</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="stm par run hide_run"><span class="annotate short">164&#x202F;&#x219B;&#x202F;165</span><span class="annotate long">line 164 didn't jump to line 165, because the condition on line 164 was never true</span> <span class="key">if</span> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'EncryptionAgent'</span><span class="op">]</span><span class="op">[</span><span class="str">'Protocol'</span><span class="op">]</span> <span class="op">!=</span> <span class="nam">_ENCRYPTION_PROTOCOL_V1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_VERSION</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm mis"> <span class="key">except</span> <span class="nam">KeyError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_VERSION</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="stm run hide_run"> <span class="nam">wrapped_content_key</span> <span class="op">=</span> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'WrappedContentKey'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="nam">wrapped_content_key</span> <span class="op">=</span> <span class="nam">_WrappedContentKey</span><span class="op">(</span><span class="nam">wrapped_content_key</span><span class="op">[</span><span class="str">'Algorithm'</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"> <span class="nam">_decode_base64_to_bytes</span><span class="op">(</span><span class="nam">wrapped_content_key</span><span class="op">[</span><span class="str">'EncryptedKey'</span><span class="op">]</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"> <span class="nam">wrapped_content_key</span><span class="op">[</span><span class="str">'KeyId'</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="nam">encryption_agent</span> <span class="op">=</span> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'EncryptionAgent'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm run hide_run"> <span class="nam">encryption_agent</span> <span class="op">=</span> <span class="nam">_EncryptionAgent</span><span class="op">(</span><span class="nam">encryption_agent</span><span class="op">[</span><span class="str">'EncryptionAlgorithm'</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"> <span class="nam">encryption_agent</span><span class="op">[</span><span class="str">'Protocol'</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t177" class="stm par run hide_run"><span class="annotate short">177&#x202F;&#x219B;&#x202F;180</span><span class="annotate long">line 177 didn't jump to line 180, because the condition on line 177 was never false</span> <span class="key">if</span> <span class="str">'KeyWrappingMetadata'</span> <span class="key">in</span> <span class="nam">encryption_data_dict</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="stm run hide_run"> <span class="nam">key_wrapping_metadata</span> <span class="op">=</span> <span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'KeyWrappingMetadata'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm mis"> <span class="nam">key_wrapping_metadata</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm run hide_run"> <span class="nam">encryption_data</span> <span class="op">=</span> <span class="nam">_EncryptionData</span><span class="op">(</span><span class="nam">_decode_base64_to_bytes</span><span class="op">(</span><span class="nam">encryption_data_dict</span><span class="op">[</span><span class="str">'ContentEncryptionIV'</span><span class="op">]</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"> <span class="nam">encryption_agent</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"> <span class="nam">wrapped_content_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"> <span class="nam">key_wrapping_metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t187" class="stm run hide_run"> <span class="key">return</span> <span class="nam">encryption_data</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"><span class="key">def</span> <span class="nam">_generate_AES_CBC_cipher</span><span class="op">(</span><span class="nam">cek</span><span class="op">,</span> <span class="nam">iv</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="str"> Generates and returns an encryption cipher for AES CBC using the given cek and iv.</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"><span class="str"> :param bytes[] cek: The content encryption key for the cipher.</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="str"> :param bytes[] iv: The initialization vector for the cipher.</span><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="str"> :return: A cipher for encrypting in AES256 CBC.</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="str"> :rtype: ~cryptography.hazmat.primitives.ciphers.Cipher</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t200" class="stm run hide_run"> <span class="nam">backend</span> <span class="op">=</span> <span class="nam">default_backend</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="stm run hide_run"> <span class="nam">algorithm</span> <span class="op">=</span> <span class="nam">AES</span><span class="op">(</span><span class="nam">cek</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t202" class="stm run hide_run"> <span class="nam">mode</span> <span class="op">=</span> <span class="nam">CBC</span><span class="op">(</span><span class="nam">iv</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="stm run hide_run"> <span class="key">return</span> <span class="nam">Cipher</span><span class="op">(</span><span class="nam">algorithm</span><span class="op">,</span> <span class="nam">mode</span><span class="op">,</span> <span class="nam">backend</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t206" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_and_unwrap_cek</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">key_resolver</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="str"> Extracts and returns the content_encryption_key stored in the encryption_data object</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="str"> and performs necessary validation on all parameters.</span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="str"> :param _EncryptionData encryption_data:</span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"><span class="str"> The encryption metadata of the retrieved value.</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"><span class="str"> :param obj key_encryption_key:</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="str"> The key_encryption_key used to unwrap the cek. Please refer to high-level service object</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"><span class="str"> (i.e. TableService) instance variables for more details.</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"><span class="str"> :param func key_resolver:</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"><span class="str"> A function used that, given a key_id, will return a key_encryption_key. Please refer </span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="str"> to high service object (i.e. TableService) instance variables for more details.</span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="str"> :return: the content_encryption_key stored in the encryption_data object.</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="str"> :rtype: bytes[]</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t222" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'content_encryption_IV'</span><span class="op">,</span> <span class="nam">encryption_data</span><span class="op">.</span><span class="nam">content_encryption_IV</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'encrypted_key'</span><span class="op">,</span> <span class="nam">encryption_data</span><span class="op">.</span><span class="nam">wrapped_content_key</span><span class="op">.</span><span class="nam">encrypted_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t225" class="stm run hide_run"> <span class="nam">_validate_encryption_protocol_version</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">.</span><span class="nam">encryption_agent</span><span class="op">.</span><span class="nam">protocol</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t227" class="stm run hide_run"> <span class="nam">content_encryption_key</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"> <span class="com"># If the resolver exists, give priority to the key it finds.</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="stm run hide_run"> <span class="key">if</span> <span class="nam">key_resolver</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t231" class="stm run hide_run"> <span class="nam">key_encryption_key</span> <span class="op">=</span> <span class="nam">key_resolver</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">.</span><span class="nam">wrapped_content_key</span><span class="op">.</span><span class="nam">key_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t233" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'key_encryption_key'</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="stm run hide_run"> <span class="nam">_validate_key_encryption_key_unwrap</span><span class="op">(</span><span class="nam">key_encryption_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="stm run hide_run"> <span class="nam">_validate_kek_id</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">.</span><span class="nam">wrapped_content_key</span><span class="op">.</span><span class="nam">key_id</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">.</span><span class="nam">get_kid</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"> <span class="com"># Will throw an exception if the specified algorithm is not supported.</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="stm run hide_run"> <span class="nam">content_encryption_key</span> <span class="op">=</span> <span class="nam">key_encryption_key</span><span class="op">.</span><span class="nam">unwrap_key</span><span class="op">(</span><span class="nam">encryption_data</span><span class="op">.</span><span class="nam">wrapped_content_key</span><span class="op">.</span><span class="nam">encrypted_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="pln"> <span class="nam">encryption_data</span><span class="op">.</span><span class="nam">wrapped_content_key</span><span class="op">.</span><span class="nam">algorithm</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'content_encryption_key'</span><span class="op">,</span> <span class="nam">content_encryption_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t242" class="stm run hide_run"> <span class="key">return</span> <span class="nam">content_encryption_key</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,463 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_error.py: 87%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_error.py</b> :
<span class="pc_cov">87%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
95 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">86 run</span>
<span class="mis shortkey_m button_toggle_mis">9 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">4 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm par run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm mis"><a href="#n18">18</a></p>
<p id="n19" class="stm mis"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm mis"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm mis"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="stm run hide_run"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="stm run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="stm run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="stm par run hide_run"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="stm run hide_run"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="stm mis"><a href="#n127">127</a></p>
<p id="n128" class="stm mis"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="stm run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm run hide_run"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="stm par run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="stm mis"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="stm run hide_run"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="stm run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="stm run hide_run"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="stm run hide_run"><a href="#n151">151</a></p>
<p id="n152" class="stm run hide_run"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="stm run hide_run"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm run hide_run"><a href="#n159">159</a></p>
<p id="n160" class="stm run hide_run"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="stm run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="stm run hide_run"><a href="#n164">164</a></p>
<p id="n165" class="stm run hide_run"><a href="#n165">165</a></p>
<p id="n166" class="pln"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="stm run hide_run"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="stm run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="stm par run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="stm mis"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="stm run hide_run"><a href="#n179">179</a></p>
<p id="n180" class="stm run hide_run"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="stm run hide_run"><a href="#n184">184</a></p>
<p id="n185" class="stm run hide_run"><a href="#n185">185</a></p>
<p id="n186" class="stm run hide_run"><a href="#n186">186</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">sys</span> <span class="key">import</span> <span class="nam">version_info</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm par run hide_run"><span class="annotate short">17&#x202F;&#x219B;&#x202F;18</span><span class="annotate long">line 17 didn't jump to line 18, because the condition on line 17 was never true</span><span class="key">if</span> <span class="nam">version_info</span> <span class="op">&lt;</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm mis"> <span class="key">def</span> <span class="nam">_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm mis"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">value</span><span class="op">,</span> <span class="nam">unicode</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="key">return</span> <span class="nam">value</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm mis"> <span class="key">return</span> <span class="nam">str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"> <span class="nam">_str</span> <span class="op">=</span> <span class="nam">str</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"><span class="key">def</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm mis"> <span class="key">return</span> <span class="nam">_str</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span> <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">common</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">AzureHttpError</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">AzureConflictHttpError</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">AzureMissingResourceHttpError</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">AzureException</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_constants</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">_ENCRYPTION_PROTOCOL_V1</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"><span class="nam">_ERROR_CONFLICT</span> <span class="op">=</span> <span class="str">'Conflict ({0})'</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"><span class="nam">_ERROR_NOT_FOUND</span> <span class="op">=</span> <span class="str">'Not found ({0})'</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"><span class="nam">_ERROR_UNKNOWN</span> <span class="op">=</span> <span class="str">'Unknown error ({0})'</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"><span class="nam">_ERROR_STORAGE_MISSING_INFO</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="str">'You need to provide an account name and either an account_key or sas_token when creating a storage service.'</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm run hide_run"><span class="nam">_ERROR_EMULATOR_DOES_NOT_SUPPORT_FILES</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="str">'The emulator does not support the file service.'</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"><span class="nam">_ERROR_ACCESS_POLICY</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="str">'share_access_policy must be either SignedIdentifier or AccessPolicy '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"> <span class="str">'instance'</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"><span class="nam">_ERROR_PARALLEL_NOT_SEEKABLE</span> <span class="op">=</span> <span class="str">'Parallel operations require a seekable stream.'</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES</span> <span class="op">=</span> <span class="str">'{0} should be of type bytes.'</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM</span> <span class="op">=</span> <span class="str">'{0} should be of type bytes or a readable file-like/io.IOBase stream object.'</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"><span class="nam">_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM</span> <span class="op">=</span> <span class="str">'{0} should be a seekable file-like/io.IOBase type stream object.'</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"><span class="nam">_ERROR_VALUE_SHOULD_BE_STREAM</span> <span class="op">=</span> <span class="str">'{0} should be a file-like/io.IOBase type stream object with a read method.'</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"><span class="nam">_ERROR_VALUE_NONE</span> <span class="op">=</span> <span class="str">'{0} should not be None.'</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"><span class="nam">_ERROR_VALUE_NONE_OR_EMPTY</span> <span class="op">=</span> <span class="str">'{0} should not be None or empty.'</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"><span class="nam">_ERROR_VALUE_NEGATIVE</span> <span class="op">=</span> <span class="str">'{0} should not be negative.'</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"><span class="nam">_ERROR_NO_SINGLE_THREAD_CHUNKING</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"> <span class="str">'To use {0} chunk downloader more than 1 thread must be '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="str">'used since get_{0}_to_bytes should be called for single threaded '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"> <span class="str">'{0} downloads.'</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"><span class="nam">_ERROR_START_END_NEEDED_FOR_MD5</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"> <span class="str">'Both end_range and start_range need to be specified '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="str">'for getting content MD5.'</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"><span class="nam">_ERROR_RANGE_TOO_LARGE_FOR_MD5</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="str">'Getting content MD5 for a range greater than 4MB '</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="str">'is not supported.'</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"><span class="nam">_ERROR_MD5_MISMATCH</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"> <span class="str">'MD5 mismatch. Expected value is \'{0}\', computed value is \'{1}\'.'</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"><span class="nam">_ERROR_TOO_MANY_ACCESS_POLICIES</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"> <span class="str">'Too many access policies provided. The server does not support setting more than 5 access policies on a single resource.'</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"><span class="nam">_ERROR_OBJECT_INVALID</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="str">'{0} does not define a complete interface. Value of {1} is either missing or invalid.'</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"><span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_VERSION</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"> <span class="str">'Encryption version is not supported.'</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"><span class="nam">_ERROR_DECRYPTION_FAILURE</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"> <span class="str">'Decryption failed'</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"><span class="nam">_ERROR_ENCRYPTION_REQUIRED</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"> <span class="str">'Encryption required but no key was provided.'</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"><span class="nam">_ERROR_DECRYPTION_REQUIRED</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="str">'Decryption required but neither key nor resolver was provided.'</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"> <span class="str">' If you do not want to decypt, please do not set the require encryption flag.'</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"><span class="nam">_ERROR_INVALID_KID</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"> <span class="str">'Provided or resolved key-encryption-key does not match the id of key used to encrypt.'</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"><span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"> <span class="str">'Specified encryption algorithm is not supported.'</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm run hide_run"><span class="nam">_ERROR_UNSUPPORTED_METHOD_FOR_ENCRYPTION</span> <span class="op">=</span> <span class="str">'The require_encryption flag is set, but encryption is not supported'</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"> <span class="str">' for this method.'</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"><span class="nam">_ERROR_UNKNOWN_KEY_WRAP_ALGORITHM</span> <span class="op">=</span> <span class="str">'Unknown key wrap algorithm.'</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"><span class="nam">_ERROR_DATA_NOT_ENCRYPTED</span> <span class="op">=</span> <span class="str">'Encryption required, but received data does not contain appropriate metatadata.'</span> <span class="op">+</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="str">'Data was either not encrypted or metadata has been lost.'</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"><span class="key">def</span> <span class="nam">_dont_fail_on_exist</span><span class="op">(</span><span class="nam">error</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"> <span class="str">''' don't throw exception if the resource exists.</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="str"> This is called by create_* APIs with fail_on_exist=False'''</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">error</span><span class="op">,</span> <span class="nam">AzureConflictHttpError</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="key">return</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">error</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm run hide_run"><span class="key">def</span> <span class="nam">_dont_fail_not_exist</span><span class="op">(</span><span class="nam">error</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"> <span class="str">''' don't throw exception if the resource doesn't exist.</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="str"> This is called by create_* APIs with fail_on_exist=False'''</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">error</span><span class="op">,</span> <span class="nam">AzureMissingResourceHttpError</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="key">return</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">error</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"><span class="key">def</span> <span class="nam">_http_error_handler</span><span class="op">(</span><span class="nam">http_error</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"> <span class="str">''' Simple error handler for azure.'''</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">message</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">http_error</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm par run hide_run"><span class="annotate short">116&#x202F;&#x219B;&#x202F;118</span><span class="annotate long">line 116 didn't jump to line 118, because the condition on line 116 was never false</span> <span class="key">if</span> <span class="nam">http_error</span><span class="op">.</span><span class="nam">respbody</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="nam">message</span> <span class="op">+=</span> <span class="str">'\n'</span> <span class="op">+</span> <span class="nam">http_error</span><span class="op">.</span><span class="nam">respbody</span><span class="op">.</span><span class="nam">decode</span><span class="op">(</span><span class="str">'utf-8-sig'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AzureHttpError</span><span class="op">(</span><span class="nam">message</span><span class="op">,</span> <span class="nam">http_error</span><span class="op">.</span><span class="nam">status</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_type_bytes</span><span class="op">(</span><span class="nam">param_name</span><span class="op">,</span> <span class="nam">param</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">param</span><span class="op">,</span> <span class="nam">bytes</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">param_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_type_bytes_or_stream</span><span class="op">(</span><span class="nam">param_name</span><span class="op">,</span> <span class="nam">param</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm mis"> <span class="key">if</span> <span class="key">not</span> <span class="op">(</span><span class="nam">isinstance</span><span class="op">(</span><span class="nam">param</span><span class="op">,</span> <span class="nam">bytes</span><span class="op">)</span> <span class="key">or</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">param</span><span class="op">,</span> <span class="str">'read'</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm mis"> <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">param_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="nam">param_name</span><span class="op">,</span> <span class="nam">param</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm run hide_run"> <span class="key">if</span> <span class="nam">param</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_NONE</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">param_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_content_match</span><span class="op">(</span><span class="nam">server_md5</span><span class="op">,</span> <span class="nam">computed_md5</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm par run hide_run"><span class="annotate short">137&#x202F;&#x219B;&#x202F;138</span><span class="annotate long">line 137 didn't jump to line 138, because the condition on line 137 was never true</span> <span class="key">if</span> <span class="nam">server_md5</span> <span class="op">!=</span> <span class="nam">computed_md5</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm mis"> <span class="key">raise</span> <span class="nam">AzureException</span><span class="op">(</span><span class="nam">_ERROR_MD5_MISMATCH</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">server_md5</span><span class="op">,</span> <span class="nam">computed_md5</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_access_policies</span><span class="op">(</span><span class="nam">identifiers</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="key">if</span> <span class="nam">identifiers</span> <span class="key">and</span> <span class="nam">len</span><span class="op">(</span><span class="nam">identifiers</span><span class="op">)</span> <span class="op">></span> <span class="num">5</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AzureException</span><span class="op">(</span><span class="nam">_ERROR_TOO_MANY_ACCESS_POLICIES</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_key_encryption_key_wrap</span><span class="op">(</span><span class="nam">kek</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"> <span class="com"># Note that None is not callable and so will fail the second clause of each check.</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">kek</span><span class="op">,</span> <span class="str">'wrap_key'</span><span class="op">)</span> <span class="key">or</span> <span class="key">not</span> <span class="nam">callable</span><span class="op">(</span><span class="nam">kek</span><span class="op">.</span><span class="nam">wrap_key</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AttributeError</span><span class="op">(</span><span class="nam">_ERROR_OBJECT_INVALID</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'key encryption key'</span><span class="op">,</span> <span class="str">'wrap_key'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">kek</span><span class="op">,</span> <span class="str">'get_kid'</span><span class="op">)</span> <span class="key">or</span> <span class="key">not</span> <span class="nam">callable</span><span class="op">(</span><span class="nam">kek</span><span class="op">.</span><span class="nam">get_kid</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AttributeError</span><span class="op">(</span><span class="nam">_ERROR_OBJECT_INVALID</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'key encryption key'</span><span class="op">,</span> <span class="str">'get_kid'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">kek</span><span class="op">,</span> <span class="str">'get_key_wrap_algorithm'</span><span class="op">)</span> <span class="key">or</span> <span class="key">not</span> <span class="nam">callable</span><span class="op">(</span><span class="nam">kek</span><span class="op">.</span><span class="nam">get_key_wrap_algorithm</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AttributeError</span><span class="op">(</span><span class="nam">_ERROR_OBJECT_INVALID</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'key encryption key'</span><span class="op">,</span> <span class="str">'get_key_wrap_algorithm'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_key_encryption_key_unwrap</span><span class="op">(</span><span class="nam">kek</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">kek</span><span class="op">,</span> <span class="str">'get_kid'</span><span class="op">)</span> <span class="key">or</span> <span class="key">not</span> <span class="nam">callable</span><span class="op">(</span><span class="nam">kek</span><span class="op">.</span><span class="nam">get_kid</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AttributeError</span><span class="op">(</span><span class="nam">_ERROR_OBJECT_INVALID</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'key encryption key'</span><span class="op">,</span> <span class="str">'get_kid'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">kek</span><span class="op">,</span> <span class="str">'unwrap_key'</span><span class="op">)</span> <span class="key">or</span> <span class="key">not</span> <span class="nam">callable</span><span class="op">(</span><span class="nam">kek</span><span class="op">.</span><span class="nam">unwrap_key</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AttributeError</span><span class="op">(</span><span class="nam">_ERROR_OBJECT_INVALID</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'key encryption key'</span><span class="op">,</span> <span class="str">'unwrap_key'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_encryption_required</span><span class="op">(</span><span class="nam">require_encryption</span><span class="op">,</span> <span class="nam">kek</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="stm run hide_run"> <span class="key">if</span> <span class="nam">require_encryption</span> <span class="key">and</span> <span class="op">(</span><span class="nam">kek</span> <span class="key">is</span> <span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_ENCRYPTION_REQUIRED</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t168" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_decryption_required</span><span class="op">(</span><span class="nam">require_encryption</span><span class="op">,</span> <span class="nam">kek</span><span class="op">,</span> <span class="nam">resolver</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="key">if</span> <span class="op">(</span><span class="nam">require_encryption</span> <span class="key">and</span> <span class="op">(</span><span class="nam">kek</span> <span class="key">is</span> <span class="key">None</span><span class="op">)</span> <span class="key">and</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"> <span class="op">(</span><span class="nam">resolver</span> <span class="key">is</span> <span class="key">None</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_DECRYPTION_REQUIRED</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_encryption_protocol_version</span><span class="op">(</span><span class="nam">encryption_protocol</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm par run hide_run"><span class="annotate short">175&#x202F;&#x219B;&#x202F;176</span><span class="annotate long">line 175 didn't jump to line 176, because the condition on line 175 was never true</span> <span class="key">if</span> <span class="key">not</span> <span class="op">(</span><span class="nam">_ENCRYPTION_PROTOCOL_V1</span> <span class="op">==</span> <span class="nam">encryption_protocol</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_UNSUPPORTED_ENCRYPTION_VERSION</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_kek_id</span><span class="op">(</span><span class="nam">kid</span><span class="op">,</span> <span class="nam">resolved_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="op">(</span><span class="nam">kid</span> <span class="op">==</span> <span class="nam">resolved_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_INVALID_KID</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t184" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_encryption_unsupported</span><span class="op">(</span><span class="nam">require_encryption</span><span class="op">,</span> <span class="nam">key_encryption_key</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="stm run hide_run"> <span class="key">if</span> <span class="nam">require_encryption</span> <span class="key">or</span> <span class="op">(</span><span class="nam">key_encryption_key</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_UNSUPPORTED_METHOD_FOR_ENCRYPTION</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,255 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_http/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_http/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
20 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">20 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">class</span> <span class="nam">HTTPError</span><span class="op">(</span><span class="nam">Exception</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="str"> Represents an HTTP Exception when response status code >= 300.</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="str"> :ivar int status:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="str"> the status code of the response</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="str"> :ivar str message:</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="str"> the message</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="str"> :ivar list headers:</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="str"> the returned headers, as a list of (name, value) pairs</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="str"> :ivar bytes body:</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="str"> the body of the response</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">status</span><span class="op">,</span> <span class="nam">message</span><span class="op">,</span> <span class="nam">respheader</span><span class="op">,</span> <span class="nam">respbody</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="nam">status</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">respheader</span> <span class="op">=</span> <span class="nam">respheader</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">respbody</span> <span class="op">=</span> <span class="nam">respbody</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="nam">Exception</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"><span class="key">class</span> <span class="nam">HTTPResponse</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="str"> Represents a response from an HTTP request.</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="str"> :ivar int status:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> the status code of the response</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="str"> :ivar str message:</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="str"> the message</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> :ivar dict headers:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> the returned headers</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> :ivar bytes body:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> the body of the response</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">status</span><span class="op">,</span> <span class="nam">message</span><span class="op">,</span> <span class="nam">headers</span><span class="op">,</span> <span class="nam">body</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="nam">status</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">message</span> <span class="op">=</span> <span class="nam">message</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">headers</span> <span class="op">=</span> <span class="nam">headers</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">body</span> <span class="op">=</span> <span class="nam">body</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"><span class="key">class</span> <span class="nam">HTTPRequest</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="str"> Represents an HTTP Request.</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str"> :ivar str host:</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="str"> the host name to connect to</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str"> :ivar str method:</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="str"> the method to use to connect (string such as GET, POST, PUT, etc.)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="str"> :ivar str path:</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="str"> the uri fragment</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="str"> :ivar dict query:</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="str"> query parameters</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="str"> :ivar dict headers:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="str"> header values</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="str"> :ivar bytes body:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="str"> the body of the request.</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">host</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">method</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">path</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">query</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span> <span class="com"># list of (name, value)</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">headers</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span> <span class="com"># list of (header name, header value)</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">body</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,325 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_http/httpclient.py: 74%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_http/httpclient.py</b> :
<span class="pc_cov">74%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
34 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">27 run</span>
<span class="mis shortkey_m button_toggle_mis">7 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">3 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm par run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm mis"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="stm par run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm par run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="stm mis"><a href="#n73">73</a></p>
<p id="n74" class="stm mis"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm mis"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm mis"><a href="#n78">78</a></p>
<p id="n79" class="stm mis"><a href="#n79">79</a></p>
<p id="n80" class="stm mis"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="stm run hide_run"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">sys</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm par run hide_run"><span class="annotate short">17&#x202F;&#x219B;&#x202F;18</span><span class="annotate long">line 17 didn't jump to line 18, because the condition on line 17 was never true</span><span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">&lt;</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm mis"> <span class="key">from</span> <span class="nam">urllib2</span> <span class="key">import</span> <span class="nam">quote</span> <span class="key">as</span> <span class="nam">url_quote</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span> <span class="key">import</span> <span class="nam">HTTPError</span><span class="op">,</span> <span class="nam">HTTPResponse</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="op">.</span><span class="nam">_serialization</span> <span class="key">import</span> <span class="nam">_get_data_bytes_or_stream_only</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"><span class="key">class</span> <span class="nam">_HTTPClient</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="str"> Takes the request and sends it to cloud service and returns the response.</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">protocol</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">session</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">timeout</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="str"> :param str protocol:</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="str"> http or https.</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="str"> :param requests.Session request_session:</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str"> session object created with requests library (or compatible).</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="str"> :param int timeout:</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="str"> timeout for the http request, in seconds.</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span> <span class="op">=</span> <span class="nam">protocol</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">session</span> <span class="op">=</span> <span class="nam">session</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span> <span class="op">=</span> <span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="com"># By default, requests adds an Accept:*/* and Accept-Encoding to the session, </span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="com"># which causes issues with some Azure REST APIs. Removing these here gives us </span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="com"># the flexibility to add it back on a case by case basis.</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm par run hide_run"><span class="annotate short">47&#x202F;&#x219B;&#x202F;50</span><span class="annotate long">line 47 didn't jump to line 50, because the condition on line 47 was never false</span> <span class="key">if</span> <span class="str">'Accept'</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">del</span> <span class="nam">self</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'Accept'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm par run hide_run"><span class="annotate short">50&#x202F;&#x219B;&#x202F;53</span><span class="annotate long">line 50 didn't jump to line 53, because the condition on line 50 was never false</span> <span class="key">if</span> <span class="str">'Accept-Encoding'</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="key">del</span> <span class="nam">self</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'Accept-Encoding'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">proxies</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="key">def</span> <span class="nam">set_proxy</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">host</span><span class="op">,</span> <span class="nam">port</span><span class="op">,</span> <span class="nam">user</span><span class="op">,</span> <span class="nam">password</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="str"> Sets the proxy server host and port for the HTTP CONNECT Tunnelling.</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="str"> Note that we set the proxies directly on the request later on rather than</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="str"> using the session object as requests has a bug where session proxy is ignored</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="str"> in favor of environment proxy. So, auth will not work unless it is passed</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str"> directly when making the request as this overrides both.</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str"> :param str host:</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="str"> Address of the proxy. Ex: '192.168.0.100'</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="str"> :param int port:</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="str"> Port of the proxy. Ex: 6000</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="str"> :param str user:</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="str"> User for proxy authorization.</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="str"> :param str password:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="str"> Password for proxy authorization.</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm mis"> <span class="key">if</span> <span class="nam">user</span> <span class="key">and</span> <span class="nam">password</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm mis"> <span class="nam">proxy_string</span> <span class="op">=</span> <span class="str">'{}:{}@{}:{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">user</span><span class="op">,</span> <span class="nam">password</span><span class="op">,</span> <span class="nam">host</span><span class="op">,</span> <span class="nam">port</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm mis"> <span class="nam">proxy_string</span> <span class="op">=</span> <span class="str">'{}:{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">host</span><span class="op">,</span> <span class="nam">port</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">proxies</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">proxies</span><span class="op">[</span><span class="str">'http'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'http://{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">proxy_string</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">proxies</span><span class="op">[</span><span class="str">'https'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'https://{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">proxy_string</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="key">def</span> <span class="nam">perform_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="str"> Sends an HTTPRequest to Azure Storage and returns an HTTPResponse. If </span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="str"> the response code indicates an error, raise an HTTPError. </span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str"> :param HTTPRequest request:</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> The request to serialize and send.</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str"> :return: An HTTPResponse containing the parsed HTTP response.</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="str"> :rtype: :class:`~azure.storage._http.HTTPResponse`</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="com"># Verify the body is in bytes or either a file-like/stream object</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="key">if</span> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span> <span class="op">=</span> <span class="nam">_get_data_bytes_or_stream_only</span><span class="op">(</span><span class="str">'request.body'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"> <span class="com"># Construct the URI</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="nam">uri</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">protocol</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> <span class="str">'://'</span> <span class="op">+</span> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span> <span class="op">+</span> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"> <span class="com"># Send the request</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="nam">response</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">session</span><span class="op">.</span><span class="nam">request</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">method</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"> <span class="nam">uri</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"> <span class="nam">params</span><span class="op">=</span><span class="nam">request</span><span class="op">.</span><span class="nam">query</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"> <span class="nam">headers</span><span class="op">=</span><span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"> <span class="nam">data</span><span class="op">=</span><span class="nam">request</span><span class="op">.</span><span class="nam">body</span> <span class="key">or</span> <span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"> <span class="nam">timeout</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="nam">proxies</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">proxies</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"> <span class="com"># Parse the response</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm run hide_run"> <span class="nam">status</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">respheaders</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="key">for</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">name</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">respheaders</span><span class="op">[</span><span class="nam">key</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span><span class="op">]</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="nam">wrap</span> <span class="op">=</span> <span class="nam">HTTPResponse</span><span class="op">(</span><span class="nam">status</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">reason</span><span class="op">,</span> <span class="nam">respheaders</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">content</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">response</span><span class="op">.</span><span class="nam">close</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="key">return</span> <span class="nam">wrap</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,795 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/_serialization.py: 81%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/_serialization.py</b> :
<span class="pc_cov">81%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
165 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">134 run</span>
<span class="mis shortkey_m button_toggle_mis">31 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">11 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm par run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="stm mis"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm mis"><a href="#n32">32</a></p>
<p id="n33" class="stm mis"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="stm par run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm mis"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm par run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="stm par run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="stm mis"><a href="#n83">83</a></p>
<p id="n84" class="stm mis"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm par run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="stm mis"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="stm run hide_run"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="stm par run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm mis"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="stm run hide_run"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm run hide_run"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="stm par run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm mis"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="stm par run hide_run"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="stm mis"><a href="#n141">141</a></p>
<p id="n142" class="stm mis"><a href="#n142">142</a></p>
<p id="n143" class="stm mis"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="stm mis"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="stm run hide_run"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="stm run hide_run"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="stm run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="stm run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="stm run hide_run"><a href="#n164">164</a></p>
<p id="n165" class="stm run hide_run"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="stm run hide_run"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="stm run hide_run"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="stm run hide_run"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="stm run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="stm run hide_run"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="stm run hide_run"><a href="#n179">179</a></p>
<p id="n180" class="stm run hide_run"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="stm mis"><a href="#n182">182</a></p>
<p id="n183" class="stm mis"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="stm run hide_run"><a href="#n185">185</a></p>
<p id="n186" class="stm par run hide_run"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="stm run hide_run"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="pln"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="pln"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="pln"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="stm run hide_run"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="stm run hide_run"><a href="#n237">237</a></p>
<p id="n238" class="stm run hide_run"><a href="#n238">238</a></p>
<p id="n239" class="stm run hide_run"><a href="#n239">239</a></p>
<p id="n240" class="stm run hide_run"><a href="#n240">240</a></p>
<p id="n241" class="stm run hide_run"><a href="#n241">241</a></p>
<p id="n242" class="stm run hide_run"><a href="#n242">242</a></p>
<p id="n243" class="pln"><a href="#n243">243</a></p>
<p id="n244" class="stm run hide_run"><a href="#n244">244</a></p>
<p id="n245" class="stm run hide_run"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
<p id="n247" class="pln"><a href="#n247">247</a></p>
<p id="n248" class="stm run hide_run"><a href="#n248">248</a></p>
<p id="n249" class="stm run hide_run"><a href="#n249">249</a></p>
<p id="n250" class="stm run hide_run"><a href="#n250">250</a></p>
<p id="n251" class="pln"><a href="#n251">251</a></p>
<p id="n252" class="pln"><a href="#n252">252</a></p>
<p id="n253" class="stm run hide_run"><a href="#n253">253</a></p>
<p id="n254" class="stm run hide_run"><a href="#n254">254</a></p>
<p id="n255" class="stm run hide_run"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="pln"><a href="#n257">257</a></p>
<p id="n258" class="pln"><a href="#n258">258</a></p>
<p id="n259" class="stm run hide_run"><a href="#n259">259</a></p>
<p id="n260" class="stm run hide_run"><a href="#n260">260</a></p>
<p id="n261" class="stm run hide_run"><a href="#n261">261</a></p>
<p id="n262" class="stm run hide_run"><a href="#n262">262</a></p>
<p id="n263" class="stm run hide_run"><a href="#n263">263</a></p>
<p id="n264" class="stm run hide_run"><a href="#n264">264</a></p>
<p id="n265" class="stm run hide_run"><a href="#n265">265</a></p>
<p id="n266" class="stm run hide_run"><a href="#n266">266</a></p>
<p id="n267" class="stm run hide_run"><a href="#n267">267</a></p>
<p id="n268" class="pln"><a href="#n268">268</a></p>
<p id="n269" class="pln"><a href="#n269">269</a></p>
<p id="n270" class="stm run hide_run"><a href="#n270">270</a></p>
<p id="n271" class="stm run hide_run"><a href="#n271">271</a></p>
<p id="n272" class="pln"><a href="#n272">272</a></p>
<p id="n273" class="pln"><a href="#n273">273</a></p>
<p id="n274" class="stm run hide_run"><a href="#n274">274</a></p>
<p id="n275" class="stm run hide_run"><a href="#n275">275</a></p>
<p id="n276" class="stm run hide_run"><a href="#n276">276</a></p>
<p id="n277" class="pln"><a href="#n277">277</a></p>
<p id="n278" class="stm mis"><a href="#n278">278</a></p>
<p id="n279" class="stm mis"><a href="#n279">279</a></p>
<p id="n280" class="pln"><a href="#n280">280</a></p>
<p id="n281" class="stm run hide_run"><a href="#n281">281</a></p>
<p id="n282" class="stm par run hide_run"><a href="#n282">282</a></p>
<p id="n283" class="pln"><a href="#n283">283</a></p>
<p id="n284" class="stm run hide_run"><a href="#n284">284</a></p>
<p id="n285" class="pln"><a href="#n285">285</a></p>
<p id="n286" class="pln"><a href="#n286">286</a></p>
<p id="n287" class="stm run hide_run"><a href="#n287">287</a></p>
<p id="n288" class="pln"><a href="#n288">288</a></p>
<p id="n289" class="pln"><a href="#n289">289</a></p>
<p id="n290" class="pln"><a href="#n290">290</a></p>
<p id="n291" class="pln"><a href="#n291">291</a></p>
<p id="n292" class="pln"><a href="#n292">292</a></p>
<p id="n293" class="pln"><a href="#n293">293</a></p>
<p id="n294" class="pln"><a href="#n294">294</a></p>
<p id="n295" class="pln"><a href="#n295">295</a></p>
<p id="n296" class="pln"><a href="#n296">296</a></p>
<p id="n297" class="pln"><a href="#n297">297</a></p>
<p id="n298" class="stm run hide_run"><a href="#n298">298</a></p>
<p id="n299" class="pln"><a href="#n299">299</a></p>
<p id="n300" class="pln"><a href="#n300">300</a></p>
<p id="n301" class="stm run hide_run"><a href="#n301">301</a></p>
<p id="n302" class="pln"><a href="#n302">302</a></p>
<p id="n303" class="pln"><a href="#n303">303</a></p>
<p id="n304" class="stm run hide_run"><a href="#n304">304</a></p>
<p id="n305" class="stm run hide_run"><a href="#n305">305</a></p>
<p id="n306" class="pln"><a href="#n306">306</a></p>
<p id="n307" class="pln"><a href="#n307">307</a></p>
<p id="n308" class="stm run hide_run"><a href="#n308">308</a></p>
<p id="n309" class="stm run hide_run"><a href="#n309">309</a></p>
<p id="n310" class="pln"><a href="#n310">310</a></p>
<p id="n311" class="pln"><a href="#n311">311</a></p>
<p id="n312" class="stm run hide_run"><a href="#n312">312</a></p>
<p id="n313" class="pln"><a href="#n313">313</a></p>
<p id="n314" class="pln"><a href="#n314">314</a></p>
<p id="n315" class="pln"><a href="#n315">315</a></p>
<p id="n316" class="pln"><a href="#n316">316</a></p>
<p id="n317" class="pln"><a href="#n317">317</a></p>
<p id="n318" class="stm run hide_run"><a href="#n318">318</a></p>
<p id="n319" class="pln"><a href="#n319">319</a></p>
<p id="n320" class="pln"><a href="#n320">320</a></p>
<p id="n321" class="stm run hide_run"><a href="#n321">321</a></p>
<p id="n322" class="stm run hide_run"><a href="#n322">322</a></p>
<p id="n323" class="pln"><a href="#n323">323</a></p>
<p id="n324" class="pln"><a href="#n324">324</a></p>
<p id="n325" class="stm run hide_run"><a href="#n325">325</a></p>
<p id="n326" class="stm run hide_run"><a href="#n326">326</a></p>
<p id="n327" class="pln"><a href="#n327">327</a></p>
<p id="n328" class="stm run hide_run"><a href="#n328">328</a></p>
<p id="n329" class="stm run hide_run"><a href="#n329">329</a></p>
<p id="n330" class="stm mis"><a href="#n330">330</a></p>
<p id="n331" class="stm mis"><a href="#n331">331</a></p>
<p id="n332" class="pln"><a href="#n332">332</a></p>
<p id="n333" class="stm par run hide_run"><a href="#n333">333</a></p>
<p id="n334" class="pln"><a href="#n334">334</a></p>
<p id="n335" class="pln"><a href="#n335">335</a></p>
<p id="n336" class="stm mis"><a href="#n336">336</a></p>
<p id="n337" class="stm mis"><a href="#n337">337</a></p>
<p id="n338" class="stm mis"><a href="#n338">338</a></p>
<p id="n339" class="stm mis"><a href="#n339">339</a></p>
<p id="n340" class="pln"><a href="#n340">340</a></p>
<p id="n341" class="stm mis"><a href="#n341">341</a></p>
<p id="n342" class="pln"><a href="#n342">342</a></p>
<p id="n343" class="pln"><a href="#n343">343</a></p>
<p id="n344" class="stm mis"><a href="#n344">344</a></p>
<p id="n345" class="stm mis"><a href="#n345">345</a></p>
<p id="n346" class="stm mis"><a href="#n346">346</a></p>
<p id="n347" class="stm mis"><a href="#n347">347</a></p>
<p id="n348" class="stm mis"><a href="#n348">348</a></p>
<p id="n349" class="stm mis"><a href="#n349">349</a></p>
<p id="n350" class="stm mis"><a href="#n350">350</a></p>
<p id="n351" class="pln"><a href="#n351">351</a></p>
<p id="n352" class="stm run hide_run"><a href="#n352">352</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">sys</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">import</span> <span class="nam">uuid</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">datetime</span> <span class="key">import</span> <span class="nam">date</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">from</span> <span class="nam">io</span> <span class="key">import</span> <span class="op">(</span><span class="nam">BytesIO</span><span class="op">,</span> <span class="nam">IOBase</span><span class="op">,</span> <span class="nam">SEEK_SET</span><span class="op">,</span> <span class="nam">SEEK_END</span><span class="op">,</span> <span class="nam">UnsupportedOperation</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"><span class="key">from</span> <span class="nam">os</span> <span class="key">import</span> <span class="nam">fstat</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">from</span> <span class="nam">time</span> <span class="key">import</span> <span class="nam">time</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsgiref</span><span class="op">.</span><span class="nam">handlers</span> <span class="key">import</span> <span class="nam">format_date_time</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"><span class="key">from</span> <span class="nam">dateutil</span><span class="op">.</span><span class="nam">tz</span> <span class="key">import</span> <span class="nam">tzutc</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm par run hide_run"><span class="annotate short">25&#x202F;&#x219B;&#x202F;28</span><span class="annotate long">line 25 didn't jump to line 28, because the condition on line 25 was never false</span><span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">>=</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="key">from</span> <span class="nam">urllib</span><span class="op">.</span><span class="nam">parse</span> <span class="key">import</span> <span class="nam">quote</span> <span class="key">as</span> <span class="nam">url_quote</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm mis"> <span class="key">from</span> <span class="nam">urllib2</span> <span class="key">import</span> <span class="nam">quote</span> <span class="key">as</span> <span class="nam">url_quote</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">cElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm mis"><span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm mis"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">ElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_constants</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">X_MS_VERSION</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="nam">USER_AGENT_STRING</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="nam">_unicode_type</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"> <span class="nam">_str</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"><span class="key">def</span> <span class="nam">_to_utc_datetime</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"> <span class="com"># Azure expects the date value passed in to be UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"> <span class="com"># Azure will always return values as UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"> <span class="com"># If a date is passed in without timezone info, it is assumed to be UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="key">if</span> <span class="nam">value</span><span class="op">.</span><span class="nam">tzinfo</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">value</span> <span class="op">=</span> <span class="nam">value</span><span class="op">.</span><span class="nam">astimezone</span><span class="op">(</span><span class="nam">tzutc</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="key">return</span> <span class="nam">value</span><span class="op">.</span><span class="nam">strftime</span><span class="op">(</span><span class="str">'%Y-%m-%dT%H:%M:%SZ'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"><span class="key">def</span> <span class="nam">_update_request</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"> <span class="com"># Verify body</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="key">if</span> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span> <span class="op">=</span> <span class="nam">_get_data_bytes_or_stream_only</span><span class="op">(</span><span class="str">'request.body'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">length</span> <span class="op">=</span> <span class="nam">_len_plus</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="com"># only scenario where this case is plausible is if the stream object is not seekable.</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm par run hide_run"><span class="annotate short">68&#x202F;&#x219B;&#x202F;69</span><span class="annotate long">line 68 didn't jump to line 69, because the condition on line 68 was never true</span> <span class="key">if</span> <span class="nam">length</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="com"># if it is PUT, POST, MERGE, DELETE, need to add content-length to header.</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm par run hide_run"><span class="annotate short">72&#x202F;&#x219B;&#x202F;76</span><span class="annotate long">line 72 didn't jump to line 76, because the condition on line 72 was never false</span> <span class="key">if</span> <span class="nam">request</span><span class="op">.</span><span class="nam">method</span> <span class="key">in</span> <span class="op">[</span><span class="str">'PUT'</span><span class="op">,</span> <span class="str">'POST'</span><span class="op">,</span> <span class="str">'MERGE'</span><span class="op">,</span> <span class="str">'DELETE'</span><span class="op">]</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'Content-Length'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">length</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="com"># append addtional headers based on the service</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-version'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">X_MS_VERSION</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'User-Agent'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">USER_AGENT_STRING</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-client-request-id'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">uuid</span><span class="op">.</span><span class="nam">uuid1</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"> <span class="com"># If the host has a path component (ex local storage), move it</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="nam">path</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'/'</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm par run hide_run"><span class="annotate short">82&#x202F;&#x219B;&#x202F;83</span><span class="annotate long">line 82 didn't jump to line 83, because the condition on line 82 was never true</span> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">path</span><span class="op">)</span> <span class="op">==</span> <span class="num">2</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span> <span class="op">=</span> <span class="nam">path</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span> <span class="op">=</span> <span class="str">'/{}{}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">path</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="com"># Encode and optionally add local storage prefix to path</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span> <span class="op">=</span> <span class="nam">url_quote</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">,</span> <span class="str">'/()$=\',~'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"><span class="key">def</span> <span class="nam">_add_metadata_headers</span><span class="op">(</span><span class="nam">metadata</span><span class="op">,</span> <span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="key">if</span> <span class="nam">metadata</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run"> <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">metadata</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-meta-'</span> <span class="op">+</span> <span class="nam">name</span><span class="op">]</span> <span class="op">=</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"><span class="key">def</span> <span class="nam">_add_date_header</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="nam">current_time</span> <span class="op">=</span> <span class="nam">format_date_time</span><span class="op">(</span><span class="nam">time</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-date'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">current_time</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_data_bytes_only</span><span class="op">(</span><span class="nam">param_name</span><span class="op">,</span> <span class="nam">param_value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"> <span class="str">'''Validates the request body passed in and converts it to bytes</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="str"> if our policy allows it.'''</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm par run hide_run"><span class="annotate short">106&#x202F;&#x219B;&#x202F;107</span><span class="annotate long">line 106 didn't jump to line 107, because the condition on line 106 was never true</span> <span class="key">if</span> <span class="nam">param_value</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm mis"> <span class="key">return</span> <span class="str">b''</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">param_value</span><span class="op">,</span> <span class="nam">bytes</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="key">return</span> <span class="nam">param_value</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">param_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_data_bytes_or_stream_only</span><span class="op">(</span><span class="nam">param_name</span><span class="op">,</span> <span class="nam">param_value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"> <span class="str">'''Validates the request body passed in is a stream/file-like or bytes</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="str"> object.'''</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm par run hide_run"><span class="annotate short">118&#x202F;&#x219B;&#x202F;119</span><span class="annotate long">line 118 didn't jump to line 119, because the condition on line 118 was never true</span> <span class="key">if</span> <span class="nam">param_value</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm mis"> <span class="key">return</span> <span class="str">b''</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">param_value</span><span class="op">,</span> <span class="nam">bytes</span><span class="op">)</span> <span class="key">or</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">param_value</span><span class="op">,</span> <span class="str">'read'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm run hide_run"> <span class="key">return</span> <span class="nam">param_value</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">TypeError</span><span class="op">(</span><span class="nam">_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">param_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_request_body</span><span class="op">(</span><span class="nam">request_body</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="str">'''Converts an object into a request body. If it's None</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"><span class="str"> we'll return an empty string, if it's one of our objects it'll</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="str"> convert it to XML and return it. Otherwise we just use the object</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"><span class="str"> directly'''</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm par run hide_run"><span class="annotate short">132&#x202F;&#x219B;&#x202F;133</span><span class="annotate long">line 132 didn't jump to line 133, because the condition on line 132 was never true</span> <span class="key">if</span> <span class="nam">request_body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm mis"> <span class="key">return</span> <span class="str">b''</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">request_body</span><span class="op">,</span> <span class="nam">bytes</span><span class="op">)</span> <span class="key">or</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">request_body</span><span class="op">,</span> <span class="nam">IOBase</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"> <span class="key">return</span> <span class="nam">request_body</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm par run hide_run"><span class="annotate short">138&#x202F;&#x219B;&#x202F;141</span><span class="annotate long">line 138 didn't jump to line 141, because the condition on line 138 was never false</span> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">request_body</span><span class="op">,</span> <span class="nam">_unicode_type</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run"> <span class="key">return</span> <span class="nam">request_body</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm mis"> <span class="nam">request_body</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">request_body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm mis"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">request_body</span><span class="op">,</span> <span class="nam">_unicode_type</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm mis"> <span class="key">return</span> <span class="nam">request_body</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="str">'utf-8'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm mis"> <span class="key">return</span> <span class="nam">request_body</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_signed_identifiers_to_xml</span><span class="op">(</span><span class="nam">signed_identifiers</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="stm run hide_run"> <span class="key">if</span> <span class="nam">signed_identifiers</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="key">return</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t152" class="stm run hide_run"> <span class="nam">sis</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">Element</span><span class="op">(</span><span class="str">'SignedIdentifiers'</span><span class="op">)</span><span class="op">;</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="key">for</span> <span class="nam">id</span><span class="op">,</span> <span class="nam">access_policy</span> <span class="key">in</span> <span class="nam">signed_identifiers</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"> <span class="com"># Root signed identifers element</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm run hide_run"> <span class="nam">si</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">sis</span><span class="op">,</span> <span class="str">'SignedIdentifier'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"> <span class="com"># Id element</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">si</span><span class="op">,</span> <span class="str">'Id'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"> <span class="com"># Access policy element</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"> <span class="nam">policy</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">si</span><span class="op">,</span> <span class="str">'AccessPolicy'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm run hide_run"> <span class="key">if</span> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">start</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="stm run hide_run"> <span class="nam">start</span> <span class="op">=</span> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">start</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">access_policy</span><span class="op">.</span><span class="nam">start</span><span class="op">,</span> <span class="nam">date</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="nam">start</span> <span class="op">=</span> <span class="nam">_to_utc_datetime</span><span class="op">(</span><span class="nam">start</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">policy</span><span class="op">,</span> <span class="str">'Start'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">start</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="key">if</span> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">expiry</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="stm run hide_run"> <span class="nam">expiry</span> <span class="op">=</span> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">expiry</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">access_policy</span><span class="op">.</span><span class="nam">expiry</span><span class="op">,</span> <span class="nam">date</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="stm run hide_run"> <span class="nam">expiry</span> <span class="op">=</span> <span class="nam">_to_utc_datetime</span><span class="op">(</span><span class="nam">expiry</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">policy</span><span class="op">,</span> <span class="str">'Expiry'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">expiry</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm run hide_run"> <span class="key">if</span> <span class="nam">access_policy</span><span class="op">.</span><span class="nam">permission</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">policy</span><span class="op">,</span> <span class="str">'Permission'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">_str</span><span class="op">(</span><span class="nam">access_policy</span><span class="op">.</span><span class="nam">permission</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"> <span class="com"># Add xml declaration and serialize</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm run hide_run"> <span class="nam">stream</span> <span class="op">=</span> <span class="nam">BytesIO</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">ElementTree</span><span class="op">(</span><span class="nam">sis</span><span class="op">)</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">stream</span><span class="op">,</span> <span class="nam">xml_declaration</span><span class="op">=</span><span class="key">True</span><span class="op">,</span> <span class="nam">encoding</span><span class="op">=</span><span class="str">'utf-8'</span><span class="op">,</span> <span class="nam">method</span><span class="op">=</span><span class="str">'xml'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm mis"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="stm mis"> <span class="key">raise</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"> <span class="key">finally</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="stm run hide_run"> <span class="nam">output</span> <span class="op">=</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">getvalue</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm par run hide_run"><span class="annotate short">186&#x202F;&#x219B;&#x202F;exit</span><span class="annotate long">line 186 didn't except from function '_convert_signed_identifiers_to_xml', because the raise on line 183 wasn't executed</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">close</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t188" class="stm run hide_run"> <span class="key">return</span> <span class="nam">output</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t190" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_service_properties_to_xml</span><span class="op">(</span><span class="nam">logging</span><span class="op">,</span> <span class="nam">hour_metrics</span><span class="op">,</span> <span class="nam">minute_metrics</span><span class="op">,</span> <span class="nam">cors</span><span class="op">,</span> <span class="nam">target_version</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"><span class="str"> &lt;StorageServiceProperties></span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="str"> &lt;Logging></span><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="str"> &lt;Delete>true|false&lt;/Delete></span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="str"> &lt;Read>true|false&lt;/Read></span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"><span class="str"> &lt;Write>true|false&lt;/Write></span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t203" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"><span class="str"> &lt;/Logging></span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="str"> &lt;HourMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="str"> &lt;IncludeAPIs>true|false&lt;/IncludeAPIs></span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="str"> &lt;/HourMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"><span class="str"> &lt;MinuteMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="str"> &lt;IncludeAPIs>true|false&lt;/IncludeAPIs></span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"><span class="str"> &lt;/MinuteMetrics></span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"><span class="str"> &lt;Cors></span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="str"> &lt;CorsRule></span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="str"> &lt;AllowedOrigins>comma-separated-list-of-allowed-origins&lt;/AllowedOrigins></span><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"><span class="str"> &lt;AllowedMethods>comma-separated-list-of-HTTP-verb&lt;/AllowedMethods></span><span class="strut">&nbsp;</span></p>
<p id="t227" class="pln"><span class="str"> &lt;MaxAgeInSeconds>max-caching-age-in-seconds&lt;/MaxAgeInSeconds></span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"><span class="str"> &lt;ExposedHeaders>comma-seperated-list-of-response-headers&lt;/ExposedHeaders></span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"><span class="str"> &lt;AllowedHeaders>comma-seperated-list-of-request-headers&lt;/AllowedHeaders></span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"><span class="str"> &lt;/CorsRule></span><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"><span class="str"> &lt;/Cors></span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"><span class="str"> &lt;/StorageServiceProperties></span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="stm run hide_run"> <span class="nam">service_properties_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">Element</span><span class="op">(</span><span class="str">'StorageServiceProperties'</span><span class="op">)</span><span class="op">;</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"> <span class="com"># Logging</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="stm run hide_run"> <span class="key">if</span> <span class="nam">logging</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="stm run hide_run"> <span class="nam">logging_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">service_properties_element</span><span class="op">,</span> <span class="str">'Logging'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">logging_element</span><span class="op">,</span> <span class="str">'Version'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">version</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">logging_element</span><span class="op">,</span> <span class="str">'Delete'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">delete</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">logging_element</span><span class="op">,</span> <span class="str">'Read'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">read</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">logging_element</span><span class="op">,</span> <span class="str">'Write'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">write</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t244" class="stm run hide_run"> <span class="nam">retention_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">logging_element</span><span class="op">,</span> <span class="str">'RetentionPolicy'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="stm run hide_run"> <span class="nam">_convert_retention_policy_to_xml</span><span class="op">(</span><span class="nam">logging</span><span class="op">.</span><span class="nam">retention_policy</span><span class="op">,</span> <span class="nam">retention_element</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t247" class="pln"> <span class="com"># HourMetrics</span><span class="strut">&nbsp;</span></p>
<p id="t248" class="stm run hide_run"> <span class="key">if</span> <span class="nam">hour_metrics</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t249" class="stm run hide_run"> <span class="nam">hour_metrics_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">service_properties_element</span><span class="op">,</span> <span class="str">'HourMetrics'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t250" class="stm run hide_run"> <span class="nam">_convert_metrics_to_xml</span><span class="op">(</span><span class="nam">hour_metrics</span><span class="op">,</span> <span class="nam">hour_metrics_element</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t251" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t252" class="pln"> <span class="com"># MinuteMetrics</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="stm run hide_run"> <span class="key">if</span> <span class="nam">minute_metrics</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t254" class="stm run hide_run"> <span class="nam">minute_metrics_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">service_properties_element</span><span class="op">,</span> <span class="str">'MinuteMetrics'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t255" class="stm run hide_run"> <span class="nam">_convert_metrics_to_xml</span><span class="op">(</span><span class="nam">minute_metrics</span><span class="op">,</span> <span class="nam">minute_metrics_element</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t257" class="pln"> <span class="com"># CORS</span><span class="strut">&nbsp;</span></p>
<p id="t258" class="pln"> <span class="com"># Make sure to still serialize empty list</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="stm run hide_run"> <span class="key">if</span> <span class="nam">cors</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t260" class="stm run hide_run"> <span class="nam">cors_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">service_properties_element</span><span class="op">,</span> <span class="str">'Cors'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t261" class="stm run hide_run"> <span class="key">for</span> <span class="nam">rule</span> <span class="key">in</span> <span class="nam">cors</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t262" class="stm run hide_run"> <span class="nam">cors_rule</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">cors_element</span><span class="op">,</span> <span class="str">'CorsRule'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t263" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">cors_rule</span><span class="op">,</span> <span class="str">'AllowedOrigins'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="str">","</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">rule</span><span class="op">.</span><span class="nam">allowed_origins</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">cors_rule</span><span class="op">,</span> <span class="str">'AllowedMethods'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="str">","</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">rule</span><span class="op">.</span><span class="nam">allowed_methods</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">cors_rule</span><span class="op">,</span> <span class="str">'MaxAgeInSeconds'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">rule</span><span class="op">.</span><span class="nam">max_age_in_seconds</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">cors_rule</span><span class="op">,</span> <span class="str">'ExposedHeaders'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="str">","</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">rule</span><span class="op">.</span><span class="nam">exposed_headers</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t267" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">cors_rule</span><span class="op">,</span> <span class="str">'AllowedHeaders'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="str">","</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">rule</span><span class="op">.</span><span class="nam">allowed_headers</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t268" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t269" class="pln"> <span class="com"># Target version</span><span class="strut">&nbsp;</span></p>
<p id="t270" class="stm run hide_run"> <span class="key">if</span> <span class="nam">target_version</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t271" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">service_properties_element</span><span class="op">,</span> <span class="str">'DefaultServiceVersion'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">target_version</span><span class="strut">&nbsp;</span></p>
<p id="t272" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t273" class="pln"> <span class="com"># Add xml declaration and serialize</span><span class="strut">&nbsp;</span></p>
<p id="t274" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t275" class="stm run hide_run"> <span class="nam">stream</span> <span class="op">=</span> <span class="nam">BytesIO</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t276" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">ElementTree</span><span class="op">(</span><span class="nam">service_properties_element</span><span class="op">)</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">stream</span><span class="op">,</span> <span class="nam">xml_declaration</span><span class="op">=</span><span class="key">True</span><span class="op">,</span> <span class="nam">encoding</span><span class="op">=</span><span class="str">'utf-8'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t277" class="pln"> <span class="nam">method</span><span class="op">=</span><span class="str">'xml'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t278" class="stm mis"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t279" class="stm mis"> <span class="key">raise</span><span class="strut">&nbsp;</span></p>
<p id="t280" class="pln"> <span class="key">finally</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t281" class="stm run hide_run"> <span class="nam">output</span> <span class="op">=</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">getvalue</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t282" class="stm par run hide_run"><span class="annotate short">282&#x202F;&#x219B;&#x202F;exit</span><span class="annotate long">line 282 didn't except from function '_convert_service_properties_to_xml', because the raise on line 279 wasn't executed</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">close</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t283" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t284" class="stm run hide_run"> <span class="key">return</span> <span class="nam">output</span><span class="strut">&nbsp;</span></p>
<p id="t285" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t286" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t287" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_metrics_to_xml</span><span class="op">(</span><span class="nam">metrics</span><span class="op">,</span> <span class="nam">root</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t288" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t289" class="pln"><span class="str"> &lt;Version>version-number&lt;/Version></span><span class="strut">&nbsp;</span></p>
<p id="t290" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t291" class="pln"><span class="str"> &lt;IncludeAPIs>true|false&lt;/IncludeAPIs></span><span class="strut">&nbsp;</span></p>
<p id="t292" class="pln"><span class="str"> &lt;RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t293" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t294" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t295" class="pln"><span class="str"> &lt;/RetentionPolicy></span><span class="strut">&nbsp;</span></p>
<p id="t296" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t297" class="pln"> <span class="com"># Version</span><span class="strut">&nbsp;</span></p>
<p id="t298" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">root</span><span class="op">,</span> <span class="str">'Version'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">metrics</span><span class="op">.</span><span class="nam">version</span><span class="strut">&nbsp;</span></p>
<p id="t299" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t300" class="pln"> <span class="com"># Enabled</span><span class="strut">&nbsp;</span></p>
<p id="t301" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">root</span><span class="op">,</span> <span class="str">'Enabled'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">metrics</span><span class="op">.</span><span class="nam">enabled</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t302" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t303" class="pln"> <span class="com"># IncludeAPIs</span><span class="strut">&nbsp;</span></p>
<p id="t304" class="stm run hide_run"> <span class="key">if</span> <span class="nam">metrics</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">and</span> <span class="nam">metrics</span><span class="op">.</span><span class="nam">include_apis</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t305" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">root</span><span class="op">,</span> <span class="str">'IncludeAPIs'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">metrics</span><span class="op">.</span><span class="nam">include_apis</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t306" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t307" class="pln"> <span class="com"># RetentionPolicy</span><span class="strut">&nbsp;</span></p>
<p id="t308" class="stm run hide_run"> <span class="nam">retention_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">root</span><span class="op">,</span> <span class="str">'RetentionPolicy'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t309" class="stm run hide_run"> <span class="nam">_convert_retention_policy_to_xml</span><span class="op">(</span><span class="nam">metrics</span><span class="op">.</span><span class="nam">retention_policy</span><span class="op">,</span> <span class="nam">retention_element</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t310" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t311" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t312" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_retention_policy_to_xml</span><span class="op">(</span><span class="nam">retention_policy</span><span class="op">,</span> <span class="nam">root</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t313" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t314" class="pln"><span class="str"> &lt;Enabled>true|false&lt;/Enabled></span><span class="strut">&nbsp;</span></p>
<p id="t315" class="pln"><span class="str"> &lt;Days>number-of-days&lt;/Days></span><span class="strut">&nbsp;</span></p>
<p id="t316" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t317" class="pln"> <span class="com"># Enabled</span><span class="strut">&nbsp;</span></p>
<p id="t318" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">root</span><span class="op">,</span> <span class="str">'Enabled'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">retention_policy</span><span class="op">.</span><span class="nam">enabled</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t319" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t320" class="pln"> <span class="com"># Days</span><span class="strut">&nbsp;</span></p>
<p id="t321" class="stm run hide_run"> <span class="key">if</span> <span class="nam">retention_policy</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">and</span> <span class="nam">retention_policy</span><span class="op">.</span><span class="nam">days</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t322" class="stm run hide_run"> <span class="nam">ETree</span><span class="op">.</span><span class="nam">SubElement</span><span class="op">(</span><span class="nam">root</span><span class="op">,</span> <span class="str">'Days'</span><span class="op">)</span><span class="op">.</span><span class="nam">text</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">retention_policy</span><span class="op">.</span><span class="nam">days</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t323" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t324" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t325" class="stm run hide_run"><span class="key">def</span> <span class="nam">_len_plus</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t326" class="stm run hide_run"> <span class="nam">length</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t327" class="pln"> <span class="com"># Check if object implements the __len__ method, covers most input cases such as bytearray.</span><span class="strut">&nbsp;</span></p>
<p id="t328" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t329" class="stm run hide_run"> <span class="nam">length</span> <span class="op">=</span> <span class="nam">len</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t330" class="stm mis"> <span class="key">except</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t331" class="stm mis"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t332" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t333" class="stm par run hide_run"><span class="annotate short">333&#x202F;&#x219B;&#x202F;336</span><span class="annotate long">line 333 didn't jump to line 336, because the condition on line 333 was never true</span> <span class="key">if</span> <span class="key">not</span> <span class="nam">length</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t334" class="pln"> <span class="com"># Check if the stream is a file-like stream object.</span><span class="strut">&nbsp;</span></p>
<p id="t335" class="pln"> <span class="com"># If so, calculate the size using the file descriptor.</span><span class="strut">&nbsp;</span></p>
<p id="t336" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t337" class="stm mis"> <span class="nam">fileno</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">fileno</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t338" class="stm mis"> <span class="key">except</span> <span class="op">(</span><span class="nam">AttributeError</span><span class="op">,</span> <span class="nam">UnsupportedOperation</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t339" class="stm mis"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t340" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t341" class="stm mis"> <span class="key">return</span> <span class="nam">fstat</span><span class="op">(</span><span class="nam">fileno</span><span class="op">)</span><span class="op">.</span><span class="nam">st_size</span><span class="strut">&nbsp;</span></p>
<p id="t342" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t343" class="pln"> <span class="com"># If the stream is seekable and tell() is implemented, calculate the stream size.</span><span class="strut">&nbsp;</span></p>
<p id="t344" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t345" class="stm mis"> <span class="nam">currentPosition</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">tell</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t346" class="stm mis"> <span class="nam">data</span><span class="op">.</span><span class="nam">seek</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="nam">SEEK_END</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t347" class="stm mis"> <span class="nam">length</span> <span class="op">=</span> <span class="nam">data</span><span class="op">.</span><span class="nam">tell</span><span class="op">(</span><span class="op">)</span> <span class="op">-</span> <span class="nam">currentPosition</span><span class="strut">&nbsp;</span></p>
<p id="t348" class="stm mis"> <span class="nam">data</span><span class="op">.</span><span class="nam">seek</span><span class="op">(</span><span class="nam">currentPosition</span><span class="op">,</span> <span class="nam">SEEK_SET</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t349" class="stm mis"> <span class="key">except</span> <span class="op">(</span><span class="nam">AttributeError</span><span class="op">,</span> <span class="nam">UnsupportedOperation</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t350" class="stm mis"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t351" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t352" class="stm run hide_run"> <span class="key">return</span> <span class="nam">length</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,519 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/cloudstorageaccount.py: 70%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/cloudstorageaccount.py</b> :
<span class="pc_cov">70%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
50 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">35 run</span>
<span class="mis shortkey_m button_toggle_mis">15 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm mis"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="stm mis"><a href="#n90">90</a></p>
<p id="n91" class="stm mis"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="stm run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm mis"><a href="#n107">107</a></p>
<p id="n108" class="stm mis"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm mis"><a href="#n124">124</a></p>
<p id="n125" class="stm mis"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="stm run hide_run"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="stm run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="stm run hide_run"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="stm mis"><a href="#n141">141</a></p>
<p id="n142" class="stm mis"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="stm run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="stm mis"><a href="#n157">157</a></p>
<p id="n158" class="stm mis"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="pln"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="pln"><a href="#n190">190</a></p>
<p id="n191" class="pln"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="pln"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="stm mis"><a href="#n209">209</a></p>
<p id="n210" class="stm mis"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="stm mis"><a href="#n212">212</a></p>
<p id="n213" class="stm mis"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="com"># Note that we import BlobService/QueueService/TableService on demand</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="com"># because this module is imported by azure/storage/__init__</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="com"># ie. we don't want 'import azure.storage' to trigger an automatic import</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="com"># of blob/queue/table packages.</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="nam">_validate_not_none</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">ResourceTypes</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">Services</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">AccountPermissions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">sharedaccesssignature</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">SharedAccessSignature</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"><span class="key">class</span> <span class="nam">CloudStorageAccount</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="str"> Provides a factory for creating the blob, queue, table, and file services</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="str"> with a common account name and account key or sas token. Users can either </span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str"> use the factory or can construct the appropriate service directly.</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">account_name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">account_key</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">sas_token</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">is_emulated</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="str"> :param str account_name:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> The storage account name. This is used to authenticate requests </span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="str"> signed with an account key and to construct the storage endpoint. It </span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="str"> is required unless is_emulated is used.</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> :param str account_key:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> The storage account key. This is used for shared key authentication. </span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> :param str sas_token:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> A shared access signature token to use to authenticate requests </span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> instead of the account key. If account key and sas token are both </span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str"> specified, account key will be used to sign.</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str"> :param bool is_emulated:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="str"> Whether to use the emulator. Defaults to False. If specified, will </span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="str"> override all other parameters.</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">=</span> <span class="nam">account_name</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span> <span class="op">=</span> <span class="nam">account_key</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span> <span class="op">=</span> <span class="nam">sas_token</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span> <span class="op">=</span> <span class="nam">is_emulated</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="key">def</span> <span class="nam">create_block_blob_service</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str"> Creates a BlockBlobService object with the settings specified in the </span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="str"> CloudStorageAccount.</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="str"> :return: A service object.</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="str"> :rtype: :class:`~azure.storage.blob.blockblobservice.BlockBlobService`</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">blob</span><span class="op">.</span><span class="nam">blockblobservice</span> <span class="key">import</span> <span class="nam">BlockBlobService</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="key">return</span> <span class="nam">BlockBlobService</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">'The package azure-storage-blob is required. '</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="op">+</span> <span class="str">'Please install it using "pip install azure-storage-blob"'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="key">def</span> <span class="nam">create_page_blob_service</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="str"> Creates a PageBlobService object with the settings specified in the </span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="str"> CloudStorageAccount.</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="str"> :return: A service object.</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="str"> :rtype: :class:`~azure.storage.blob.pageblobservice.PageBlobService`</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"> <span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">blob</span><span class="op">.</span><span class="nam">pageblobservice</span> <span class="key">import</span> <span class="nam">PageBlobService</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="key">return</span> <span class="nam">PageBlobService</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm mis"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">'The package azure-storage-blob is required. '</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="op">+</span> <span class="str">'Please install it using "pip install azure-storage-blob"'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run"> <span class="key">def</span> <span class="nam">create_append_blob_service</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="str"> Creates a AppendBlobService object with the settings specified in the </span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="str"> CloudStorageAccount.</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="str"> :return: A service object.</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="str"> :rtype: :class:`~azure.storage.blob.appendblobservice.AppendBlobService`</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">blob</span><span class="op">.</span><span class="nam">appendblobservice</span> <span class="key">import</span> <span class="nam">AppendBlobService</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm run hide_run"> <span class="key">return</span> <span class="nam">AppendBlobService</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm mis"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">'The package azure-storage-blob is required. '</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="op">+</span> <span class="str">'Please install it using "pip install azure-storage-blob"'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="key">def</span> <span class="nam">create_table_service</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="str"> Creates a TableService object with the settings specified in the </span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="str"> CloudStorageAccount.</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="str"> :return: A service object.</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="str"> :rtype: :class:`~azure.storage.table.tableservice.TableService`</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">table</span><span class="op">.</span><span class="nam">tableservice</span> <span class="key">import</span> <span class="nam">TableService</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="key">return</span> <span class="nam">TableService</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm mis"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">'The package azure-storage-table is required. '</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"> <span class="op">+</span> <span class="str">'Please install it using "pip install azure-storage-table"'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm run hide_run"> <span class="key">def</span> <span class="nam">create_queue_service</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="str"> Creates a QueueService object with the settings specified in the </span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"><span class="str"> CloudStorageAccount.</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"><span class="str"> :return: A service object.</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="str"> :rtype: :class:`~azure.storage.queue.queueservice.QueueService`</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm run hide_run"> <span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">queue</span><span class="op">.</span><span class="nam">queueservice</span> <span class="key">import</span> <span class="nam">QueueService</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm run hide_run"> <span class="key">return</span> <span class="nam">QueueService</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"> <span class="nam">is_emulated</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm mis"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">'The package azure-storage-queue is required. '</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"> <span class="op">+</span> <span class="str">'Please install it using "pip install azure-storage-queue"'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="key">def</span> <span class="nam">create_file_service</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"><span class="str"> Creates a FileService object with the settings specified in the </span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="str"> CloudStorageAccount.</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"><span class="str"> :return: A service object.</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="str"> :rtype: :class:`~azure.storage.file.fileservice.FileService`</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"> <span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">file</span><span class="op">.</span><span class="nam">fileservice</span> <span class="key">import</span> <span class="nam">FileService</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm run hide_run"> <span class="key">return</span> <span class="nam">FileService</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"> <span class="nam">sas_token</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="stm mis"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">'The package azure-storage-file is required. '</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"> <span class="op">+</span> <span class="str">'Please install it using "pip install azure-storage-file"'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"> <span class="key">def</span> <span class="nam">generate_shared_access_signature</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">services</span><span class="op">,</span> <span class="nam">resource_types</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"> <span class="nam">permission</span><span class="op">,</span> <span class="nam">expiry</span><span class="op">,</span> <span class="nam">start</span><span class="op">=</span><span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"> <span class="nam">ip</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">protocol</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="str"> Generates a shared access signature for the account.</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="pln"><span class="str"> Use the returned signature with the sas_token parameter of the service </span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"><span class="str"> or to create a new account object.</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"><span class="str"> :param Services services:</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"><span class="str"> Specifies the services accessible with the account SAS. You can </span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"><span class="str"> combine values to provide access to more than one service. </span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="str"> :param ResourceTypes resource_types:</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="str"> Specifies the resource types that are accessible with the account </span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"><span class="str"> SAS. You can combine values to provide access to more than one </span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"><span class="str"> resource type. </span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"><span class="str"> :param AccountPermissions permission:</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="str"> The permissions associated with the shared access signature. The </span><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"><span class="str"> user is restricted to operations allowed by the permissions. </span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="str"> Required unless an id is given referencing a stored access policy </span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"><span class="str"> which contains this field. This field must be omitted if it has been </span><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln"><span class="str"> specified in an associated stored access policy. You can combine </span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="str"> values to provide more than one permission.</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="str"> :param expiry:</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"><span class="str"> The time at which the shared access signature becomes invalid. </span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"><span class="str"> Required unless an id is given referencing a stored access policy </span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="str"> which contains this field. This field must be omitted if it has </span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"><span class="str"> been specified in an associated stored access policy. Azure will always </span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"><span class="str"> convert values to UTC. If a date is passed in without timezone info, it </span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="str"> is assumed to be UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t190" class="pln"><span class="str"> :type expiry: datetime.datetime or str</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="pln"><span class="str"> :param start:</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="str"> The time at which the shared access signature becomes valid. If </span><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"><span class="str"> omitted, start time for this call is assumed to be the time when the </span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"><span class="str"> storage service receives the request. Azure will always convert values </span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="str"> to UTC. If a date is passed in without timezone info, it is assumed to </span><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="str"> be UTC.</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="str"> :type start: datetime.datetime or str</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="str"> :param str ip:</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"><span class="str"> Specifies an IP address or a range of IP addresses from which to accept requests.</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"><span class="str"> If the IP address from which the request originates does not match the IP address</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="str"> or address range specified on the SAS token, the request is not authenticated.</span><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"><span class="str"> For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="pln"><span class="str"> restricts the request to those IP addresses.</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"><span class="str"> :param str protocol:</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="str"> Specifies the protocol permitted for a request made. Possible values are</span><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"><span class="str"> both HTTPS and HTTP (https,http) or HTTPS only (https). The default value</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"><span class="str"> is https,http. Note that HTTP only is not a permitted value.</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="stm mis"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'self.account_name'</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t210" class="stm mis"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'self.account_key'</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t212" class="stm mis"> <span class="nam">sas</span> <span class="op">=</span> <span class="nam">SharedAccessSignature</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="stm mis"> <span class="key">return</span> <span class="nam">sas</span><span class="op">.</span><span class="nam">generate_account</span><span class="op">(</span><span class="nam">services</span><span class="op">,</span> <span class="nam">resource_types</span><span class="op">,</span> <span class="nam">permission</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"> <span class="nam">expiry</span><span class="op">,</span> <span class="nam">start</span><span class="op">=</span><span class="nam">start</span><span class="op">,</span> <span class="nam">ip</span><span class="op">=</span><span class="nam">ip</span><span class="op">,</span> <span class="nam">protocol</span><span class="op">=</span><span class="nam">protocol</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,623 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/retry.py: 92%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/retry.py</b> :
<span class="pc_cov">92%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
64 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">61 run</span>
<span class="mis shortkey_m button_toggle_mis">3 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">4 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm par run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm par run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="stm mis"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="stm par run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="stm par run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm mis"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm mis"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="stm run hide_run"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="stm run hide_run"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="stm run hide_run"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="pln"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="pln"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="stm run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="stm run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="stm run hide_run"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="stm run hide_run"><a href="#n202">202</a></p>
<p id="n203" class="stm run hide_run"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="stm run hide_run"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="stm run hide_run"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="stm run hide_run"><a href="#n224">224</a></p>
<p id="n225" class="stm run hide_run"><a href="#n225">225</a></p>
<p id="n226" class="stm run hide_run"><a href="#n226">226</a></p>
<p id="n227" class="pln"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="pln"><a href="#n238">238</a></p>
<p id="n239" class="pln"><a href="#n239">239</a></p>
<p id="n240" class="stm run hide_run"><a href="#n240">240</a></p>
<p id="n241" class="stm run hide_run"><a href="#n241">241</a></p>
<p id="n242" class="pln"><a href="#n242">242</a></p>
<p id="n243" class="pln"><a href="#n243">243</a></p>
<p id="n244" class="pln"><a href="#n244">244</a></p>
<p id="n245" class="pln"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
<p id="n247" class="pln"><a href="#n247">247</a></p>
<p id="n248" class="pln"><a href="#n248">248</a></p>
<p id="n249" class="pln"><a href="#n249">249</a></p>
<p id="n250" class="pln"><a href="#n250">250</a></p>
<p id="n251" class="pln"><a href="#n251">251</a></p>
<p id="n252" class="stm run hide_run"><a href="#n252">252</a></p>
<p id="n253" class="stm run hide_run"><a href="#n253">253</a></p>
<p id="n254" class="pln"><a href="#n254">254</a></p>
<p id="n255" class="pln"><a href="#n255">255</a></p>
<p id="n256" class="stm run hide_run"><a href="#n256">256</a></p>
<p id="n257" class="pln"><a href="#n257">257</a></p>
<p id="n258" class="pln"><a href="#n258">258</a></p>
<p id="n259" class="pln"><a href="#n259">259</a></p>
<p id="n260" class="pln"><a href="#n260">260</a></p>
<p id="n261" class="pln"><a href="#n261">261</a></p>
<p id="n262" class="pln"><a href="#n262">262</a></p>
<p id="n263" class="pln"><a href="#n263">263</a></p>
<p id="n264" class="pln"><a href="#n264">264</a></p>
<p id="n265" class="pln"><a href="#n265">265</a></p>
<p id="n266" class="stm run hide_run"><a href="#n266">266</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">abc</span> <span class="key">import</span> <span class="nam">ABCMeta</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="nam">math</span> <span class="key">import</span> <span class="nam">pow</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="nam">LocationMode</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">class</span> <span class="nam">_Retry</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="str"> The base class for Exponential and Linear retries containing shared code.</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm run hide_run"> <span class="nam">__metaclass__</span> <span class="op">=</span> <span class="nam">ABCMeta</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">max_attempts</span><span class="op">,</span> <span class="nam">retry_to_secondary</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="str"> Constructs a base retry object.</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="str"> :param int max_attempts: </span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="str"> The maximum number of retry attempts.</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="str"> :param bool retry_to_secondary:</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="str"> Whether the request should be retried to secondary, if able. This should </span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="str"> only be enabled of RA-GRS accounts are used and potentially stale data </span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str"> can be handled.</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">max_attempts</span> <span class="op">=</span> <span class="nam">max_attempts</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">retry_to_secondary</span> <span class="op">=</span> <span class="nam">retry_to_secondary</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_should_retry</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="str"> A function which determines whether or not to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> :param ~azure.storage.models.RetryContext context: </span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> The retry context. This contains the request, response, and other data </span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> which can be used to determine whether or not to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> A boolean indicating whether or not to retry the request.</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str"> :rtype: bool</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="com"># If max attempts are reached, do not retry.</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="key">if</span> <span class="op">(</span><span class="nam">context</span><span class="op">.</span><span class="nam">count</span> <span class="op">>=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">max_attempts</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="key">return</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">status</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm par run hide_run"><span class="annotate short">57&#x202F;&#x219B;&#x202F;60</span><span class="annotate long">line 57 didn't jump to line 60, because the condition on line 57 was never false</span> <span class="key">if</span> <span class="nam">context</span><span class="op">.</span><span class="nam">response</span> <span class="key">and</span> <span class="nam">context</span><span class="op">.</span><span class="nam">response</span><span class="op">.</span><span class="nam">status</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">status</span> <span class="op">=</span> <span class="nam">context</span><span class="op">.</span><span class="nam">response</span><span class="op">.</span><span class="nam">status</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm par run hide_run"><span class="annotate short">60&#x202F;&#x219B;&#x202F;65</span><span class="annotate long">line 60 didn't jump to line 65, because the condition on line 60 was never true</span> <span class="key">if</span> <span class="nam">status</span> <span class="op">==</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str"> If status is None, retry as this request triggered an exception. For </span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="str"> example, network issues would trigger this.</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm mis"> <span class="key">return</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">status</span> <span class="op">>=</span> <span class="num">200</span> <span class="key">and</span> <span class="nam">status</span> <span class="op">&lt;</span> <span class="num">300</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="str"> This method is called after a successful response, meaning we failed </span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="str"> during the response body download or parsing. So, success codes should </span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="str"> be retried.</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="key">return</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">status</span> <span class="op">>=</span> <span class="num">300</span> <span class="key">and</span> <span class="nam">status</span> <span class="op">&lt;</span> <span class="num">500</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="str"> An exception occured, but in most cases it was expected. Examples could </span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"><span class="str"> include a 309 Conflict or 412 Precondition Failed.</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="key">if</span> <span class="nam">status</span> <span class="op">==</span> <span class="num">404</span> <span class="key">and</span> <span class="nam">context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">==</span> <span class="nam">LocationMode</span><span class="op">.</span><span class="nam">SECONDARY</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"> <span class="com"># Response code 404 should be retried if secondary was used.</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="key">return</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="key">if</span> <span class="nam">status</span> <span class="op">==</span> <span class="num">408</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="com"># Response code 408 is a timeout and should be retried.</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="key">return</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="key">return</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm par run hide_run"><span class="annotate short">85&#x202F;&#x219B;&#x202F;95</span><span class="annotate long">line 85 didn't jump to line 95, because the condition on line 85 was never false</span> <span class="key">elif</span> <span class="nam">status</span> <span class="op">>=</span> <span class="num">500</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str"> Response codes above 500 with the exception of 501 Not Implemented and </span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> 505 Version Not Supported indicate a server issue and should be retried.</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm par run hide_run"><span class="annotate short">90&#x202F;&#x219B;&#x202F;91</span><span class="annotate long">line 90 didn't jump to line 91, because the condition on line 90 was never true</span> <span class="key">if</span> <span class="nam">status</span> <span class="op">==</span> <span class="num">501</span> <span class="key">or</span> <span class="nam">status</span> <span class="op">==</span> <span class="num">505</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm mis"> <span class="key">return</span> <span class="key">False</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="key">return</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"> <span class="com"># If something else happened, it's unexpected. Retry.</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm mis"> <span class="key">return</span> <span class="key">True</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_set_next_host_location</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="str"> A function which sets the next host location on the request, if applicable. </span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="str"> :param ~azure.storage.models.RetryContext context: </span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="str"> The retry context containing the previous host location and the request </span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> to evaluate and possibly modify.</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">context</span><span class="op">.</span><span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span><span class="op">)</span> <span class="op">></span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="com"># If there's more than one possible location, retry to the alternative</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="key">if</span> <span class="nam">context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">==</span> <span class="nam">LocationMode</span><span class="op">.</span><span class="nam">PRIMARY</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="nam">context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">=</span> <span class="nam">LocationMode</span><span class="op">.</span><span class="nam">SECONDARY</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">=</span> <span class="nam">LocationMode</span><span class="op">.</span><span class="nam">PRIMARY</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">context</span><span class="op">.</span><span class="nam">request</span><span class="op">.</span><span class="nam">host</span> <span class="op">=</span> <span class="nam">context</span><span class="op">.</span><span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">context</span><span class="op">.</span><span class="nam">location_mode</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_retry</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">,</span> <span class="nam">backoff</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="str"> A function which determines whether and how to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"><span class="str"> :param ~azure.storage.models.RetryContext context: </span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="str"> The retry context. This contains the request, response, and other data </span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"><span class="str"> which can be used to determine whether or not to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"><span class="str"> :param function() backoff:</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="str"> A function which returns the backoff time if a retry is to be performed.</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="str"> An integer indicating how long to wait before retrying the request, </span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="str"> or None to indicate no retry should be performed.</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"><span class="str"> :rtype: int or None</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="com"># If the context does not contain a count parameter, this request has not </span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"> <span class="com"># been retried yet. Add the count parameter to track the number of retries.</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">context</span><span class="op">,</span> <span class="str">'count'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="nam">context</span><span class="op">.</span><span class="nam">count</span> <span class="op">=</span> <span class="num">0</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"> <span class="com"># Determine whether to retry, and if so increment the count, modify the </span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="com"># request as desired, and return the backoff.</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_should_retry</span><span class="op">(</span><span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="stm run hide_run"> <span class="nam">context</span><span class="op">.</span><span class="nam">count</span> <span class="op">+=</span> <span class="num">1</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"> <span class="com"># If retry to secondary is enabled, attempt to change the host if the </span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"> <span class="com"># request allows it</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">retry_to_secondary</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_set_next_host_location</span><span class="op">(</span><span class="nam">context</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm run hide_run"> <span class="key">return</span> <span class="nam">backoff</span><span class="op">(</span><span class="nam">context</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run"><span class="key">class</span> <span class="nam">ExponentialRetry</span><span class="op">(</span><span class="nam">_Retry</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"><span class="str"> Exponential retry.</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">initial_backoff</span><span class="op">=</span><span class="num">15</span><span class="op">,</span> <span class="nam">increment_power</span><span class="op">=</span><span class="num">3</span><span class="op">,</span> <span class="nam">max_attempts</span><span class="op">=</span><span class="num">3</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"> <span class="nam">retry_to_secondary</span><span class="op">=</span><span class="key">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"><span class="str"> Constructs an Exponential retry object. The initial_backoff is used for </span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="str"> the first retry. Subsequent retries are retried after initial_backoff + </span><span class="strut">&nbsp;</span></p>
<p id="t158" class="pln"><span class="str"> increment_power^retry_count seconds. For example, by default the first retry </span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="str"> occurs after 15 seconds, the second after (15+3^1) = 18 seconds, and the </span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="str"> third after (15+3^2) = 24 seconds.</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"><span class="str"> :param int initial_backoff: </span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"><span class="str"> The initial backoff interval, in seconds, for the first retry.</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"><span class="str"> :param int increment_power:</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="str"> The base, in seconds, to increment the initial_backoff by after the </span><span class="strut">&nbsp;</span></p>
<p id="t166" class="pln"><span class="str"> first retry.</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"><span class="str"> :param int max_attempts: </span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="str"> The maximum number of retry attempts.</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"><span class="str"> :param bool retry_to_secondary:</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"><span class="str"> Whether the request should be retried to secondary, if able. This should </span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"><span class="str"> only be enabled of RA-GRS accounts are used and potentially stale data </span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="str"> can be handled.</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">initial_backoff</span> <span class="op">=</span> <span class="nam">initial_backoff</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">increment_power</span> <span class="op">=</span> <span class="nam">increment_power</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm run hide_run"> <span class="nam">super</span><span class="op">(</span><span class="nam">ExponentialRetry</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="nam">max_attempts</span><span class="op">,</span> <span class="nam">retry_to_secondary</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="str"> A function which determines whether and how to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln"><span class="str"> :param ~azure.storage.models.RetryContext context: </span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="str"> The retry context. This contains the request, response, and other data </span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="str"> which can be used to determine whether or not to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"><span class="str"> An integer indicating how long to wait before retrying the request, </span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="str"> or None to indicate no retry should be performed.</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"><span class="str"> :rtype: int or None</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"> <span class="key">def</span> <span class="nam">retry</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_retry</span><span class="op">(</span><span class="nam">context</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_backoff</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"><span class="str"> Calculates how long to sleep before retrying.</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="str"> An integer indicating how long to wait before retrying the request, </span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="str"> or None to indicate no retry should be performed.</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"><span class="str"> :rtype: int or None</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t202" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_backoff</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">initial_backoff</span> <span class="op">+</span> <span class="nam">pow</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">increment_power</span><span class="op">,</span> <span class="nam">context</span><span class="op">.</span><span class="nam">count</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t206" class="stm run hide_run"><span class="key">class</span> <span class="nam">LinearRetry</span><span class="op">(</span><span class="nam">_Retry</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="str"> Linear retry.</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t211" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">backoff</span><span class="op">=</span><span class="num">15</span><span class="op">,</span> <span class="nam">max_attempts</span><span class="op">=</span><span class="num">3</span><span class="op">,</span> <span class="nam">retry_to_secondary</span><span class="op">=</span><span class="key">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="str"> Constructs a Linear retry object.</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"><span class="str"> :param int backoff: </span><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"><span class="str"> The backoff interval, in seconds, between retries.</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="str"> :param int max_attempts: </span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="str"> The maximum number of retry attempts.</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="str"> :param bool retry_to_secondary:</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="str"> Whether the request should be retried to secondary, if able. This should </span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="str"> only be enabled of RA-GRS accounts are used and potentially stale data </span><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"><span class="str"> can be handled.</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">backoff</span> <span class="op">=</span> <span class="nam">backoff</span><span class="strut">&nbsp;</span></p>
<p id="t225" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">max_attempts</span> <span class="op">=</span> <span class="nam">max_attempts</span><span class="strut">&nbsp;</span></p>
<p id="t226" class="stm run hide_run"> <span class="nam">super</span><span class="op">(</span><span class="nam">LinearRetry</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="nam">max_attempts</span><span class="op">,</span> <span class="nam">retry_to_secondary</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"><span class="str"> A function which determines whether and how to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"><span class="str"> :param ~azure.storage.models.RetryContext context: </span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"><span class="str"> The retry context. This contains the request, response, and other data </span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"><span class="str"> which can be used to determine whether or not to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"><span class="str"> An integer indicating how long to wait before retrying the request, </span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"><span class="str"> or None to indicate no retry should be performed.</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"><span class="str"> :rtype: int or None</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t240" class="stm run hide_run"> <span class="key">def</span> <span class="nam">retry</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_retry</span><span class="op">(</span><span class="nam">context</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_backoff</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t243" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="pln"><span class="str"> Calculates how long to sleep before retrying.</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t247" class="pln"><span class="str"> An integer indicating how long to wait before retrying the request, </span><span class="strut">&nbsp;</span></p>
<p id="t248" class="pln"><span class="str"> or None to indicate no retry should be performed.</span><span class="strut">&nbsp;</span></p>
<p id="t249" class="pln"><span class="str"> :rtype: int or None</span><span class="strut">&nbsp;</span></p>
<p id="t250" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t251" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t252" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_backoff</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">backoff</span><span class="strut">&nbsp;</span></p>
<p id="t254" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t255" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t256" class="stm run hide_run"><span class="key">def</span> <span class="nam">no_retry</span><span class="op">(</span><span class="nam">context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t257" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t258" class="pln"><span class="str"> Specifies never to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t260" class="pln"><span class="str"> :param ~azure.storage.models.RetryContext context: </span><span class="strut">&nbsp;</span></p>
<p id="t261" class="pln"><span class="str"> The retry context.</span><span class="strut">&nbsp;</span></p>
<p id="t262" class="pln"><span class="str"> :return: </span><span class="strut">&nbsp;</span></p>
<p id="t263" class="pln"><span class="str"> Always returns None to indicate never to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="pln"><span class="str"> :rtype: None</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="stm run hide_run"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,661 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-common/azure/storage/common/storageclient.py: 92%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-common/azure/storage/common/storageclient.py</b> :
<span class="pc_cov">92%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
107 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">99 run</span>
<span class="mis shortkey_m button_toggle_mis">8 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">1 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="stm run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="stm run hide_run"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="stm run hide_run"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="stm run hide_run"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="stm run hide_run"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="stm run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="stm mis"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="stm mis"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="stm run hide_run"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="stm mis"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="pln"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="stm mis"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="stm run hide_run"><a href="#n164">164</a></p>
<p id="n165" class="stm run hide_run"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="stm run hide_run"><a href="#n167">167</a></p>
<p id="n168" class="stm run hide_run"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="stm run hide_run"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="stm run hide_run"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="stm run hide_run"><a href="#n176">176</a></p>
<p id="n177" class="stm run hide_run"><a href="#n177">177</a></p>
<p id="n178" class="stm run hide_run"><a href="#n178">178</a></p>
<p id="n179" class="stm run hide_run"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="stm run hide_run"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="stm run hide_run"><a href="#n185">185</a></p>
<p id="n186" class="stm run hide_run"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="stm run hide_run"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="pln"><a href="#n190">190</a></p>
<p id="n191" class="pln"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="stm run hide_run"><a href="#n193">193</a></p>
<p id="n194" class="stm run hide_run"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="stm run hide_run"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="stm run hide_run"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="stm run hide_run"><a href="#n202">202</a></p>
<p id="n203" class="stm run hide_run"><a href="#n203">203</a></p>
<p id="n204" class="stm run hide_run"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="stm run hide_run"><a href="#n206">206</a></p>
<p id="n207" class="stm run hide_run"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="stm run hide_run"><a href="#n213">213</a></p>
<p id="n214" class="stm run hide_run"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="stm run hide_run"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="stm run hide_run"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="stm run hide_run"><a href="#n223">223</a></p>
<p id="n224" class="stm run hide_run"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="stm run hide_run"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="stm run hide_run"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="stm run hide_run"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="stm run hide_run"><a href="#n237">237</a></p>
<p id="n238" class="stm run hide_run"><a href="#n238">238</a></p>
<p id="n239" class="stm run hide_run"><a href="#n239">239</a></p>
<p id="n240" class="stm run hide_run"><a href="#n240">240</a></p>
<p id="n241" class="stm run hide_run"><a href="#n241">241</a></p>
<p id="n242" class="pln"><a href="#n242">242</a></p>
<p id="n243" class="stm run hide_run"><a href="#n243">243</a></p>
<p id="n244" class="pln"><a href="#n244">244</a></p>
<p id="n245" class="stm run hide_run"><a href="#n245">245</a></p>
<p id="n246" class="stm run hide_run"><a href="#n246">246</a></p>
<p id="n247" class="stm run hide_run"><a href="#n247">247</a></p>
<p id="n248" class="stm run hide_run"><a href="#n248">248</a></p>
<p id="n249" class="stm par run hide_run"><a href="#n249">249</a></p>
<p id="n250" class="pln"><a href="#n250">250</a></p>
<p id="n251" class="stm run hide_run"><a href="#n251">251</a></p>
<p id="n252" class="pln"><a href="#n252">252</a></p>
<p id="n253" class="pln"><a href="#n253">253</a></p>
<p id="n254" class="pln"><a href="#n254">254</a></p>
<p id="n255" class="pln"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="stm mis"><a href="#n257">257</a></p>
<p id="n258" class="stm mis"><a href="#n258">258</a></p>
<p id="n259" class="stm mis"><a href="#n259">259</a></p>
<p id="n260" class="stm mis"><a href="#n260">260</a></p>
<p id="n261" class="pln"><a href="#n261">261</a></p>
<p id="n262" class="pln"><a href="#n262">262</a></p>
<p id="n263" class="stm run hide_run"><a href="#n263">263</a></p>
<p id="n264" class="pln"><a href="#n264">264</a></p>
<p id="n265" class="pln"><a href="#n265">265</a></p>
<p id="n266" class="stm run hide_run"><a href="#n266">266</a></p>
<p id="n267" class="stm run hide_run"><a href="#n267">267</a></p>
<p id="n268" class="pln"><a href="#n268">268</a></p>
<p id="n269" class="pln"><a href="#n269">269</a></p>
<p id="n270" class="stm run hide_run"><a href="#n270">270</a></p>
<p id="n271" class="stm run hide_run"><a href="#n271">271</a></p>
<p id="n272" class="pln"><a href="#n272">272</a></p>
<p id="n273" class="stm run hide_run"><a href="#n273">273</a></p>
<p id="n274" class="stm run hide_run"><a href="#n274">274</a></p>
<p id="n275" class="pln"><a href="#n275">275</a></p>
<p id="n276" class="pln"><a href="#n276">276</a></p>
<p id="n277" class="stm run hide_run"><a href="#n277">277</a></p>
<p id="n278" class="pln"><a href="#n278">278</a></p>
<p id="n279" class="stm run hide_run"><a href="#n279">279</a></p>
<p id="n280" class="pln"><a href="#n280">280</a></p>
<p id="n281" class="pln"><a href="#n281">281</a></p>
<p id="n282" class="pln"><a href="#n282">282</a></p>
<p id="n283" class="pln"><a href="#n283">283</a></p>
<p id="n284" class="stm run hide_run"><a href="#n284">284</a></p>
<p id="n285" class="stm run hide_run"><a href="#n285">285</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">sys</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="nam">abc</span> <span class="key">import</span> <span class="nam">ABCMeta</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">time</span> <span class="key">import</span> <span class="nam">sleep</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"><span class="key">import</span> <span class="nam">requests</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">common</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="nam">AzureException</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_constants</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">DEFAULT_SOCKET_TIMEOUT</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">_ERROR_DECRYPTION_FAILURE</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">_http_error_handler</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_http</span> <span class="key">import</span> <span class="nam">HTTPError</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_http</span><span class="op">.</span><span class="nam">httpclient</span> <span class="key">import</span> <span class="nam">_HTTPClient</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">_serialization</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">_update_request</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">_add_date_header</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">RetryContext</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">LocationMode</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">_OperationContext</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">retry</span> <span class="key">import</span> <span class="nam">ExponentialRetry</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"><span class="key">class</span> <span class="nam">StorageClient</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> This is the base class for service objects. Service objects are used to do </span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> all requests to Storage. This class cannot be instantiated directly.</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str"> :ivar str account_name:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str"> The storage account name. This is used to authenticate requests </span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="str"> signed with an account key and to construct the storage endpoint. It </span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="str"> is required unless a connection string is given, or if a custom </span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str"> domain is used with anonymous authentication.</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="str"> :ivar str account_key:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="str"> The storage account key. This is used for shared key authentication. </span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="str"> If neither account key or sas token is specified, anonymous access </span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="str"> will be used.</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="str"> :ivar str sas_token:</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="str"> A shared access signature token to use to authenticate requests </span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="str"> instead of the account key. If account key and sas token are both </span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str"> specified, account key will be used to sign. If neither are </span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="str"> specified, anonymous access will be used.</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str"> :ivar str primary_endpoint:</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="str"> The endpoint to send storage requests to.</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="str"> :ivar str secondary_endpoint:</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="str"> The secondary endpoint to read storage data from. This will only be a </span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="str"> valid endpoint if the storage account used is RA-GRS and thus allows </span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="str"> reading from secondary.</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="str"> :ivar function(context) retry:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="str"> A function which determines whether to retry. Takes as a parameter a </span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="str"> :class:`~azure.storage.models.RetryContext` object. Returns the number </span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="str"> of seconds to wait before retrying the request, or None to indicate not </span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="str"> to retry.</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="str"> :ivar LocationMode location_mode:</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"><span class="str"> The host location to use to make requests. Defaults to LocationMode.PRIMARY.</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="str"> Note that this setting only applies to RA-GRS accounts as other account </span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="str"> types do not allow reading from secondary. If the location_mode is set to </span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="str"> LocationMode.SECONDARY, read requests will be sent to the secondary endpoint. </span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="str"> Write requests will continue to be sent to primary.</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="str"> :ivar str protocol:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="str"> The protocol to use for requests. Defaults to https.</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="str"> :ivar requests.Session request_session:</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="str"> The session object to use for http requests.</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="str"> :ivar function(request) request_callback:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="str"> A function called immediately before each request is sent. This function </span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str"> takes as a parameter the request object and returns nothing. It may be </span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> used to added custom headers or log request data.</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str"> :ivar function() response_callback:</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="str"> A function called immediately after each response is received. This </span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="str"> function takes as a parameter the response object and returns nothing. </span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="str"> It may be used to log response data.</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="str"> :ivar function() retry_callback:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="str"> A function called immediately after retry evaluation is performed. This </span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="str"> function takes as a parameter the retry context object and returns nothing. </span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="str"> It may be used to detect retries and log context information.</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="nam">__metaclass__</span> <span class="op">=</span> <span class="nam">ABCMeta</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">connection_params</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> :param obj connection_params: The parameters to use to construct the client.</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_name</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">account_name</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">account_key</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">account_key</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">sas_token</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">sas_token</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">is_emulated</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">is_emulated</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">primary_endpoint</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">primary_endpoint</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">secondary_endpoint</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">secondary_endpoint</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="nam">protocol</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">protocol</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="nam">request_session</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">request_session</span> <span class="key">or</span> <span class="nam">requests</span><span class="op">.</span><span class="nam">Session</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">socket_timeout</span> <span class="op">=</span> <span class="nam">connection_params</span><span class="op">.</span><span class="nam">socket_timeout</span> <span class="key">or</span> <span class="nam">DEFAULT_SOCKET_TIMEOUT</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span> <span class="op">=</span> <span class="nam">_HTTPClient</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"> <span class="nam">protocol</span><span class="op">=</span><span class="nam">protocol</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"> <span class="nam">session</span><span class="op">=</span><span class="nam">request_session</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"> <span class="nam">timeout</span><span class="op">=</span><span class="nam">socket_timeout</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">retry</span> <span class="op">=</span> <span class="nam">ExponentialRetry</span><span class="op">(</span><span class="op">)</span><span class="op">.</span><span class="nam">retry</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">=</span> <span class="nam">LocationMode</span><span class="op">.</span><span class="nam">PRIMARY</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">request_callback</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">response_callback</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">retry_callback</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="op">@</span><span class="nam">property</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"> <span class="key">def</span> <span class="nam">socket_timeout</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm run hide_run"> <span class="op">@</span><span class="nam">socket_timeout</span><span class="op">.</span><span class="nam">setter</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="key">def</span> <span class="nam">socket_timeout</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">timeout</span> <span class="op">=</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm run hide_run"> <span class="op">@</span><span class="nam">property</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"> <span class="key">def</span> <span class="nam">protocol</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">protocol</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="op">@</span><span class="nam">protocol</span><span class="op">.</span><span class="nam">setter</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"> <span class="key">def</span> <span class="nam">protocol</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">protocol</span> <span class="op">=</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="op">@</span><span class="nam">property</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"> <span class="key">def</span> <span class="nam">request_session</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="stm mis"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">session</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t149" class="stm run hide_run"> <span class="op">@</span><span class="nam">request_session</span><span class="op">.</span><span class="nam">setter</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"> <span class="key">def</span> <span class="nam">request_session</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">session</span> <span class="op">=</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="key">def</span> <span class="nam">set_proxy</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">host</span><span class="op">,</span> <span class="nam">port</span><span class="op">,</span> <span class="nam">user</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">password</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"><span class="str"> Sets the proxy server host and port for the HTTP CONNECT Tunnelling.</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="str"> :param str host: Address of the proxy. Ex: '192.168.0.100'</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="pln"><span class="str"> :param int port: Port of the proxy. Ex: 6000</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="str"> :param str user: User for proxy authorization.</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="str"> :param str password: Password for proxy authorization.</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">set_proxy</span><span class="op">(</span><span class="nam">host</span><span class="op">,</span> <span class="nam">port</span><span class="op">,</span> <span class="nam">user</span><span class="op">,</span> <span class="nam">password</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t164" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_get_host_locations</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">primary</span><span class="op">=</span><span class="key">True</span><span class="op">,</span> <span class="nam">secondary</span><span class="op">=</span><span class="key">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="stm run hide_run"> <span class="nam">locations</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="key">if</span> <span class="nam">primary</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm run hide_run"> <span class="nam">locations</span><span class="op">[</span><span class="nam">LocationMode</span><span class="op">.</span><span class="nam">PRIMARY</span><span class="op">]</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">primary_endpoint</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="stm run hide_run"> <span class="key">if</span> <span class="nam">secondary</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="nam">locations</span><span class="op">[</span><span class="nam">LocationMode</span><span class="op">.</span><span class="nam">SECONDARY</span><span class="op">]</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">secondary_endpoint</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="stm run hide_run"> <span class="key">return</span> <span class="nam">locations</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t172" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_apply_host</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">,</span> <span class="nam">retry_context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="key">if</span> <span class="nam">operation_context</span><span class="op">.</span><span class="nam">location_lock</span> <span class="key">and</span> <span class="nam">operation_context</span><span class="op">.</span><span class="nam">host_location</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"> <span class="com"># If this is a location locked operation and the location is set, </span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"> <span class="com"># override the request location and host_location.</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span> <span class="op">=</span> <span class="nam">operation_context</span><span class="op">.</span><span class="nam">host_location</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">operation_context</span><span class="op">.</span><span class="nam">host_location</span><span class="op">.</span><span class="nam">values</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="stm run hide_run"> <span class="nam">retry_context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">operation_context</span><span class="op">.</span><span class="nam">host_location</span><span class="op">.</span><span class="nam">keys</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">len</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span><span class="op">)</span> <span class="op">==</span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"> <span class="com"># If only one location is allowed, use that location.</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span><span class="op">.</span><span class="nam">values</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm run hide_run"> <span class="nam">retry_context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span><span class="op">.</span><span class="nam">keys</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"> <span class="com"># If multiple locations are possible, choose based on the location mode.</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">host_locations</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">location_mode</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm run hide_run"> <span class="nam">retry_context</span><span class="op">.</span><span class="nam">location_mode</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">location_mode</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t188" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_perform_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">parser</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">parser_args</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t190" class="pln"><span class="str"> Sends the request and return response. Catches HTTPError and hands it</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="pln"><span class="str"> to error handler</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="stm run hide_run"> <span class="nam">operation_context</span> <span class="op">=</span> <span class="nam">operation_context</span> <span class="key">or</span> <span class="nam">_OperationContext</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="stm run hide_run"> <span class="nam">retry_context</span> <span class="op">=</span> <span class="nam">RetryContext</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"> <span class="com"># Apply the appropriate host based on the location mode</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_apply_host</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">,</span> <span class="nam">retry_context</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"> <span class="com"># Apply common settings to the request</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="stm run hide_run"> <span class="nam">_update_request</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t202" class="stm run hide_run"> <span class="key">while</span> <span class="op">(</span><span class="key">True</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"> <span class="com"># Execute the request callback </span><span class="strut">&nbsp;</span></p>
<p id="t206" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">request_callback</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">request_callback</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"> <span class="com"># Add date and auth after the callback so date doesn't get too old and </span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"> <span class="com"># authentication is still correct if signed headers are added in the request </span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"> <span class="com"># callback. This also ensures retry policies with long back offs </span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"> <span class="com"># will work as it resets the time sensitive headers.</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="stm run hide_run"> <span class="nam">_add_date_header</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">sign_request</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"> <span class="com"># Set the request context</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="stm run hide_run"> <span class="nam">retry_context</span><span class="op">.</span><span class="nam">request</span> <span class="op">=</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"> <span class="com"># Perform the request</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="stm run hide_run"> <span class="nam">response</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_httpclient</span><span class="op">.</span><span class="nam">perform_request</span><span class="op">(</span><span class="nam">request</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"> <span class="com"># Execute the response callback</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">response_callback</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">response_callback</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"> <span class="com"># Set the response context</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="stm run hide_run"> <span class="nam">retry_context</span><span class="op">.</span><span class="nam">response</span> <span class="op">=</span> <span class="nam">response</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"> <span class="com"># Parse and wrap HTTP errors in AzureHttpError which inherits from AzureException</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="stm run hide_run"> <span class="key">if</span> <span class="nam">response</span><span class="op">.</span><span class="nam">status</span> <span class="op">>=</span> <span class="num">300</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"> <span class="com"># This exception will be caught by the general error handler</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"> <span class="com"># and raised as an azure http exception</span><span class="strut">&nbsp;</span></p>
<p id="t233" class="stm run hide_run"> <span class="nam">_http_error_handler</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"> <span class="nam">HTTPError</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">status</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"> <span class="com"># Parse the response</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="stm run hide_run"> <span class="key">if</span> <span class="nam">parser</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="stm run hide_run"> <span class="key">if</span> <span class="nam">parser_args</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="stm run hide_run"> <span class="nam">args</span> <span class="op">=</span> <span class="op">[</span><span class="nam">response</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="stm run hide_run"> <span class="nam">args</span><span class="op">.</span><span class="nam">extend</span><span class="op">(</span><span class="nam">parser_args</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="stm run hide_run"> <span class="key">return</span> <span class="nam">parser</span><span class="op">(</span><span class="op">*</span><span class="nam">args</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="stm run hide_run"> <span class="key">return</span> <span class="nam">parser</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="stm run hide_run"> <span class="key">return</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="stm run hide_run"> <span class="key">except</span> <span class="nam">AzureException</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t247" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ex</span><span class="strut">&nbsp;</span></p>
<p id="t248" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t249" class="stm par run hide_run"><span class="annotate short">249&#x202F;&#x219B;&#x202F;257</span><span class="annotate long">line 249 didn't jump to line 257, because the condition on line 249 was never false</span> <span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">>=</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t250" class="pln"> <span class="com"># Automatic chaining in Python 3 means we keep the trace</span><span class="strut">&nbsp;</span></p>
<p id="t251" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">AzureException</span><span class="op">(</span><span class="nam">ex</span><span class="op">.</span><span class="nam">args</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t252" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="pln"> <span class="com"># There isn't a good solution in 2 for keeping the stack trace </span><span class="strut">&nbsp;</span></p>
<p id="t254" class="pln"> <span class="com"># in general, or that will not result in an error in 3</span><span class="strut">&nbsp;</span></p>
<p id="t255" class="pln"> <span class="com"># However, we can keep the previous error type and message</span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln"> <span class="com"># TODO: In the future we will log the trace</span><span class="strut">&nbsp;</span></p>
<p id="t257" class="stm mis"> <span class="nam">msg</span> <span class="op">=</span> <span class="str">""</span><span class="strut">&nbsp;</span></p>
<p id="t258" class="stm mis"> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">ex</span><span class="op">.</span><span class="nam">args</span><span class="op">)</span> <span class="op">></span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="stm mis"> <span class="nam">msg</span> <span class="op">=</span> <span class="nam">ex</span><span class="op">.</span><span class="nam">args</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t260" class="stm mis"> <span class="key">raise</span> <span class="nam">AzureException</span><span class="op">(</span><span class="str">'{}: {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">ex</span><span class="op">.</span><span class="nam">__class__</span><span class="op">.</span><span class="nam">__name__</span><span class="op">,</span> <span class="nam">msg</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t261" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t262" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t263" class="stm run hide_run"> <span class="key">except</span> <span class="nam">AzureException</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="pln"> <span class="com"># Decryption failures (invalid objects, invalid algorithms, data unencrypted in strict mode, etc)</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="pln"> <span class="com"># will not be resolved with retries.</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="stm run hide_run"> <span class="key">if</span> <span class="nam">str</span><span class="op">(</span><span class="nam">ex</span><span class="op">)</span> <span class="op">==</span> <span class="nam">_ERROR_DECRYPTION_FAILURE</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t267" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ex</span><span class="strut">&nbsp;</span></p>
<p id="t268" class="pln"> <span class="com"># Determine whether a retry should be performed and if so, how </span><span class="strut">&nbsp;</span></p>
<p id="t269" class="pln"> <span class="com"># long to wait before performing retry.</span><span class="strut">&nbsp;</span></p>
<p id="t270" class="stm run hide_run"> <span class="nam">retry_interval</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">retry</span><span class="op">(</span><span class="nam">retry_context</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t271" class="stm run hide_run"> <span class="key">if</span> <span class="nam">retry_interval</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t272" class="pln"> <span class="com"># Execute the callback</span><span class="strut">&nbsp;</span></p>
<p id="t273" class="stm run hide_run"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">retry_callback</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t274" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">retry_callback</span><span class="op">(</span><span class="nam">retry_context</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t275" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t276" class="pln"> <span class="com"># Sleep for the desired retry interval</span><span class="strut">&nbsp;</span></p>
<p id="t277" class="stm run hide_run"> <span class="nam">sleep</span><span class="op">(</span><span class="nam">retry_interval</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t278" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t279" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ex</span><span class="strut">&nbsp;</span></p>
<p id="t280" class="pln"> <span class="key">finally</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t281" class="pln"> <span class="com"># If this is a location locked operation and the location is not set, </span><span class="strut">&nbsp;</span></p>
<p id="t282" class="pln"> <span class="com"># this is the first request of that operation. Set the location to </span><span class="strut">&nbsp;</span></p>
<p id="t283" class="pln"> <span class="com"># be used for subsequent requests in the operation.</span><span class="strut">&nbsp;</span></p>
<p id="t284" class="stm run hide_run"> <span class="key">if</span> <span class="nam">operation_context</span><span class="op">.</span><span class="nam">location_lock</span> <span class="key">and</span> <span class="key">not</span> <span class="nam">operation_context</span><span class="op">.</span><span class="nam">host_location</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t285" class="stm run hide_run"> <span class="nam">operation_context</span><span class="op">.</span><span class="nam">host_location</span> <span class="op">=</span> <span class="op">{</span><span class="nam">retry_context</span><span class="op">.</span><span class="nam">location_mode</span><span class="op">:</span> <span class="nam">request</span><span class="op">.</span><span class="nam">host</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
1 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">1 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="nam">__import__</span><span class="op">(</span><span class="str">'pkg_resources'</span><span class="op">)</span><span class="op">.</span><span class="nam">declare_namespace</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,93 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
1 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">1 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="nam">__import__</span><span class="op">(</span><span class="str">'pkg_resources'</span><span class="op">)</span><span class="op">.</span><span class="nam">declare_namespace</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,147 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/file/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/file/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
2 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">2 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">fileservice</span> <span class="key">import</span> <span class="nam">FileService</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="nam">Share</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="nam">ShareProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="nam">File</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"> <span class="nam">FileProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="nam">Directory</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">DirectoryProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">FileRange</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">ContentSettings</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">CopyProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">SharePermissions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">FilePermissions</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,569 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/file/_deserialization.py: 85%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/file/_deserialization.py</b> :
<span class="pc_cov">85%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
91 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">81 run</span>
<span class="mis shortkey_m button_toggle_mis">10 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">8 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm mis"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="stm par run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="stm mis"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm par run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm mis"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm par run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm mis"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm par run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm mis"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm par run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm mis"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="stm run hide_run"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="stm run hide_run"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="stm run hide_run"><a href="#n127">127</a></p>
<p id="n128" class="stm run hide_run"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="stm run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm run hide_run"><a href="#n133">133</a></p>
<p id="n134" class="stm run hide_run"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="stm run hide_run"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="pln"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="stm run hide_run"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="pln"><a href="#n153">153</a></p>
<p id="n154" class="pln"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="pln"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="stm par run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="stm mis"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="stm run hide_run"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="stm run hide_run"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="stm run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="stm run hide_run"><a href="#n177">177</a></p>
<p id="n178" class="stm run hide_run"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="stm run hide_run"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="stm run hide_run"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="stm run hide_run"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="stm run hide_run"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="pln"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="stm run hide_run"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="stm run hide_run"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="stm run hide_run"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="pln"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="stm par run hide_run"><a href="#n212">212</a></p>
<p id="n213" class="stm mis"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="stm run hide_run"><a href="#n215">215</a></p>
<p id="n216" class="stm run hide_run"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="stm run hide_run"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="stm run hide_run"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="stm run hide_run"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="stm run hide_run"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="pln"><a href="#n227">227</a></p>
<p id="n228" class="stm run hide_run"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="stm par run hide_run"><a href="#n235">235</a></p>
<p id="n236" class="stm mis"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="stm run hide_run"><a href="#n238">238</a></p>
<p id="n239" class="stm run hide_run"><a href="#n239">239</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">dateutil</span> <span class="key">import</span> <span class="nam">parser</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">cElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm mis"><span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="key">from</span> <span class="nam">xml</span><span class="op">.</span><span class="nam">etree</span> <span class="key">import</span> <span class="nam">ElementTree</span> <span class="key">as</span> <span class="nam">ETree</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">from</span> <span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">Share</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">Directory</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">File</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">FileProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">FileRange</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">ShareProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">DirectoryProperties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">_list</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_deserialization</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">_parse_properties</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">_parse_metadata</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="nam">_validate_content_match</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">_get_content_md5</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">_to_str</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_share</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm par run hide_run"><span class="annotate short">45&#x202F;&#x219B;&#x202F;46</span><span class="annotate long">line 45 didn't jump to line 46, because the condition on line 45 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">_parse_metadata</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"> <span class="nam">props</span> <span class="op">=</span> <span class="nam">_parse_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">ShareProperties</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">return</span> <span class="nam">Share</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">props</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_directory</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm par run hide_run"><span class="annotate short">54&#x202F;&#x219B;&#x202F;55</span><span class="annotate long">line 54 didn't jump to line 55, because the condition on line 54 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">_parse_metadata</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">props</span> <span class="op">=</span> <span class="nam">_parse_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">DirectoryProperties</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="key">return</span> <span class="nam">Directory</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">props</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"><span class="key">def</span> <span class="nam">_parse_file</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">=</span><span class="key">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm par run hide_run"><span class="annotate short">63&#x202F;&#x219B;&#x202F;64</span><span class="annotate long">line 63 didn't jump to line 64, because the condition on line 63 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">_parse_metadata</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"> <span class="nam">props</span> <span class="op">=</span> <span class="nam">_parse_properties</span><span class="op">(</span><span class="nam">response</span><span class="op">,</span> <span class="nam">FileProperties</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"> <span class="com"># For range gets, only look at 'x-ms-content-md5' for overall MD5</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="nam">content_settings</span> <span class="op">=</span> <span class="nam">getattr</span><span class="op">(</span><span class="nam">props</span><span class="op">,</span> <span class="str">'content_settings'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="key">if</span> <span class="str">'content-range'</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm par run hide_run"><span class="annotate short">72&#x202F;&#x219B;&#x202F;73</span><span class="annotate long">line 72 didn't jump to line 73, because the condition on line 72 was never true</span> <span class="key">if</span> <span class="str">'x-ms-content-md5'</span> <span class="key">in</span> <span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm mis"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">content_settings</span><span class="op">,</span> <span class="str">'content_md5'</span><span class="op">,</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-content-md5'</span><span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">delattr</span><span class="op">(</span><span class="nam">content_settings</span><span class="op">,</span> <span class="str">'content_md5'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="key">if</span> <span class="nam">validate_content</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">computed_md5</span> <span class="op">=</span> <span class="nam">_get_content_md5</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="nam">_validate_content_match</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'content-md5'</span><span class="op">]</span><span class="op">,</span> <span class="nam">computed_md5</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="key">return</span> <span class="nam">File</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">,</span> <span class="nam">props</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_shares</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str"> &lt;EnumerationResults AccountName="https://myaccount.file.core.windows.net"></span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> &lt;Prefix>string-value&lt;/Prefix></span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str"> &lt;Marker>string-value&lt;/Marker></span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="str"> &lt;MaxResults>int-value&lt;/MaxResults></span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="str"> &lt;Shares></span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="str"> &lt;Share></span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="str"> &lt;Name>share-name&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="str"> &lt;Properties></span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="str"> &lt;Last-Modified>date/time-value&lt;/Last-Modified></span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="str"> &lt;Etag>etag&lt;/Etag></span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="str"> &lt;Quota>max-share-size&lt;/Quota></span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="str"> &lt;/Properties></span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="str"> &lt;Metadata></span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="str"> &lt;metadata-name>value&lt;/metadata-name></span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="str"> &lt;/Metadata></span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="str"> &lt;/Share></span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> &lt;/Shares></span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="str"> &lt;NextMarker>marker-value&lt;/NextMarker></span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="str"> &lt;/EnumerationResults></span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm par run hide_run"><span class="annotate short">107&#x202F;&#x219B;&#x202F;108</span><span class="annotate long">line 107 didn't jump to line 108, because the condition on line 107 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">shares</span> <span class="op">=</span> <span class="nam">_list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"> <span class="com"># Set next marker</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="nam">next_marker</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'NextMarker'</span><span class="op">)</span> <span class="key">or</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">shares</span><span class="op">,</span> <span class="str">'next_marker'</span><span class="op">,</span> <span class="nam">next_marker</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="nam">shares_element</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Shares'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="key">for</span> <span class="nam">share_element</span> <span class="key">in</span> <span class="nam">shares_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Share'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"> <span class="com"># Name element</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="nam">share</span> <span class="op">=</span> <span class="nam">Share</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm run hide_run"> <span class="nam">share</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">share_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"> <span class="com"># Metadata</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm run hide_run"> <span class="nam">metadata_root_element</span> <span class="op">=</span> <span class="nam">share_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Metadata'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"> <span class="key">if</span> <span class="nam">metadata_root_element</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="stm run hide_run"> <span class="nam">share</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm run hide_run"> <span class="key">for</span> <span class="nam">metadata_element</span> <span class="key">in</span> <span class="nam">metadata_root_element</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="nam">share</span><span class="op">.</span><span class="nam">metadata</span><span class="op">[</span><span class="nam">metadata_element</span><span class="op">.</span><span class="nam">tag</span><span class="op">]</span> <span class="op">=</span> <span class="nam">metadata_element</span><span class="op">.</span><span class="nam">text</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"> <span class="com"># Properties</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm run hide_run"> <span class="nam">properties_element</span> <span class="op">=</span> <span class="nam">share_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Properties'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm run hide_run"> <span class="nam">share</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse</span><span class="op">(</span><span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Last-Modified'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="stm run hide_run"> <span class="nam">share</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Etag'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="nam">share</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">quota</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Quota'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"> <span class="com"># Add share to list</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm run hide_run"> <span class="nam">shares</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">share</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="key">return</span> <span class="nam">shares</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_directories_and_files</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"><span class="str"> &lt;EnumerationResults ServiceEndpoint="https://myaccount.file.core.windows.net/" ShareName="myshare" DirectoryPath="directory-path"></span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"><span class="str"> &lt;Marker>string-value&lt;/Marker></span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="str"> &lt;MaxResults>int-value&lt;/MaxResults></span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"><span class="str"> &lt;Entries></span><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"><span class="str"> &lt;File></span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="str"> &lt;Name>file-name&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"><span class="str"> &lt;Properties></span><span class="strut">&nbsp;</span></p>
<p id="t153" class="pln"><span class="str"> &lt;Content-Length>size-in-bytes&lt;/Content-Length></span><span class="strut">&nbsp;</span></p>
<p id="t154" class="pln"><span class="str"> &lt;/Properties></span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"><span class="str"> &lt;/File></span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"><span class="str"> &lt;Directory></span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="str"> &lt;Name>directory-name&lt;/Name></span><span class="strut">&nbsp;</span></p>
<p id="t158" class="pln"><span class="str"> &lt;/Directory></span><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="str"> &lt;/Entries></span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="str"> &lt;NextMarker /></span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"><span class="str"> &lt;/EnumerationResults></span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm par run hide_run"><span class="annotate short">163&#x202F;&#x219B;&#x202F;164</span><span class="annotate long">line 163 didn't jump to line 164, because the condition on line 163 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="nam">entries</span> <span class="op">=</span> <span class="nam">_list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm run hide_run"> <span class="nam">list_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"> <span class="com"># Set next marker</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="stm run hide_run"> <span class="nam">next_marker</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'NextMarker'</span><span class="op">)</span> <span class="key">or</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">entries</span><span class="op">,</span> <span class="str">'next_marker'</span><span class="op">,</span> <span class="nam">next_marker</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="nam">entries_element</span> <span class="op">=</span> <span class="nam">list_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Entries'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm run hide_run"> <span class="key">for</span> <span class="nam">file_element</span> <span class="key">in</span> <span class="nam">entries_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'File'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"> <span class="com"># Name element</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="stm run hide_run"> <span class="nam">file</span> <span class="op">=</span> <span class="nam">File</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="stm run hide_run"> <span class="nam">file</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">file_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"> <span class="com"># Properties</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="nam">properties_element</span> <span class="op">=</span> <span class="nam">file_element</span><span class="op">.</span><span class="nam">find</span><span class="op">(</span><span class="str">'Properties'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm run hide_run"> <span class="nam">file</span><span class="op">.</span><span class="nam">properties</span><span class="op">.</span><span class="nam">content_length</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">properties_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Content-Length'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"> <span class="com"># Add file to list</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="stm run hide_run"> <span class="nam">entries</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">file</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t187" class="stm run hide_run"> <span class="key">for</span> <span class="nam">directory_element</span> <span class="key">in</span> <span class="nam">entries_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Directory'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"> <span class="com"># Name element</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="stm run hide_run"> <span class="nam">directory</span> <span class="op">=</span> <span class="nam">Directory</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"> <span class="nam">directory</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">directory_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Name'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"> <span class="com"># Add directory to list</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="stm run hide_run"> <span class="nam">entries</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">directory</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t195" class="stm run hide_run"> <span class="key">return</span> <span class="nam">entries</span><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t198" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_ranges</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="str"> &lt;Ranges></span><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"><span class="str"> &lt;Range></span><span class="strut">&nbsp;</span></p>
<p id="t203" class="pln"><span class="str"> &lt;Start>Start Byte&lt;/Start></span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"><span class="str"> &lt;End>End Byte&lt;/End></span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="str"> &lt;/Range></span><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"><span class="str"> &lt;Range></span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"><span class="str"> &lt;Start>Start Byte&lt;/Start></span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="str"> &lt;End>End Byte&lt;/End></span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="str"> &lt;/Range></span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="str"> &lt;/Ranges></span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="stm par run hide_run"><span class="annotate short">212&#x202F;&#x219B;&#x202F;213</span><span class="annotate long">line 212 didn't jump to line 213, because the condition on line 212 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t215" class="stm run hide_run"> <span class="nam">ranges</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="stm run hide_run"> <span class="nam">ranges_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t218" class="stm run hide_run"> <span class="key">for</span> <span class="nam">range_element</span> <span class="key">in</span> <span class="nam">ranges_element</span><span class="op">.</span><span class="nam">findall</span><span class="op">(</span><span class="str">'Range'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"> <span class="com"># Parse range</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="stm run hide_run"> <span class="nam">range</span> <span class="op">=</span> <span class="nam">FileRange</span><span class="op">(</span><span class="nam">int</span><span class="op">(</span><span class="nam">range_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'Start'</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> <span class="nam">int</span><span class="op">(</span><span class="nam">range_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'End'</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"> <span class="com"># Add range to list</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="stm run hide_run"> <span class="nam">ranges</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t225" class="stm run hide_run"> <span class="key">return</span> <span class="nam">ranges</span><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t227" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t228" class="stm run hide_run"><span class="key">def</span> <span class="nam">_convert_xml_to_share_stats</span><span class="op">(</span><span class="nam">response</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"><span class="str"> &lt;?xml version="1.0" encoding="utf-8"?></span><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"><span class="str"> &lt;ShareStats></span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"><span class="str"> &lt;ShareUsage>15&lt;/ShareUsage></span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"><span class="str"> &lt;/ShareStats></span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="stm par run hide_run"><span class="annotate short">235&#x202F;&#x219B;&#x202F;236</span><span class="annotate long">line 235 didn't jump to line 236, because the condition on line 235 was never true</span> <span class="key">if</span> <span class="nam">response</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">response</span><span class="op">.</span><span class="nam">body</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="stm mis"> <span class="key">return</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t238" class="stm run hide_run"> <span class="nam">share_stats_element</span> <span class="op">=</span> <span class="nam">ETree</span><span class="op">.</span><span class="nam">fromstring</span><span class="op">(</span><span class="nam">response</span><span class="op">.</span><span class="nam">body</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="stm run hide_run"> <span class="key">return</span> <span class="nam">int</span><span class="op">(</span><span class="nam">share_stats_element</span><span class="op">.</span><span class="nam">findtext</span><span class="op">(</span><span class="str">'ShareUsage'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,317 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/file/_download_chunking.py: 16%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/file/_download_chunking.py</b> :
<span class="pc_cov">16%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
54 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">10 run</span>
<span class="mis shortkey_m button_toggle_mis">44 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm mis"><a href="#n24">24</a></p>
<p id="n25" class="stm mis"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm mis"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="stm mis"><a href="#n44">44</a></p>
<p id="n45" class="stm mis"><a href="#n45">45</a></p>
<p id="n46" class="stm mis"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm mis"><a href="#n53">53</a></p>
<p id="n54" class="stm mis"><a href="#n54">54</a></p>
<p id="n55" class="stm mis"><a href="#n55">55</a></p>
<p id="n56" class="stm mis"><a href="#n56">56</a></p>
<p id="n57" class="stm mis"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="stm mis"><a href="#n59">59</a></p>
<p id="n60" class="stm mis"><a href="#n60">60</a></p>
<p id="n61" class="stm mis"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="stm mis"><a href="#n63">63</a></p>
<p id="n64" class="stm mis"><a href="#n64">64</a></p>
<p id="n65" class="stm mis"><a href="#n65">65</a></p>
<p id="n66" class="stm mis"><a href="#n66">66</a></p>
<p id="n67" class="stm mis"><a href="#n67">67</a></p>
<p id="n68" class="stm mis"><a href="#n68">68</a></p>
<p id="n69" class="stm mis"><a href="#n69">69</a></p>
<p id="n70" class="stm mis"><a href="#n70">70</a></p>
<p id="n71" class="stm mis"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm mis"><a href="#n74">74</a></p>
<p id="n75" class="stm mis"><a href="#n75">75</a></p>
<p id="n76" class="stm mis"><a href="#n76">76</a></p>
<p id="n77" class="stm mis"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm mis"><a href="#n80">80</a></p>
<p id="n81" class="stm mis"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm mis"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="stm mis"><a href="#n85">85</a></p>
<p id="n86" class="stm mis"><a href="#n86">86</a></p>
<p id="n87" class="stm mis"><a href="#n87">87</a></p>
<p id="n88" class="stm mis"><a href="#n88">88</a></p>
<p id="n89" class="stm mis"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="stm mis"><a href="#n92">92</a></p>
<p id="n93" class="stm mis"><a href="#n93">93</a></p>
<p id="n94" class="stm mis"><a href="#n94">94</a></p>
<p id="n95" class="stm mis"><a href="#n95">95</a></p>
<p id="n96" class="stm mis"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm mis"><a href="#n99">99</a></p>
<p id="n100" class="stm mis"><a href="#n100">100</a></p>
<p id="n101" class="stm mis"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="stm mis"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">threading</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="nam">_ERROR_NO_SINGLE_THREAD_CHUNKING</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">def</span> <span class="nam">_download_file_chunks</span><span class="op">(</span><span class="nam">file_service</span><span class="op">,</span> <span class="nam">share_name</span><span class="op">,</span> <span class="nam">directory_name</span><span class="op">,</span> <span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="nam">download_size</span><span class="op">,</span> <span class="nam">block_size</span><span class="op">,</span> <span class="nam">progress</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">stream</span><span class="op">,</span> <span class="nam">max_connections</span><span class="op">,</span> <span class="nam">progress_callback</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">timeout</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm mis"> <span class="key">if</span> <span class="nam">max_connections</span> <span class="op">&lt;=</span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_NO_SINGLE_THREAD_CHUNKING</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="str">'file'</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm mis"> <span class="nam">downloader</span> <span class="op">=</span> <span class="nam">_FileChunkDownloader</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">file_service</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">share_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">directory_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">download_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">block_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">progress</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">start_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">end_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">stream</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">progress_callback</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">timeout</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">operation_context</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm mis"> <span class="key">import</span> <span class="nam">concurrent</span><span class="op">.</span><span class="nam">futures</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm mis"> <span class="nam">executor</span> <span class="op">=</span> <span class="nam">concurrent</span><span class="op">.</span><span class="nam">futures</span><span class="op">.</span><span class="nam">ThreadPoolExecutor</span><span class="op">(</span><span class="nam">max_connections</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm mis"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">executor</span><span class="op">.</span><span class="nam">map</span><span class="op">(</span><span class="nam">downloader</span><span class="op">.</span><span class="nam">process_chunk</span><span class="op">,</span> <span class="nam">downloader</span><span class="op">.</span><span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"><span class="key">class</span> <span class="nam">_FileChunkDownloader</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">file_service</span><span class="op">,</span> <span class="nam">share_name</span><span class="op">,</span> <span class="nam">directory_name</span><span class="op">,</span> <span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"> <span class="nam">download_size</span><span class="op">,</span> <span class="nam">chunk_size</span><span class="op">,</span> <span class="nam">progress</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="nam">stream</span><span class="op">,</span> <span class="nam">progress_callback</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">,</span> <span class="nam">timeout</span><span class="op">,</span> <span class="nam">operation_context</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_service</span> <span class="op">=</span> <span class="nam">file_service</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">share_name</span> <span class="op">=</span> <span class="nam">share_name</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">directory_name</span> <span class="op">=</span> <span class="nam">directory_name</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_name</span> <span class="op">=</span> <span class="nam">file_name</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span> <span class="op">=</span> <span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">download_size</span> <span class="op">=</span> <span class="nam">download_size</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">start_index</span> <span class="op">=</span> <span class="nam">start_range</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_end</span> <span class="op">=</span> <span class="nam">end_range</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span> <span class="op">=</span> <span class="nam">stream</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_start</span> <span class="op">=</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">tell</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span> <span class="op">=</span> <span class="nam">threading</span><span class="op">.</span><span class="nam">Lock</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span> <span class="op">=</span> <span class="nam">progress_callback</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">=</span> <span class="nam">progress</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span> <span class="op">=</span> <span class="nam">threading</span><span class="op">.</span><span class="nam">Lock</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">validate_content</span> <span class="op">=</span> <span class="nam">validate_content</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span> <span class="op">=</span> <span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">operation_context</span> <span class="op">=</span> <span class="nam">operation_context</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm mis"> <span class="nam">index</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">start_index</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm mis"> <span class="key">while</span> <span class="nam">index</span> <span class="op">&lt;</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_end</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm mis"> <span class="key">yield</span> <span class="nam">index</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm mis"> <span class="nam">index</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="key">def</span> <span class="nam">process_chunk</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm mis"> <span class="key">if</span> <span class="nam">chunk_start</span> <span class="op">+</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span> <span class="op">></span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_end</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm mis"> <span class="nam">chunk_end</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_end</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm mis"> <span class="nam">chunk_end</span> <span class="op">=</span> <span class="nam">chunk_start</span> <span class="op">+</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm mis"> <span class="nam">chunk_data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_download_chunk</span><span class="op">(</span><span class="nam">chunk_start</span><span class="op">,</span> <span class="nam">chunk_end</span><span class="op">)</span><span class="op">.</span><span class="nam">content</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm mis"> <span class="nam">length</span> <span class="op">=</span> <span class="nam">chunk_end</span> <span class="op">-</span> <span class="nam">chunk_start</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm mis"> <span class="key">if</span> <span class="nam">length</span> <span class="op">></span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_write_to_stream</span><span class="op">(</span><span class="nam">chunk_data</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_update_progress</span><span class="op">(</span><span class="nam">length</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_update_progress</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">length</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm mis"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm mis"> <span class="key">with</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">+=</span> <span class="nam">length</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm mis"> <span class="nam">total</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span><span class="op">(</span><span class="nam">total</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">download_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_write_to_stream</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_data</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm mis"> <span class="key">with</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">seek</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">stream_start</span> <span class="op">+</span> <span class="op">(</span><span class="nam">chunk_start</span> <span class="op">-</span> <span class="nam">self</span><span class="op">.</span><span class="nam">start_index</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">chunk_data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_download_chunk</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">,</span> <span class="nam">chunk_end</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm mis"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_service</span><span class="op">.</span><span class="nam">_get_file</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">share_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">directory_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"> <span class="nam">start_range</span><span class="op">=</span><span class="nam">chunk_start</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="nam">end_range</span><span class="op">=</span><span class="nam">chunk_end</span> <span class="op">-</span> <span class="num">1</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"> <span class="nam">validate_content</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"> <span class="nam">timeout</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"> <span class="nam">_context</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">operation_context</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,241 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/file/_serialization.py: 88%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/file/_serialization.py</b> :
<span class="pc_cov">88%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
28 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">25 run</span>
<span class="mis shortkey_m button_toggle_mis">3 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">3 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm par run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm mis"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm par run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm mis"><a href="#n71">71</a></p>
<p id="n72" class="stm par run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm mis"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="nam">_str</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_error</span> <span class="key">import</span> <span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="nam">_validate_not_none</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="nam">_ERROR_START_END_NEEDED_FOR_MD5</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="nam">_ERROR_RANGE_TOO_LARGE_FOR_MD5</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_path</span><span class="op">(</span><span class="nam">share_name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">directory_name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">file_name</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="str"> Creates the path to access a file resource.</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="str"> share_name:</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="str"> Name of share.</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="str"> directory_name:</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="str"> The path to the directory.</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="str"> file_name:</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="str"> Name of file.</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="key">if</span> <span class="nam">share_name</span> <span class="key">and</span> <span class="nam">directory_name</span> <span class="key">and</span> <span class="nam">file_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/{0}/{1}/{2}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">share_name</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">directory_name</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">file_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">share_name</span> <span class="key">and</span> <span class="nam">directory_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/{0}/{1}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">share_name</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">directory_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">share_name</span> <span class="key">and</span> <span class="nam">file_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/{0}/{1}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">share_name</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="nam">_str</span><span class="op">(</span><span class="nam">file_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"> <span class="key">elif</span> <span class="nam">share_name</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/{0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">_str</span><span class="op">(</span><span class="nam">share_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">return</span> <span class="str">'/'</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"><span class="key">def</span> <span class="nam">_validate_and_format_range_headers</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">,</span> <span class="nam">start_range_required</span><span class="op">=</span><span class="key">True</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"> <span class="nam">end_range_required</span><span class="op">=</span><span class="key">True</span><span class="op">,</span> <span class="nam">check_content_md5</span><span class="op">=</span><span class="key">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"> <span class="com"># If end range is provided, start range must be provided</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="key">if</span> <span class="nam">start_range_required</span> <span class="op">==</span> <span class="key">True</span> <span class="key">or</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'start_range'</span><span class="op">,</span> <span class="nam">start_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="key">if</span> <span class="nam">end_range_required</span> <span class="op">==</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="nam">_validate_not_none</span><span class="op">(</span><span class="str">'end_range'</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="com"># Format based on whether end_range is present</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="key">or</span> <span class="op">{</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="key">if</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-range'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'bytes={0}-{1}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">start_range</span><span class="op">,</span> <span class="nam">end_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm par run hide_run"><span class="annotate short">65&#x202F;&#x219B;&#x202F;66</span><span class="annotate long">line 65 didn't jump to line 66, because the condition on line 65 was never true</span> <span class="key">elif</span> <span class="nam">start_range</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm mis"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-range'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'bytes={0}-'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">start_range</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="com"># Content MD5 can only be provided for a complete range less than 4MB in size</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="key">if</span> <span class="nam">check_content_md5</span> <span class="op">==</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm par run hide_run"><span class="annotate short">70&#x202F;&#x219B;&#x202F;71</span><span class="annotate long">line 70 didn't jump to line 71, because the condition on line 70 was never true</span> <span class="key">if</span> <span class="nam">start_range</span> <span class="key">is</span> <span class="key">None</span> <span class="key">or</span> <span class="nam">end_range</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_START_END_NEEDED_FOR_MD5</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm par run hide_run"><span class="annotate short">72&#x202F;&#x219B;&#x202F;73</span><span class="annotate long">line 72 didn't jump to line 73, because the condition on line 72 was never true</span> <span class="key">if</span> <span class="nam">end_range</span> <span class="op">-</span> <span class="nam">start_range</span> <span class="op">></span> <span class="num">4</span> <span class="op">*</span> <span class="num">1024</span> <span class="op">*</span> <span class="num">1024</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="nam">_ERROR_RANGE_TOO_LARGE_FOR_MD5</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="str">'x-ms-range-get-content-md5'</span><span class="op">]</span> <span class="op">=</span> <span class="str">'true'</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -1,375 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/file/_upload_chunking.py: 57%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/file/_upload_chunking.py</b> :
<span class="pc_cov">57%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
81 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">52 run</span>
<span class="mis shortkey_m button_toggle_mis">29 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">6 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm par run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="stm mis"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm par run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm mis"><a href="#n43">43</a></p>
<p id="n44" class="stm mis"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="stm mis"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm par run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="stm mis"><a href="#n75">75</a></p>
<p id="n76" class="stm mis"><a href="#n76">76</a></p>
<p id="n77" class="stm mis"><a href="#n77">77</a></p>
<p id="n78" class="stm mis"><a href="#n78">78</a></p>
<p id="n79" class="stm mis"><a href="#n79">79</a></p>
<p id="n80" class="stm mis"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm par run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="stm mis"><a href="#n94">94</a></p>
<p id="n95" class="stm mis"><a href="#n95">95</a></p>
<p id="n96" class="stm mis"><a href="#n96">96</a></p>
<p id="n97" class="stm mis"><a href="#n97">97</a></p>
<p id="n98" class="stm mis"><a href="#n98">98</a></p>
<p id="n99" class="stm mis"><a href="#n99">99</a></p>
<p id="n100" class="stm mis"><a href="#n100">100</a></p>
<p id="n101" class="stm mis"><a href="#n101">101</a></p>
<p id="n102" class="stm mis"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="stm mis"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm mis"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="stm par run hide_run"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="stm mis"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm par run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm mis"><a href="#n119">119</a></p>
<p id="n120" class="stm mis"><a href="#n120">120</a></p>
<p id="n121" class="stm mis"><a href="#n121">121</a></p>
<p id="n122" class="stm mis"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm mis"><a href="#n124">124</a></p>
<p id="n125" class="stm mis"><a href="#n125">125</a></p>
<p id="n126" class="stm mis"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="stm run hide_run"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="stm run hide_run"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">import</span> <span class="nam">threading</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">def</span> <span class="nam">_upload_file_chunks</span><span class="op">(</span><span class="nam">file_service</span><span class="op">,</span> <span class="nam">share_name</span><span class="op">,</span> <span class="nam">directory_name</span><span class="op">,</span> <span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="nam">file_size</span><span class="op">,</span> <span class="nam">block_size</span><span class="op">,</span> <span class="nam">stream</span><span class="op">,</span> <span class="nam">max_connections</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"> <span class="nam">progress_callback</span><span class="op">,</span> <span class="nam">validate_content</span><span class="op">,</span> <span class="nam">timeout</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"> <span class="nam">uploader</span> <span class="op">=</span> <span class="nam">_FileChunkUploader</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">file_service</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">share_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="nam">directory_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">file_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="nam">block_size</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">stream</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">max_connections</span> <span class="op">></span> <span class="num">1</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">progress_callback</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm par run hide_run"><span class="annotate short">35&#x202F;&#x219B;&#x202F;36</span><span class="annotate long">line 35 didn't jump to line 36, because the condition on line 35 was never true</span> <span class="key">if</span> <span class="nam">progress_callback</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm mis"> <span class="nam">progress_callback</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="nam">file_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm par run hide_run"><span class="annotate short">38&#x202F;&#x219B;&#x202F;43</span><span class="annotate long">line 38 didn't jump to line 43, because the condition on line 38 was never false</span> <span class="key">if</span> <span class="nam">max_connections</span> <span class="op">></span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="key">import</span> <span class="nam">concurrent</span><span class="op">.</span><span class="nam">futures</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="nam">executor</span> <span class="op">=</span> <span class="nam">concurrent</span><span class="op">.</span><span class="nam">futures</span><span class="op">.</span><span class="nam">ThreadPoolExecutor</span><span class="op">(</span><span class="nam">max_connections</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"> <span class="nam">range_ids</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">executor</span><span class="op">.</span><span class="nam">map</span><span class="op">(</span><span class="nam">uploader</span><span class="op">.</span><span class="nam">process_chunk</span><span class="op">,</span> <span class="nam">uploader</span><span class="op">.</span><span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm mis"> <span class="key">if</span> <span class="nam">file_size</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm mis"> <span class="nam">range_ids</span> <span class="op">=</span> <span class="op">[</span><span class="nam">uploader</span><span class="op">.</span><span class="nam">process_chunk</span><span class="op">(</span><span class="nam">start</span><span class="op">)</span> <span class="key">for</span> <span class="nam">start</span> <span class="key">in</span> <span class="nam">uploader</span><span class="op">.</span><span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="op">)</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm mis"> <span class="nam">range_ids</span> <span class="op">=</span> <span class="nam">uploader</span><span class="op">.</span><span class="nam">process_all_unknown_size</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">return</span> <span class="nam">range_ids</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"><span class="key">class</span> <span class="nam">_FileChunkUploader</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">file_service</span><span class="op">,</span> <span class="nam">share_name</span><span class="op">,</span> <span class="nam">directory_name</span><span class="op">,</span> <span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"> <span class="nam">file_size</span><span class="op">,</span> <span class="nam">chunk_size</span><span class="op">,</span> <span class="nam">stream</span><span class="op">,</span> <span class="nam">parallel</span><span class="op">,</span> <span class="nam">progress_callback</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"> <span class="nam">validate_content</span><span class="op">,</span> <span class="nam">timeout</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_service</span> <span class="op">=</span> <span class="nam">file_service</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">share_name</span> <span class="op">=</span> <span class="nam">share_name</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">directory_name</span> <span class="op">=</span> <span class="nam">directory_name</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_name</span> <span class="op">=</span> <span class="nam">file_name</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_size</span> <span class="op">=</span> <span class="nam">file_size</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span> <span class="op">=</span> <span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span> <span class="op">=</span> <span class="nam">stream</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_start</span> <span class="op">=</span> <span class="nam">stream</span><span class="op">.</span><span class="nam">tell</span><span class="op">(</span><span class="op">)</span> <span class="key">if</span> <span class="nam">parallel</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span> <span class="op">=</span> <span class="nam">threading</span><span class="op">.</span><span class="nam">Lock</span><span class="op">(</span><span class="op">)</span> <span class="key">if</span> <span class="nam">parallel</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span> <span class="op">=</span> <span class="nam">progress_callback</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">=</span> <span class="num">0</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span> <span class="op">=</span> <span class="nam">threading</span><span class="op">.</span><span class="nam">Lock</span><span class="op">(</span><span class="op">)</span> <span class="key">if</span> <span class="nam">parallel</span> <span class="key">else</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">validate_content</span> <span class="op">=</span> <span class="nam">validate_content</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span> <span class="op">=</span> <span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get_chunk_offsets</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="nam">index</span> <span class="op">=</span> <span class="num">0</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm par run hide_run"><span class="annotate short">72&#x202F;&#x219B;&#x202F;75</span><span class="annotate long">line 72 didn't jump to line 75, because the condition on line 72 was never true</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_size</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"> <span class="com"># we don't know the size of the stream, so we have no</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="com"># choice but to seek</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm mis"> <span class="key">while</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm mis"> <span class="nam">data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_read_from_stream</span><span class="op">(</span><span class="nam">index</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm mis"> <span class="key">if</span> <span class="key">not</span> <span class="nam">data</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm mis"> <span class="key">break</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm mis"> <span class="key">yield</span> <span class="nam">index</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm mis"> <span class="nam">index</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="key">while</span> <span class="nam">index</span> <span class="op">&lt;</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_size</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="key">yield</span> <span class="nam">index</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="nam">index</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"> <span class="key">def</span> <span class="nam">process_chunk</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_offset</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="nam">size</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm par run hide_run"><span class="annotate short">88&#x202F;&#x219B;&#x202F;90</span><span class="annotate long">line 88 didn't jump to line 90, because the condition on line 88 was never false</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_size</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="nam">size</span> <span class="op">=</span> <span class="nam">min</span><span class="op">(</span><span class="nam">size</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_size</span> <span class="op">-</span> <span class="nam">chunk_offset</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"> <span class="nam">chunk_data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_read_from_stream</span><span class="op">(</span><span class="nam">chunk_offset</span><span class="op">,</span> <span class="nam">size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_upload_chunk_with_progress</span><span class="op">(</span><span class="nam">chunk_offset</span><span class="op">,</span> <span class="nam">chunk_data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="key">def</span> <span class="nam">process_all_unknown_size</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm mis"> <span class="key">assert</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span> <span class="key">is</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm mis"> <span class="nam">range_ids</span> <span class="op">=</span> <span class="op">[</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm mis"> <span class="nam">index</span> <span class="op">=</span> <span class="num">0</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm mis"> <span class="key">while</span> <span class="key">True</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm mis"> <span class="nam">data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_read_from_stream</span><span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">chunk_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm mis"> <span class="key">if</span> <span class="nam">data</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm mis"> <span class="nam">index</span> <span class="op">+=</span> <span class="nam">len</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm mis"> <span class="nam">range_id</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_upload_chunk_with_progress</span><span class="op">(</span><span class="nam">index</span><span class="op">,</span> <span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm mis"> <span class="nam">range_ids</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">range_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm mis"> <span class="key">break</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm mis"> <span class="key">return</span> <span class="nam">range_ids</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_read_from_stream</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">offset</span><span class="op">,</span> <span class="nam">count</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm par run hide_run"><span class="annotate short">109&#x202F;&#x219B;&#x202F;114</span><span class="annotate long">line 109 didn't jump to line 114, because the condition on line 109 was never false</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="key">with</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream_lock</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">seek</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">stream_start</span> <span class="op">+</span> <span class="nam">offset</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">read</span><span class="op">(</span><span class="nam">count</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm mis"> <span class="nam">data</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">stream</span><span class="op">.</span><span class="nam">read</span><span class="op">(</span><span class="nam">count</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="key">return</span> <span class="nam">data</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_update_progress</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">length</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm par run hide_run"><span class="annotate short">118&#x202F;&#x219B;&#x202F;119</span><span class="annotate long">line 118 didn't jump to line 119, because the condition on line 118 was never true</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm mis"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm mis"> <span class="key">with</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_lock</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">+=</span> <span class="nam">length</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm mis"> <span class="nam">total</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span> <span class="op">+=</span> <span class="nam">length</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm mis"> <span class="nam">total</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_total</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress_callback</span><span class="op">(</span><span class="nam">total</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">file_size</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_upload_chunk_with_progress</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">chunk_start</span><span class="op">,</span> <span class="nam">chunk_data</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="nam">chunk_end</span> <span class="op">=</span> <span class="nam">chunk_start</span> <span class="op">+</span> <span class="nam">len</span><span class="op">(</span><span class="nam">chunk_data</span><span class="op">)</span> <span class="op">-</span> <span class="num">1</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_service</span><span class="op">.</span><span class="nam">update_range</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">share_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">directory_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">file_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"> <span class="nam">chunk_data</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"> <span class="nam">chunk_start</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"> <span class="nam">chunk_end</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"> <span class="nam">self</span><span class="op">.</span><span class="nam">validate_content</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"> <span class="nam">timeout</span><span class="op">=</span><span class="nam">self</span><span class="op">.</span><span class="nam">timeout</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="nam">range_id</span> <span class="op">=</span> <span class="str">'bytes={0}-{1}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">chunk_start</span><span class="op">,</span> <span class="nam">chunk_end</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_update_progress</span><span class="op">(</span><span class="nam">len</span><span class="op">(</span><span class="nam">chunk_data</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="key">return</span> <span class="nam">range_id</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,891 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for azure-storage-file/azure/storage/file/models.py: 94%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>azure-storage-file/azure/storage/file/models.py</b> :
<span class="pc_cov">94%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
94 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">90 run</span>
<span class="mis shortkey_m button_toggle_mis">4 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">2 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="stm run hide_run"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="pln"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="pln"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="stm run hide_run"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="pln"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="stm run hide_run"><a href="#n151">151</a></p>
<p id="n152" class="stm run hide_run"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="stm run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="stm run hide_run"><a href="#n157">157</a></p>
<p id="n158" class="pln"><a href="#n158">158</a></p>
<p id="n159" class="pln"><a href="#n159">159</a></p>
<p id="n160" class="stm run hide_run"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="pln"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="pln"><a href="#n186">186</a></p>
<p id="n187" class="stm run hide_run"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="pln"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="stm run hide_run"><a href="#n192">192</a></p>
<p id="n193" class="stm run hide_run"><a href="#n193">193</a></p>
<p id="n194" class="stm run hide_run"><a href="#n194">194</a></p>
<p id="n195" class="stm run hide_run"><a href="#n195">195</a></p>
<p id="n196" class="stm run hide_run"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="stm run hide_run"><a href="#n198">198</a></p>
<p id="n199" class="stm run hide_run"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="pln"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="stm run hide_run"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="pln"><a href="#n226">226</a></p>
<p id="n227" class="pln"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="pln"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="pln"><a href="#n238">238</a></p>
<p id="n239" class="pln"><a href="#n239">239</a></p>
<p id="n240" class="pln"><a href="#n240">240</a></p>
<p id="n241" class="pln"><a href="#n241">241</a></p>
<p id="n242" class="pln"><a href="#n242">242</a></p>
<p id="n243" class="pln"><a href="#n243">243</a></p>
<p id="n244" class="pln"><a href="#n244">244</a></p>
<p id="n245" class="pln"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
<p id="n247" class="pln"><a href="#n247">247</a></p>
<p id="n248" class="pln"><a href="#n248">248</a></p>
<p id="n249" class="stm run hide_run"><a href="#n249">249</a></p>
<p id="n250" class="stm run hide_run"><a href="#n250">250</a></p>
<p id="n251" class="stm run hide_run"><a href="#n251">251</a></p>
<p id="n252" class="stm run hide_run"><a href="#n252">252</a></p>
<p id="n253" class="stm run hide_run"><a href="#n253">253</a></p>
<p id="n254" class="stm run hide_run"><a href="#n254">254</a></p>
<p id="n255" class="stm run hide_run"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="pln"><a href="#n257">257</a></p>
<p id="n258" class="stm run hide_run"><a href="#n258">258</a></p>
<p id="n259" class="pln"><a href="#n259">259</a></p>
<p id="n260" class="pln"><a href="#n260">260</a></p>
<p id="n261" class="pln"><a href="#n261">261</a></p>
<p id="n262" class="pln"><a href="#n262">262</a></p>
<p id="n263" class="pln"><a href="#n263">263</a></p>
<p id="n264" class="pln"><a href="#n264">264</a></p>
<p id="n265" class="pln"><a href="#n265">265</a></p>
<p id="n266" class="pln"><a href="#n266">266</a></p>
<p id="n267" class="pln"><a href="#n267">267</a></p>
<p id="n268" class="stm run hide_run"><a href="#n268">268</a></p>
<p id="n269" class="stm run hide_run"><a href="#n269">269</a></p>
<p id="n270" class="stm run hide_run"><a href="#n270">270</a></p>
<p id="n271" class="pln"><a href="#n271">271</a></p>
<p id="n272" class="pln"><a href="#n272">272</a></p>
<p id="n273" class="stm run hide_run"><a href="#n273">273</a></p>
<p id="n274" class="pln"><a href="#n274">274</a></p>
<p id="n275" class="pln"><a href="#n275">275</a></p>
<p id="n276" class="pln"><a href="#n276">276</a></p>
<p id="n277" class="pln"><a href="#n277">277</a></p>
<p id="n278" class="pln"><a href="#n278">278</a></p>
<p id="n279" class="pln"><a href="#n279">279</a></p>
<p id="n280" class="pln"><a href="#n280">280</a></p>
<p id="n281" class="pln"><a href="#n281">281</a></p>
<p id="n282" class="pln"><a href="#n282">282</a></p>
<p id="n283" class="pln"><a href="#n283">283</a></p>
<p id="n284" class="pln"><a href="#n284">284</a></p>
<p id="n285" class="pln"><a href="#n285">285</a></p>
<p id="n286" class="pln"><a href="#n286">286</a></p>
<p id="n287" class="pln"><a href="#n287">287</a></p>
<p id="n288" class="pln"><a href="#n288">288</a></p>
<p id="n289" class="pln"><a href="#n289">289</a></p>
<p id="n290" class="stm run hide_run"><a href="#n290">290</a></p>
<p id="n291" class="pln"><a href="#n291">291</a></p>
<p id="n292" class="pln"><a href="#n292">292</a></p>
<p id="n293" class="pln"><a href="#n293">293</a></p>
<p id="n294" class="pln"><a href="#n294">294</a></p>
<p id="n295" class="pln"><a href="#n295">295</a></p>
<p id="n296" class="pln"><a href="#n296">296</a></p>
<p id="n297" class="pln"><a href="#n297">297</a></p>
<p id="n298" class="pln"><a href="#n298">298</a></p>
<p id="n299" class="pln"><a href="#n299">299</a></p>
<p id="n300" class="pln"><a href="#n300">300</a></p>
<p id="n301" class="pln"><a href="#n301">301</a></p>
<p id="n302" class="pln"><a href="#n302">302</a></p>
<p id="n303" class="pln"><a href="#n303">303</a></p>
<p id="n304" class="pln"><a href="#n304">304</a></p>
<p id="n305" class="pln"><a href="#n305">305</a></p>
<p id="n306" class="pln"><a href="#n306">306</a></p>
<p id="n307" class="stm par run hide_run"><a href="#n307">307</a></p>
<p id="n308" class="stm run hide_run"><a href="#n308">308</a></p>
<p id="n309" class="stm run hide_run"><a href="#n309">309</a></p>
<p id="n310" class="stm run hide_run"><a href="#n310">310</a></p>
<p id="n311" class="stm run hide_run"><a href="#n311">311</a></p>
<p id="n312" class="stm run hide_run"><a href="#n312">312</a></p>
<p id="n313" class="pln"><a href="#n313">313</a></p>
<p id="n314" class="stm run hide_run"><a href="#n314">314</a></p>
<p id="n315" class="stm mis"><a href="#n315">315</a></p>
<p id="n316" class="pln"><a href="#n316">316</a></p>
<p id="n317" class="stm run hide_run"><a href="#n317">317</a></p>
<p id="n318" class="stm mis"><a href="#n318">318</a></p>
<p id="n319" class="pln"><a href="#n319">319</a></p>
<p id="n320" class="stm run hide_run"><a href="#n320">320</a></p>
<p id="n321" class="stm run hide_run"><a href="#n321">321</a></p>
<p id="n322" class="pln"><a href="#n322">322</a></p>
<p id="n323" class="pln"><a href="#n323">323</a></p>
<p id="n324" class="pln"><a href="#n324">324</a></p>
<p id="n325" class="pln"><a href="#n325">325</a></p>
<p id="n326" class="pln"><a href="#n326">326</a></p>
<p id="n327" class="stm run hide_run"><a href="#n327">327</a></p>
<p id="n328" class="stm run hide_run"><a href="#n328">328</a></p>
<p id="n329" class="stm run hide_run"><a href="#n329">329</a></p>
<p id="n330" class="stm run hide_run"><a href="#n330">330</a></p>
<p id="n331" class="pln"><a href="#n331">331</a></p>
<p id="n332" class="pln"><a href="#n332">332</a></p>
<p id="n333" class="stm run hide_run"><a href="#n333">333</a></p>
<p id="n334" class="pln"><a href="#n334">334</a></p>
<p id="n335" class="pln"><a href="#n335">335</a></p>
<p id="n336" class="pln"><a href="#n336">336</a></p>
<p id="n337" class="pln"><a href="#n337">337</a></p>
<p id="n338" class="pln"><a href="#n338">338</a></p>
<p id="n339" class="pln"><a href="#n339">339</a></p>
<p id="n340" class="pln"><a href="#n340">340</a></p>
<p id="n341" class="pln"><a href="#n341">341</a></p>
<p id="n342" class="pln"><a href="#n342">342</a></p>
<p id="n343" class="pln"><a href="#n343">343</a></p>
<p id="n344" class="pln"><a href="#n344">344</a></p>
<p id="n345" class="pln"><a href="#n345">345</a></p>
<p id="n346" class="pln"><a href="#n346">346</a></p>
<p id="n347" class="pln"><a href="#n347">347</a></p>
<p id="n348" class="pln"><a href="#n348">348</a></p>
<p id="n349" class="pln"><a href="#n349">349</a></p>
<p id="n350" class="pln"><a href="#n350">350</a></p>
<p id="n351" class="pln"><a href="#n351">351</a></p>
<p id="n352" class="pln"><a href="#n352">352</a></p>
<p id="n353" class="pln"><a href="#n353">353</a></p>
<p id="n354" class="pln"><a href="#n354">354</a></p>
<p id="n355" class="stm run hide_run"><a href="#n355">355</a></p>
<p id="n356" class="pln"><a href="#n356">356</a></p>
<p id="n357" class="pln"><a href="#n357">357</a></p>
<p id="n358" class="pln"><a href="#n358">358</a></p>
<p id="n359" class="pln"><a href="#n359">359</a></p>
<p id="n360" class="pln"><a href="#n360">360</a></p>
<p id="n361" class="pln"><a href="#n361">361</a></p>
<p id="n362" class="pln"><a href="#n362">362</a></p>
<p id="n363" class="pln"><a href="#n363">363</a></p>
<p id="n364" class="pln"><a href="#n364">364</a></p>
<p id="n365" class="pln"><a href="#n365">365</a></p>
<p id="n366" class="pln"><a href="#n366">366</a></p>
<p id="n367" class="pln"><a href="#n367">367</a></p>
<p id="n368" class="pln"><a href="#n368">368</a></p>
<p id="n369" class="pln"><a href="#n369">369</a></p>
<p id="n370" class="pln"><a href="#n370">370</a></p>
<p id="n371" class="pln"><a href="#n371">371</a></p>
<p id="n372" class="pln"><a href="#n372">372</a></p>
<p id="n373" class="pln"><a href="#n373">373</a></p>
<p id="n374" class="pln"><a href="#n374">374</a></p>
<p id="n375" class="pln"><a href="#n375">375</a></p>
<p id="n376" class="pln"><a href="#n376">376</a></p>
<p id="n377" class="stm par run hide_run"><a href="#n377">377</a></p>
<p id="n378" class="stm run hide_run"><a href="#n378">378</a></p>
<p id="n379" class="stm run hide_run"><a href="#n379">379</a></p>
<p id="n380" class="stm run hide_run"><a href="#n380">380</a></p>
<p id="n381" class="stm run hide_run"><a href="#n381">381</a></p>
<p id="n382" class="stm run hide_run"><a href="#n382">382</a></p>
<p id="n383" class="pln"><a href="#n383">383</a></p>
<p id="n384" class="stm run hide_run"><a href="#n384">384</a></p>
<p id="n385" class="stm mis"><a href="#n385">385</a></p>
<p id="n386" class="pln"><a href="#n386">386</a></p>
<p id="n387" class="stm run hide_run"><a href="#n387">387</a></p>
<p id="n388" class="stm mis"><a href="#n388">388</a></p>
<p id="n389" class="pln"><a href="#n389">389</a></p>
<p id="n390" class="stm run hide_run"><a href="#n390">390</a></p>
<p id="n391" class="stm run hide_run"><a href="#n391">391</a></p>
<p id="n392" class="pln"><a href="#n392">392</a></p>
<p id="n393" class="pln"><a href="#n393">393</a></p>
<p id="n394" class="pln"><a href="#n394">394</a></p>
<p id="n395" class="pln"><a href="#n395">395</a></p>
<p id="n396" class="pln"><a href="#n396">396</a></p>
<p id="n397" class="stm run hide_run"><a href="#n397">397</a></p>
<p id="n398" class="stm run hide_run"><a href="#n398">398</a></p>
<p id="n399" class="stm run hide_run"><a href="#n399">399</a></p>
<p id="n400" class="stm run hide_run"><a href="#n400">400</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="com"># -------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="com"># Copyright (c) Microsoft. All rights reserved.</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="com"># Licensed under the Apache License, Version 2.0 (the "License");</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="com"># you may not use this file except in compliance with the License.</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="com"># You may obtain a copy of the License at</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="com"># http://www.apache.org/licenses/LICENSE-2.0</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="com">#</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="com"># Unless required by applicable law or agreed to in writing, software</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="com"># distributed under the License is distributed on an "AS IS" BASIS,</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="com"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="com"># See the License for the specific language governing permissions and</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="com"># limitations under the License.</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="com"># --------------------------------------------------------------------------</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">azure</span><span class="op">.</span><span class="nam">storage</span><span class="op">.</span><span class="nam">common</span><span class="op">.</span><span class="nam">_common_conversion</span> <span class="key">import</span> <span class="nam">_to_str</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">class</span> <span class="nam">Share</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="str"> File share class.</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="str"> :ivar str name:</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="str"> The name of the share.</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="str"> :ivar ShareProperties properties:</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="str"> System properties for the share.</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="str"> :ivar metadata:</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="str"> A dict containing name-value pairs associated with the share as metadata.</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="str"> This var is set to None unless the include=metadata param was included </span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="str"> for the list shares operation. If this parameter was specified but the </span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="str"> share has no metadata, metadata will be set to an empty dictionary.</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="str"> :vartype metadata: dict mapping str to str</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">props</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">properties</span> <span class="op">=</span> <span class="nam">props</span> <span class="key">or</span> <span class="nam">ShareProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">metadata</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"><span class="key">class</span> <span class="nam">ShareProperties</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> File share's properties class.</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="str"> :ivar datetime last_modified:</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> A datetime object representing the last time the share was modified.</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> :ivar str etag:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> The ETag contains a value that you can use to perform operations</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> conditionally.</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> :ivar int quote:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str"> Returns the current share quota in GB.</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">quota</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"><span class="key">class</span> <span class="nam">Directory</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="str"> Directory class.</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="str"> :ivar str name:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str"> The name of the directory.</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="str"> :ivar DirectoryProperties properties:</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="str"> System properties for the directory.</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="str"> :ivar metadata:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="str"> A dict containing name-value pairs associated with the directory as metadata.</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="str"> This var is set to None unless the include=metadata param was included </span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"><span class="str"> for the list directory operation. If this parameter was specified but the </span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="str"> directory has no metadata, metadata will be set to an empty dictionary.</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="str"> :vartype metadata: dict mapping str to str</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">props</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">properties</span> <span class="op">=</span> <span class="nam">props</span> <span class="key">or</span> <span class="nam">DirectoryProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">metadata</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"><span class="key">class</span> <span class="nam">DirectoryProperties</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="str"> File directory's properties class.</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="str"> :ivar datetime last_modified:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="str"> A datetime object representing the last time the directory was modified.</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str"> :ivar str etag:</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> The ETag contains a value that you can use to perform operations</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str"> conditionally.</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="str"> :ivar bool server_encrypted:</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="str"> Set to true if the directory metadata is encrypted on the server.</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">server_encrypted</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"><span class="key">class</span> <span class="nam">File</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"><span class="str"> File class.</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="str"> :ivar str name:</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="str"> The name of the file.</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="str"> :ivar content:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"><span class="str"> File content.</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"><span class="str"> :vartype content: str or bytes</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"><span class="str"> :ivar FileProperties properties:</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="str"> System properties for the file.</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="str"> :ivar metadata:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="pln"><span class="str"> A dict containing name-value pairs associated with the file as metadata.</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln"><span class="str"> This var is set to None unless the include=metadata param was included </span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"><span class="str"> for the list file operation. If this parameter was specified but the </span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"><span class="str"> file has no metadata, metadata will be set to an empty dictionary.</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="str"> :vartype metadata: dict mapping str to str</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">content</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">props</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content</span> <span class="op">=</span> <span class="nam">content</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">properties</span> <span class="op">=</span> <span class="nam">props</span> <span class="key">or</span> <span class="nam">FileProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">metadata</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"><span class="key">class</span> <span class="nam">FileProperties</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"><span class="str"> File Properties.</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="str"> :ivar datetime last_modified:</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"><span class="str"> A datetime object representing the last time the file was modified.</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="str"> :ivar str etag:</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"><span class="str"> The ETag contains a value that you can use to perform operations</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="str"> conditionally.</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"><span class="str"> :ivar int content_length:</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"><span class="str"> The length of the content returned. If the entire blob was requested, </span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"><span class="str"> the length of blob in bytes. If a subset of the blob was requested, the </span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"><span class="str"> length of the returned subset.</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="str"> :ivar str content_range:</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="str"> Indicates the range of bytes returned in the event that the client </span><span class="strut">&nbsp;</span></p>
<p id="t141" class="pln"><span class="str"> requested a subset of the blob.</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"><span class="str"> :ivar ~azure.storage.file.models.ContentSettings content_settings:</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"><span class="str"> Stores all the content settings for the file.</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="str"> :ivar ~azure.storage.file.models.CopyProperties copy:</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln"><span class="str"> Stores all the copy properties for the file.</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln"><span class="str"> ivar bool server_encrypted:</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"><span class="str"> Set to true if the file data and application metadata are completely encrypted.</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">last_modified</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">etag</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_length</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_range</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_settings</span> <span class="op">=</span> <span class="nam">ContentSettings</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">copy</span> <span class="op">=</span> <span class="nam">CopyProperties</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">server_encrypted</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t159" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t160" class="stm run hide_run"><span class="key">class</span> <span class="nam">ContentSettings</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"><span class="str"> Used to store the content settings of a file.</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"><span class="str"> :ivar str content_type:</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="str"> The content type specified for the file. If no content type was</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="pln"><span class="str"> specified, the default content type is application/octet-stream. </span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"><span class="str"> :ivar str content_encoding:</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="str"> If content_encoding has previously been set</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"><span class="str"> for the file, that value is stored.</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"><span class="str"> :ivar str content_language:</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"><span class="str"> If content_language has previously been set</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="str"> for the file, that value is stored.</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="str"> :ivar str content_disposition:</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"><span class="str"> content_disposition conveys additional information about how to</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"><span class="str"> process the response payload, and also can be used to attach</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"><span class="str"> additional metadata. If content_disposition has previously been set</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="str"> for the file, that value is stored.</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"><span class="str"> :ivar str cache_control:</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="str"> If cache_control has previously been set for</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"><span class="str"> the file, that value is stored.</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln"><span class="str"> :ivar str content_md5:</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"><span class="str"> If the content_md5 has been set for the file, this response</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="str"> header is stored so that the client can check for message content</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"><span class="str"> integrity.</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t187" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"> <span class="nam">self</span><span class="op">,</span> <span class="nam">content_type</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">content_encoding</span><span class="op">=</span><span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"> <span class="nam">content_language</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">content_disposition</span><span class="op">=</span><span class="key">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t190" class="pln"> <span class="nam">cache_control</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">content_md5</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_type</span> <span class="op">=</span> <span class="nam">content_type</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_encoding</span> <span class="op">=</span> <span class="nam">content_encoding</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_language</span> <span class="op">=</span> <span class="nam">content_language</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_disposition</span> <span class="op">=</span> <span class="nam">content_disposition</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">cache_control</span> <span class="op">=</span> <span class="nam">cache_control</span><span class="strut">&nbsp;</span></p>
<p id="t196" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">content_md5</span> <span class="op">=</span> <span class="nam">content_md5</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t198" class="stm run hide_run"> <span class="key">def</span> <span class="nam">_to_headers</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="stm run hide_run"> <span class="key">return</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"> <span class="str">'x-ms-cache-control'</span><span class="op">:</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">cache_control</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"> <span class="str">'x-ms-content-type'</span><span class="op">:</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">content_type</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"> <span class="str">'x-ms-content-disposition'</span><span class="op">:</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">content_disposition</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="pln"> <span class="str">'x-ms-content-md5'</span><span class="op">:</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">content_md5</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"> <span class="str">'x-ms-content-encoding'</span><span class="op">:</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">content_encoding</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"> <span class="str">'x-ms-content-language'</span><span class="op">:</span> <span class="nam">_to_str</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">content_language</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t209" class="stm run hide_run"><span class="key">class</span> <span class="nam">CopyProperties</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"><span class="str"> File Copy Properties.</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="str"> :ivar str id:</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln"><span class="str"> String identifier for the last attempted Copy File operation where this file</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"><span class="str"> was the destination file. This header does not appear if this file has never</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"><span class="str"> been the destination in a Copy File operation, or if this file has been</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="str"> modified after a concluded Copy File operation using Set File Properties or</span><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="str"> Put File.</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="str"> :ivar str source:</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="str"> URL up to 2 KB in length that specifies the source file used in the last attempted</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="str"> Copy File operation where this file was the destination file. This header does not</span><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"><span class="str"> appear if this file has never been the destination in a Copy File operation, or if</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"><span class="str"> this file has been modified after a concluded Copy File operation using</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="str"> Set File Properties or Put File.</span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="str"> :ivar str status:</span><span class="strut">&nbsp;</span></p>
<p id="t226" class="pln"><span class="str"> State of the copy operation identified by Copy ID, with these values:</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="pln"><span class="str"> success:</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"><span class="str"> Copy completed successfully.</span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"><span class="str"> pending: </span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"><span class="str"> Copy is in progress. Check copy_status_description if intermittent,</span><span class="strut">&nbsp;</span></p>
<p id="t231" class="pln"><span class="str"> non-fatal errors impede copy progress but don't cause failure.</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln"><span class="str"> aborted:</span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"><span class="str"> Copy was ended by Abort Copy File.</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"><span class="str"> failed:</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"><span class="str"> Copy failed. See copy_status_description for failure details.</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"><span class="str"> :ivar str progress:</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"><span class="str"> Contains the number of bytes copied and the total bytes in the source in the last</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="pln"><span class="str"> attempted Copy File operation where this file was the destination file. Can show</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="pln"><span class="str"> between 0 and Content-Length bytes copied.</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="pln"><span class="str"> :ivar datetime completion_time:</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="pln"><span class="str"> Conclusion time of the last attempted Copy File operation where this file was the</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="pln"><span class="str"> destination file. This value can specify the time of a completed, aborted, or</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="pln"><span class="str"> failed copy attempt.</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="pln"><span class="str"> :ivar str status_description:</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="pln"><span class="str"> Only appears when x-ms-copy-status is failed or pending. Describes cause of fatal</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln"><span class="str"> or non-fatal copy operation failure. </span><span class="strut">&nbsp;</span></p>
<p id="t247" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t248" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t249" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t250" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t251" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">source</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t252" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">progress</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t254" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">completion_time</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t255" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status_description</span> <span class="op">=</span> <span class="key">None</span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t257" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t258" class="stm run hide_run"><span class="key">class</span> <span class="nam">FileRange</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t260" class="pln"><span class="str"> File Range.</span><span class="strut">&nbsp;</span></p>
<p id="t261" class="pln"><span class="str"> </span><span class="strut">&nbsp;</span></p>
<p id="t262" class="pln"><span class="str"> :ivar int start:</span><span class="strut">&nbsp;</span></p>
<p id="t263" class="pln"><span class="str"> Byte index for start of file range.</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="pln"><span class="str"> :ivar int end:</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="pln"><span class="str"> Byte index for end of file range.</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t267" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t268" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">start</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">end</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t269" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">start</span> <span class="op">=</span> <span class="nam">start</span><span class="strut">&nbsp;</span></p>
<p id="t270" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">end</span> <span class="op">=</span> <span class="nam">end</span><span class="strut">&nbsp;</span></p>
<p id="t271" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t272" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t273" class="stm run hide_run"><span class="key">class</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t274" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t275" class="pln"><span class="str"> FilePermissions class to be used with </span><span class="strut">&nbsp;</span></p>
<p id="t276" class="pln"><span class="str"> :func:`~azure.storage.file.fileservice.FileService.generate_file_shared_access_signature` API.</span><span class="strut">&nbsp;</span></p>
<p id="t277" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t278" class="pln"><span class="str"> :ivar FilePermissions FilePermissions.CREATE:</span><span class="strut">&nbsp;</span></p>
<p id="t279" class="pln"><span class="str"> Create a new file or copy a file to a new file.</span><span class="strut">&nbsp;</span></p>
<p id="t280" class="pln"><span class="str"> :ivar FilePermissions FilePermissions.DELETE: </span><span class="strut">&nbsp;</span></p>
<p id="t281" class="pln"><span class="str"> Delete the file.</span><span class="strut">&nbsp;</span></p>
<p id="t282" class="pln"><span class="str"> :ivar FilePermissions FilePermissions.READ:</span><span class="strut">&nbsp;</span></p>
<p id="t283" class="pln"><span class="str"> Read the content, properties, metadata. Use the file as the source of a copy </span><span class="strut">&nbsp;</span></p>
<p id="t284" class="pln"><span class="str"> operation.</span><span class="strut">&nbsp;</span></p>
<p id="t285" class="pln"><span class="str"> :ivar FilePermissions FilePermissions.WRITE: </span><span class="strut">&nbsp;</span></p>
<p id="t286" class="pln"><span class="str"> Create or write content, properties, metadata. Resize the file. Use the file </span><span class="strut">&nbsp;</span></p>
<p id="t287" class="pln"><span class="str"> as the destination of a copy operation within the same account.</span><span class="strut">&nbsp;</span></p>
<p id="t288" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t289" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t290" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">read</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">create</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">write</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">delete</span><span class="op">=</span><span class="key">False</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t291" class="pln"> <span class="nam">_str</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t292" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t293" class="pln"><span class="str"> :param bool read:</span><span class="strut">&nbsp;</span></p>
<p id="t294" class="pln"><span class="str"> Read the content, properties, metadata. Use the file as the source of a copy </span><span class="strut">&nbsp;</span></p>
<p id="t295" class="pln"><span class="str"> operation.</span><span class="strut">&nbsp;</span></p>
<p id="t296" class="pln"><span class="str"> :param bool create:</span><span class="strut">&nbsp;</span></p>
<p id="t297" class="pln"><span class="str"> Create a new file or copy a file to a new file.</span><span class="strut">&nbsp;</span></p>
<p id="t298" class="pln"><span class="str"> :param bool write: </span><span class="strut">&nbsp;</span></p>
<p id="t299" class="pln"><span class="str"> Create or write content, properties, metadata. Resize the file. Use the file </span><span class="strut">&nbsp;</span></p>
<p id="t300" class="pln"><span class="str"> as the destination of a copy operation within the same account.</span><span class="strut">&nbsp;</span></p>
<p id="t301" class="pln"><span class="str"> :param bool delete: </span><span class="strut">&nbsp;</span></p>
<p id="t302" class="pln"><span class="str"> Delete the file.</span><span class="strut">&nbsp;</span></p>
<p id="t303" class="pln"><span class="str"> :param str _str: </span><span class="strut">&nbsp;</span></p>
<p id="t304" class="pln"><span class="str"> A string representing the permissions.</span><span class="strut">&nbsp;</span></p>
<p id="t305" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t306" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t307" class="stm par run hide_run"><span class="annotate short">307&#x202F;&#x219B;&#x202F;309</span><span class="annotate long">line 307 didn't jump to line 309, because the condition on line 307 was never false</span> <span class="key">if</span> <span class="key">not</span> <span class="nam">_str</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t308" class="stm run hide_run"> <span class="nam">_str</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t309" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">read</span> <span class="op">=</span> <span class="nam">read</span> <span class="key">or</span> <span class="op">(</span><span class="str">'r'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t310" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">create</span> <span class="op">=</span> <span class="nam">create</span> <span class="key">or</span> <span class="op">(</span><span class="str">'c'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t311" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">write</span> <span class="op">=</span> <span class="nam">write</span> <span class="key">or</span> <span class="op">(</span><span class="str">'w'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t312" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">delete</span> <span class="op">=</span> <span class="nam">delete</span> <span class="key">or</span> <span class="op">(</span><span class="str">'d'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t313" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t314" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__or__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">other</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t315" class="stm mis"> <span class="key">return</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">_str</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">other</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t316" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t317" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__add__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">other</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t318" class="stm mis"> <span class="key">return</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">_str</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">other</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t319" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t320" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__str__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t321" class="stm run hide_run"> <span class="key">return</span> <span class="op">(</span><span class="op">(</span><span class="str">'r'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">read</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span> <span class="op">+</span><span class="strut">&nbsp;</span></p>
<p id="t322" class="pln"> <span class="op">(</span><span class="str">'c'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">create</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span> <span class="op">+</span><span class="strut">&nbsp;</span></p>
<p id="t323" class="pln"> <span class="op">(</span><span class="str">'w'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">write</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span> <span class="op">+</span><span class="strut">&nbsp;</span></p>
<p id="t324" class="pln"> <span class="op">(</span><span class="str">'d'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">delete</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t325" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t326" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t327" class="stm run hide_run"><span class="nam">FilePermissions</span><span class="op">.</span><span class="nam">CREATE</span> <span class="op">=</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">create</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t328" class="stm run hide_run"><span class="nam">FilePermissions</span><span class="op">.</span><span class="nam">DELETE</span> <span class="op">=</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">delete</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t329" class="stm run hide_run"><span class="nam">FilePermissions</span><span class="op">.</span><span class="nam">READ</span> <span class="op">=</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">read</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t330" class="stm run hide_run"><span class="nam">FilePermissions</span><span class="op">.</span><span class="nam">WRITE</span> <span class="op">=</span> <span class="nam">FilePermissions</span><span class="op">(</span><span class="nam">write</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t331" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t332" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t333" class="stm run hide_run"><span class="key">class</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t334" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t335" class="pln"><span class="str"> SharePermissions class to be used with `azure.storage.file.FileService.generate_share_shared_access_signature`</span><span class="strut">&nbsp;</span></p>
<p id="t336" class="pln"><span class="str"> method and for the AccessPolicies used with `azure.storage.file.FileService.set_share_acl`. </span><span class="strut">&nbsp;</span></p>
<p id="t337" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t338" class="pln"><span class="str"> :ivar SharePermissions FilePermissions.DELETE: </span><span class="strut">&nbsp;</span></p>
<p id="t339" class="pln"><span class="str"> Delete any file in the share.</span><span class="strut">&nbsp;</span></p>
<p id="t340" class="pln"><span class="str"> Note: You cannot grant permissions to delete a share with a service SAS. Use </span><span class="strut">&nbsp;</span></p>
<p id="t341" class="pln"><span class="str"> an account SAS instead.</span><span class="strut">&nbsp;</span></p>
<p id="t342" class="pln"><span class="str"> :ivar SharePermissions FilePermissions.LIST: </span><span class="strut">&nbsp;</span></p>
<p id="t343" class="pln"><span class="str"> List files and directories in the share.</span><span class="strut">&nbsp;</span></p>
<p id="t344" class="pln"><span class="str"> :ivar SharePermissions FilePermissions.READ:</span><span class="strut">&nbsp;</span></p>
<p id="t345" class="pln"><span class="str"> Read the content, properties or metadata of any file in the share. Use any </span><span class="strut">&nbsp;</span></p>
<p id="t346" class="pln"><span class="str"> file in the share as the source of a copy operation.</span><span class="strut">&nbsp;</span></p>
<p id="t347" class="pln"><span class="str"> :ivar SharePermissions FilePermissions.WRITE: </span><span class="strut">&nbsp;</span></p>
<p id="t348" class="pln"><span class="str"> For any file in the share, create or write content, properties or metadata. </span><span class="strut">&nbsp;</span></p>
<p id="t349" class="pln"><span class="str"> Resize the file. Use the file as the destination of a copy operation within </span><span class="strut">&nbsp;</span></p>
<p id="t350" class="pln"><span class="str"> the same account.</span><span class="strut">&nbsp;</span></p>
<p id="t351" class="pln"><span class="str"> Note: You cannot grant permissions to read or write share properties or </span><span class="strut">&nbsp;</span></p>
<p id="t352" class="pln"><span class="str"> metadata with a service SAS. Use an account SAS instead.</span><span class="strut">&nbsp;</span></p>
<p id="t353" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t354" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t355" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">read</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">write</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">delete</span><span class="op">=</span><span class="key">False</span><span class="op">,</span> <span class="nam">list</span><span class="op">=</span><span class="key">False</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t356" class="pln"> <span class="nam">_str</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t357" class="pln"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t358" class="pln"><span class="str"> :param bool read:</span><span class="strut">&nbsp;</span></p>
<p id="t359" class="pln"><span class="str"> Read the content, properties or metadata of any file in the share. Use any </span><span class="strut">&nbsp;</span></p>
<p id="t360" class="pln"><span class="str"> file in the share as the source of a copy operation.</span><span class="strut">&nbsp;</span></p>
<p id="t361" class="pln"><span class="str"> :param bool write: </span><span class="strut">&nbsp;</span></p>
<p id="t362" class="pln"><span class="str"> For any file in the share, create or write content, properties or metadata. </span><span class="strut">&nbsp;</span></p>
<p id="t363" class="pln"><span class="str"> Resize the file. Use the file as the destination of a copy operation within </span><span class="strut">&nbsp;</span></p>
<p id="t364" class="pln"><span class="str"> the same account.</span><span class="strut">&nbsp;</span></p>
<p id="t365" class="pln"><span class="str"> Note: You cannot grant permissions to read or write share properties or </span><span class="strut">&nbsp;</span></p>
<p id="t366" class="pln"><span class="str"> metadata with a service SAS. Use an account SAS instead.</span><span class="strut">&nbsp;</span></p>
<p id="t367" class="pln"><span class="str"> :param bool delete: </span><span class="strut">&nbsp;</span></p>
<p id="t368" class="pln"><span class="str"> Delete any file in the share.</span><span class="strut">&nbsp;</span></p>
<p id="t369" class="pln"><span class="str"> Note: You cannot grant permissions to delete a share with a service SAS. Use </span><span class="strut">&nbsp;</span></p>
<p id="t370" class="pln"><span class="str"> an account SAS instead.</span><span class="strut">&nbsp;</span></p>
<p id="t371" class="pln"><span class="str"> :param bool list: </span><span class="strut">&nbsp;</span></p>
<p id="t372" class="pln"><span class="str"> List files and directories in the share.</span><span class="strut">&nbsp;</span></p>
<p id="t373" class="pln"><span class="str"> :param str _str: </span><span class="strut">&nbsp;</span></p>
<p id="t374" class="pln"><span class="str"> A string representing the permissions</span><span class="strut">&nbsp;</span></p>
<p id="t375" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
<p id="t376" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t377" class="stm par run hide_run"><span class="annotate short">377&#x202F;&#x219B;&#x202F;379</span><span class="annotate long">line 377 didn't jump to line 379, because the condition on line 377 was never false</span> <span class="key">if</span> <span class="key">not</span> <span class="nam">_str</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t378" class="stm run hide_run"> <span class="nam">_str</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t379" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">read</span> <span class="op">=</span> <span class="nam">read</span> <span class="key">or</span> <span class="op">(</span><span class="str">'r'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t380" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">write</span> <span class="op">=</span> <span class="nam">write</span> <span class="key">or</span> <span class="op">(</span><span class="str">'w'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t381" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">delete</span> <span class="op">=</span> <span class="nam">delete</span> <span class="key">or</span> <span class="op">(</span><span class="str">'d'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t382" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">list</span> <span class="op">=</span> <span class="nam">list</span> <span class="key">or</span> <span class="op">(</span><span class="str">'l'</span> <span class="key">in</span> <span class="nam">_str</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t383" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t384" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__or__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">other</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t385" class="stm mis"> <span class="key">return</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">_str</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">other</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t386" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t387" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__add__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">other</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t388" class="stm mis"> <span class="key">return</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">_str</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">other</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t389" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t390" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__str__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t391" class="stm run hide_run"> <span class="key">return</span> <span class="op">(</span><span class="op">(</span><span class="str">'r'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">read</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span> <span class="op">+</span><span class="strut">&nbsp;</span></p>
<p id="t392" class="pln"> <span class="op">(</span><span class="str">'w'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">write</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span> <span class="op">+</span><span class="strut">&nbsp;</span></p>
<p id="t393" class="pln"> <span class="op">(</span><span class="str">'d'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">delete</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span> <span class="op">+</span><span class="strut">&nbsp;</span></p>
<p id="t394" class="pln"> <span class="op">(</span><span class="str">'l'</span> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">list</span> <span class="key">else</span> <span class="str">''</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t395" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t396" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t397" class="stm run hide_run"><span class="nam">SharePermissions</span><span class="op">.</span><span class="nam">DELETE</span> <span class="op">=</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">delete</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t398" class="stm run hide_run"><span class="nam">SharePermissions</span><span class="op">.</span><span class="nam">LIST</span> <span class="op">=</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">list</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t399" class="stm run hide_run"><span class="nam">SharePermissions</span><span class="op">.</span><span class="nam">READ</span> <span class="op">=</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">read</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t400" class="stm run hide_run"><span class="nam">SharePermissions</span><span class="op">.</span><span class="nam">WRITE</span> <span class="op">=</span> <span class="nam">SharePermissions</span><span class="op">(</span><span class="nam">write</span><span class="op">=</span><span class="key">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.1</a>,
created at 2017-08-31 16:36
</p>
</div>
</div>
</body>
</html>

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше