File tree Expand file tree Collapse file tree 2 files changed +29
-4
lines changed Expand file tree Collapse file tree 2 files changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -171,7 +171,12 @@ def _update_progress(
171171 return progress == 1.0
172172
173173
174- class SnowflakeProgressPercentage :
174+ def percent (seen_so_far : int , size : float ) -> float :
175+ return 1.0 if seen_so_far >= size or size <= 0 \
176+ else float (seen_so_far / size )
177+
178+
179+ class SnowflakeProgressPercentage ():
175180 """Built-in Progress bar for PUT commands."""
176181
177182 def __init__ (
@@ -208,7 +213,7 @@ def __call__(self, bytes_amount: int):
208213 with self ._lock :
209214 if self ._output_stream :
210215 self ._seen_so_far += bytes_amount
211- percentage = float (self ._seen_so_far / self ._size )
216+ percentage = percent (self ._seen_so_far , self ._size )
212217 if not self ._done :
213218 self ._done = _update_progress (
214219 self ._filename , self ._start_time ,
@@ -234,7 +239,7 @@ def __call__(self, current: int):
234239 with self ._lock :
235240 if self ._output_stream :
236241 self ._seen_so_far = current
237- percentage = float (self ._seen_so_far / self ._size )
242+ percentage = percent (self ._seen_so_far , self ._size )
238243 if not self ._done :
239244 self ._done = _update_progress (
240245 self ._filename , self ._start_time ,
Original file line number Diff line number Diff line change 1111
1212from snowflake .connector .compat import IS_WINDOWS
1313from snowflake .connector .errors import Error
14- from snowflake .connector .file_transfer_agent import SnowflakeFileTransferAgent
14+ from snowflake .connector .file_transfer_agent import (
15+ SnowflakeAzureProgressPercentage ,
16+ SnowflakeFileTransferAgent ,
17+ SnowflakeS3ProgressPercentage ,
18+ percent ,
19+ )
1520
1621
1722@pytest .mark .skipif (IS_WINDOWS , reason = 'permission model is different' )
@@ -74,3 +79,18 @@ def test_put_error(tmpdir):
7479 sf_file_transfer_agent .result ()
7580
7681 chmod (file1 , 0o700 )
82+
83+
84+ def test_percentage (tmp_path ):
85+ """Tests for ProgressPercentage classes."""
86+ assert 1.0 == percent (0 , 0 )
87+ assert 1.0 == percent (20 , 0 )
88+ assert 1.0 == percent (40 , 20 )
89+ assert 0.5 == percent (14 , 28 )
90+
91+ file_path = tmp_path / 'zero_file1'
92+ file_path .touch ()
93+ func_callback = SnowflakeS3ProgressPercentage (str (file_path ), 0 )
94+ func_callback (1 )
95+ func_callback = SnowflakeAzureProgressPercentage (str (file_path ), 0 )
96+ func_callback (1 )
You can’t perform that action at this time.
0 commit comments