multiversx-sdk-cli 6.1.0__tar.gz → 6.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/PKG-INFO +3 -3
  2. multiversx_sdk_cli-6.1.2/multiversx_sdk_cli/myprocess.py +21 -0
  3. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/project_rust.py +3 -4
  4. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/pyproject.toml +3 -3
  5. multiversx_sdk_cli-6.1.0/multiversx_sdk_cli/myprocess.py +0 -108
  6. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/.gitignore +0 -0
  7. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/LICENSE +0 -0
  8. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/README.md +0 -0
  9. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/.vscode/settings.json +0 -0
  10. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/__init__.py +0 -0
  11. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/accounts.py +0 -0
  12. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli.py +0 -0
  13. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_accounts.py +0 -0
  14. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_block.py +0 -0
  15. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_config.py +0 -0
  16. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_contracts.py +0 -0
  17. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_data.py +0 -0
  18. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_delegation.py +0 -0
  19. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_deps.py +0 -0
  20. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_dns.py +0 -0
  21. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_ledger.py +0 -0
  22. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_network.py +0 -0
  23. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_output.py +0 -0
  24. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_password.py +0 -0
  25. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_shared.py +0 -0
  26. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_testnet.py +0 -0
  27. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_transactions.py +0 -0
  28. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_validators.py +0 -0
  29. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/cli_wallet.py +0 -0
  30. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/config.py +0 -0
  31. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/constants.py +0 -0
  32. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/contract_verification.py +0 -0
  33. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/contracts.py +0 -0
  34. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/delegation/__init__.py +0 -0
  35. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/delegation/staking_provider.py +0 -0
  36. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/dependencies/__init__.py +0 -0
  37. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/dependencies/install.py +0 -0
  38. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/dependencies/modules.py +0 -0
  39. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/dependencies/resolution.py +0 -0
  40. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/diskcache.py +0 -0
  41. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/dns.py +0 -0
  42. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/docker.py +0 -0
  43. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/downloader.py +0 -0
  44. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/errors.py +0 -0
  45. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/guards.py +0 -0
  46. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/interfaces.py +0 -0
  47. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/ledger/__init__.py +0 -0
  48. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/ledger/config.py +0 -0
  49. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/ledger/ledger_app_handler.py +0 -0
  50. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/ledger/ledger_functions.py +0 -0
  51. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/__init__.py +0 -0
  52. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/constants.py +0 -0
  53. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/core.py +0 -0
  54. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/eei_activation.py +0 -0
  55. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/eei_checks.py +0 -0
  56. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/eei_registry.py +0 -0
  57. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/interfaces.py +0 -0
  58. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/migrations.py +0 -0
  59. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/project_base.py +0 -0
  60. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/project_clang.py +0 -0
  61. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/project_cpp.py +0 -0
  62. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/project_sol.py +0 -0
  63. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/__init__.py +0 -0
  64. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/__init__.py +0 -0
  65. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/common.py +0 -0
  66. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/extracted_feature.py +0 -0
  67. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/folder_report.py +0 -0
  68. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/project_report.py +0 -0
  69. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/report.py +0 -0
  70. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/data/wasm_report.py +0 -0
  71. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/do_report.py +0 -0
  72. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/features/__init__.py +0 -0
  73. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/features/features.py +0 -0
  74. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/features/report_option.py +0 -0
  75. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/features/size.py +0 -0
  76. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/features/twiggy_paths_check.py +0 -0
  77. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/format/__init__.py +0 -0
  78. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/format/change_type.py +0 -0
  79. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/format/format_options.py +0 -0
  80. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/report/report_creator.py +0 -0
  81. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/shared.py +0 -0
  82. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/templates.py +0 -0
  83. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/templates_config.py +0 -0
  84. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/projects/templates_repository.py +0 -0
  85. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/simulation.py +0 -0
  86. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/__init__.py +0 -0
  87. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/config.py +0 -0
  88. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/core.py +0 -0
  89. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/genesis.py +0 -0
  90. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/genesis_json.py +0 -0
  91. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/genesis_smart_contracts_json.py +0 -0
  92. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/node_config_toml.py +0 -0
  93. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/nodes_setup_json.py +0 -0
  94. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/p2p_toml.py +0 -0
  95. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/seednode_p2pKey.pem +0 -0
  96. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/setup.py +0 -0
  97. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/testnet/wallets.py +0 -0
  98. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/transactions.py +0 -0
  99. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/utils.py +0 -0
  100. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/validators/__init__.py +0 -0
  101. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/validators/core.py +0 -0
  102. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/validators/validators_file.py +0 -0
  103. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/version.py +0 -0
  104. {multiversx_sdk_cli-6.1.0 → multiversx_sdk_cli-6.1.2}/multiversx_sdk_cli/workstation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: multiversx-sdk-cli
