xlwings-utils 0.0.7.post4__py3-none-any.whl → 25.0.0.post1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of xlwings-utils might be problematic. Click here for more details.

@@ -5,7 +5,7 @@
5
5
  # /_/\_\|_| \_/\_/ |_||_| |_| \__, ||___/ _____ \__,_| \__||_||_||___/
6
6
  # |___/ |_____|
7
7
 
8
- __version__ = "0.0.7"
8
+ __version__ = "25.0.0"
9
9
 
10
10
 
11
11
  import dropbox
@@ -372,6 +372,58 @@ class block:
372
372
  def __repr__(self):
373
373
  return f"block({self.value})"
374
374
 
375
+ def _check_row(self, row, name):
376
+ if row < 1:
377
+ raise ValueError(f"{name}={row} < 1")
378
+ if row > self.number_of_rows:
379
+ raise ValueError(f"{name}={row} > number_of_rows={self.number_of_rows}")
380
+
381
+ def _check_column(self, column, name):
382
+ if column < 1:
383
+ raise ValueError(f"{name}={column} < 1")
384
+ if column > self.number_of_columns:
385
+ raise ValueError(f"{name}={column} > number_of_columns={self.number_of_columns}")
386
+
387
+ def vlookup(self, s, *, row_from=1, row_to=None, column1=1, column2=None):
388
+ if column2 is None:
389
+ column2 = column1 + 1
390
+ self._check_column(column2, "column2")
391
+ row = self.lookup_row(s, row_from=row_from, row_to=row_to, column1=column1)
392
+ return self[row, column2]
393
+
394
+ def lookup_row(self, s, *, row_from=1, row_to=None, column1=1):
395
+ if row_to is None:
396
+ row_to = self.highest_used_row_number
397
+ self._check_row(row_from, "row_from")
398
+ self._check_row(row_to, "row_to")
399
+ self._check_column(column1, "column1")
400
+
401
+ for row in range(row_from, row_to + 1):
402
+ if self[row, column1] == s:
403
+ return row
404
+ raise ValueError(f"{s} not found")
405
+
406
+ def hlookup(self, s, *, column_from=1, column_to=None, row1=1, row2=None):
407
+ if row2 is None:
408
+ row2 = row1 + 1
409
+ self._check_row(row2, "row2")
410
+ column = self.lookup_column(s, column_from=column_from, column_to=column_to, row1=row1)
411
+ return self[row2, column]
412
+
413
+ def lookup_column(self, s, *, column_from=1, column_to=None, row1=1):
414
+ if column_to is None:
415
+ column_to = self.highest_used_column_number
416
+ self._check_column(column_from, "column_from")
417
+ self._check_column(column_to, "column_to")
418
+ self._check_row(row1, "row1")
419
+
420
+ for column in range(column_from, column_to + 1):
421
+ if self[row1, column] == s:
422
+ return column
423
+ raise ValueError(f"{s} not found")
424
+
425
+ def lookup(self, s, *, row_from=1, row_to=None, column1=1, column2=None):
426
+ return self.vlookup(s, row_from=row_from, row_to=row_to, column1=column1, column2=column2)
375
427
 
376
428
 
377
429
  class _capture:
@@ -396,7 +448,7 @@ class _capture:
396
448
  def __init__(self):
397
449
  self.stdout = sys.stdout
398
450
  self._include_print = False
399
- self._buffer=[]
451
+ self._buffer = []
400
452
 
401
453
  def __enter__(self):
402
454
  sys.stdout = self
@@ -413,50 +465,47 @@ class _capture:
413
465
  if self._include_print:
414
466
  self.stdout.flush()
415
467
  self._buffer.append("\n")
416
-
417
468
 
418
469
  @property
419
470
  def value(self):
420
- result=self.value_keep
471
+ result = self.value_keep
421
472
  self.clear()
422
473
  return result
423
-
424
-
474
+
425
475
  @property
426
476
  def value_keep(self):
427
- result= [[line] for line in self.str_keep.splitlines()]
477
+ result = [[line] for line in self.str_keep.splitlines()]
428
478
  return result
429
-
479
+
430
480
  @property
431
481
  def str(self):
432
482
  result = self.str_keep
433
483
  self._buffer.clear()
434
- return result
435
-
484
+ return result
485
+
436
486
  @property
437
487
  def str_keep(self):
438
488
  result = "".join(self._buffer)
439
- return result
440
-
489
+ return result
490
+
441
491
  def clear(self):
442
492
  self._buffer.clear()
443
-
444
-
493
+
445
494
  @property
446
495
  def include_print(self):
447
496
  return self._include_print
448
-
497
+
449
498
  @include_print.setter
450
499
  def include_print(self, value):
451
- self._include_print=value
452
-
500
+ self._include_print = value
453
501
 
454
502
 
455
503
  def reset():
456
- capture.include_print=False
504
+ capture.include_print = False
457
505
  capture.clear()
458
-
459
- capture=_capture()
506
+
507
+
508
+ capture = _capture()
460
509
 
461
510
 
462
511
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xlwings_utils
3
- Version: 0.0.7.post4
3
+ Version: 25.0.0.post1
4
4
  Summary: xlwings_utils
5
5
  Author-email: Ruud van der Ham <rt.van.der.ham@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/salabim/xlwings_utils
@@ -0,0 +1,6 @@
1
+ xlwings_utils/__init__.py,sha256=FdaRztevSu5akGL7KBUBRzqwLMRTdvVUuS2Kfp2f1Uc,68
2
+ xlwings_utils/xlwings_utils.py,sha256=UQenav-IEe7Hl8IQKNVLYDBscEdmvkR4IQbptsq3Obg,14830
3
+ xlwings_utils-25.0.0.post1.dist-info/METADATA,sha256=Vh86pfRnT_0wuFKqO643CMLViq2YdcqAGoaNx53eEiE,6166
4
+ xlwings_utils-25.0.0.post1.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
5
+ xlwings_utils-25.0.0.post1.dist-info/top_level.txt,sha256=kf5SEv0gZiRObPhUoYcc1O_iX_wwTOPeUIYvzyYeAM4,14
6
+ xlwings_utils-25.0.0.post1.dist-info/RECORD,,
@@ -1,6 +0,0 @@
1
- xlwings_utils/__init__.py,sha256=FdaRztevSu5akGL7KBUBRzqwLMRTdvVUuS2Kfp2f1Uc,68
2
- xlwings_utils/xlwings_utils.py,sha256=qyzaz8zVRj0HFTqqPRtFrO9-DPp4QQT3hDmNDZoTj4I,12731
3
- xlwings_utils-0.0.7.post4.dist-info/METADATA,sha256=-tU6nZT21BJqvHTVxSKUlG91K9k0gU7N0Q3ysRkXf74,6165
4
- xlwings_utils-0.0.7.post4.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
5
- xlwings_utils-0.0.7.post4.dist-info/top_level.txt,sha256=kf5SEv0gZiRObPhUoYcc1O_iX_wwTOPeUIYvzyYeAM4,14
6
- xlwings_utils-0.0.7.post4.dist-info/RECORD,,