3
- Version: 6.1.0
3
+ Version: 6.1.2
4
4
  Summary: MultiversX Smart Contracts Tools
5
5
  Project-URL: Homepage, https://github.com/multiversx/mx-sdk-py-cli
6
6
  Author: MultiversX
@@ -12,9 +12,9 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Requires-Python: >=3.8
14
14
  Requires-Dist: ledgercomm[hid]
15
- Requires-Dist: multiversx-sdk-core==0.3.*
15
+ Requires-Dist: multiversx-sdk-core>=0.4.1
16
16
  Requires-Dist: multiversx-sdk-network-providers==0.6.*
17
- Requires-Dist: multiversx-sdk-wallet==0.5.*
17
+ Requires-Dist: multiversx-sdk-wallet==0.6.*
18
18
  Requires-Dist: prettytable
19
19
  Requires-Dist: requests
20
20
  Requires-Dist: requests-cache
@@ -0,0 +1,21 @@
1
+ import logging
2
+ import subprocess
3
+ from pathlib import Path
4
+ from typing import Any, List, Optional, Union
5
+
6
+ from multiversx_sdk_cli import errors
7
+
8
+ logger = logging.getLogger("myprocess")
9
+
10
+
11
+ def run_process(args: List[str], env: Any = None, dump_to_stdout: bool = True, cwd: Optional[Union[str, Path]] = None) -> str:
12
+ logger.info(f"run_process: {args}, in folder: {cwd}")
13
+
14
+ try:
15
+ output = subprocess.check_output(args, shell=False, universal_newlines=True, stderr=subprocess.STDOUT, env=env, cwd=cwd)
16
+ logger.info("Successful run. Output:")
17
+ if dump_to_stdout:
18
+ print(output or "[No output]")
19
+ return output
20
+ except subprocess.CalledProcessError as error:
21
+ raise errors.ExternalProcessError(error.cmd, error.output)
@@ -4,8 +4,7 @@ from os import path
4
4
  from pathlib import Path
5
5
  from typing import Any, Dict, List, Set, cast
6
6
 
7
- from multiversx_sdk_cli import (dependencies, errors, myprocess, utils,
8
- workstation)
7
+ from multiversx_sdk_cli import dependencies, errors, utils, workstation
9
8
  from multiversx_sdk_cli.constants import DEFAULT_CARGO_TARGET_DIR_NAME
10
9
  from multiversx_sdk_cli.projects.project_base import Project
11
10
 
@@ -73,7 +72,7 @@ class ProjectRust(Project):
73
72
  self.prepare_build_wasm_args(args)
74
73
  self.decorate_cargo_args(args)
75
74
 
76
- return_code = myprocess.run_process_async(args, env=env, cwd=str(cwd))
75
+ return_code = subprocess.check_call(args, env=env, cwd=cwd)
77
76
  if return_code != 0:
78
77
  raise errors.BuildError(f"error code = {return_code}, see output")
79
78
 
@@ -159,7 +158,7 @@ class ProjectRust(Project):
159
158
  "--target-dir", target_dir
160
159
  ]
161
160
 
162
- return_code = myprocess.run_process_async(args, env=env, cwd=str(cwd))
161
+ return_code = subprocess.check_call(args, env=env, cwd=cwd)
163
162
  if return_code != 0:
164
163
  raise errors.BuildError(f"error code = {return_code}, see output")
165
164
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "multiversx-sdk-cli"
7
- version = "6.1.0"
7
+ version = "6.1.2"
8
8
  authors = [
9
9
  { name="MultiversX" },
10
10
  ]
@@ -26,8 +26,8 @@ dependencies = [
26
26
  "semver",
27
27
  "requests-cache",
28
28
  "multiversx-sdk-network-providers==0.6.*",
29
- "multiversx-sdk-wallet==0.5.*",
30
- "multiversx-sdk-core==0.3.*"
29
+ "multiversx-sdk-wallet==0.6.*",
30
+ "multiversx-sdk-core>=0.4.1"
31
31
  ]
32
32
 
33
33
  [tool.hatch.build]
@@ -1,108 +0,0 @@
1
- import asyncio
2
- import logging
3
- import subprocess
4
- import traceback
5
- from pathlib import Path
6
- from typing import Any, List, Optional, Union
7
-
8
- from multiversx_sdk_cli import errors
9
-
10
- logger = logging.getLogger("myprocess")
11
-
12
- ReturnCode = int
13
-
14
-
15
- def run_process(args: List[str], env: Any = None, dump_to_stdout: bool = True, cwd: Optional[Union[str, Path]] = None) -> str:
16
- logger.info(f"run_process: {args}, in folder: {cwd}")
17
-
18
- try:
19
- output = subprocess.check_output(args, shell=False, universal_newlines=True, stderr=subprocess.STDOUT, env=env, cwd=cwd)
20
- logger.info("Successful run. Output:")
21
- if dump_to_stdout:
22
- print(output or "[No output]")
23
- return output
24
- except subprocess.CalledProcessError as error:
25
- raise errors.ExternalProcessError(error.cmd, error.output)
26
-
27
-
28
- def run_process_async(
29
- args: List[str],
30
- env: Any = None,
31
- cwd: Optional[str] = None,
32
- stdout_sink=None,
33
- stderr_sink=None
34
- ) -> ReturnCode:
35
- logger.info(f"run_process_async: {args}, in folder: {cwd}")
36
-
37
- loop = asyncio.get_event_loop()
38
- result = loop.run_until_complete(_async_subprocess(args, env, stdout_sink, stderr_sink, cwd))
39
- loop.close()
40
- asyncio.set_event_loop(asyncio.new_event_loop())
41
- return result
42
-
43
-
44
- async def _async_subprocess(args, env, stdout_sink, stderr_sink, cwd: Optional[str]) -> ReturnCode:
45
- process = await asyncio.create_subprocess_exec(*args, env=env, stdout=asyncio.subprocess.PIPE,
46
- stderr=asyncio.subprocess.PIPE, cwd=cwd)
47
-
48
- await asyncio.wait([
49
- _read_stream(process.stdout, stdout_sink),
50
- _read_stream(process.stderr, stderr_sink)
51
- ])
52
- return await process.wait()
53
-
54
-
55
- async def _read_stream(stream, sink):
56
- sink = sink or ConsoleOutputSink()
57
- sink.open()
58
-
59
- while True:
60
- try:
61
- line = await stream.readline()
62
- if line:
63
- line = line.decode("utf-8", "replace").strip()
64
- sink.write(line)
65
- else:
66
- break
67
- except Exception:
68
- print(traceback.format_exc())
69
-
70
- sink.close()
71
-
72
-
73
- class OutputSink:
74
- def open(self):
75
- pass
76
-
77
- def write(self, line: str):
78
- pass
79
-
80
- def close(self):
81
- pass
82
-
83
-
84
- class ConsoleOutputSink(OutputSink):
85
- def write(self, line: str):
86
- print(line)
87
-
88
-
89
- class FileOutputSink(OutputSink):
90
- def __init__(self, filepath: str) -> None:
91
- super().__init__()
92
- self.filepath = filepath
93
- self.file = None
94
-
95
- def open(self):
96
- self.file = open(self.filepath, "w")
97
-
98
- def write(self, line: str):
99
- if self.file is None:
100
- return
101
-
102
- self.file.write(line)
103
-
104
- def close(self):
105
- if self.file is None:
106
- return
107
-
108
- self.file.close()