From d5bb5600d17a9fb88b7a8993d04546a6f7db4fa2 Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Wed, 17 Jan 2024 09:04:16 +0000
Subject: [PATCH] add title to exec_long_task and update ascii2bin

---
 pyproject.toml                               |  9 +++++----
 wetb/hawc2/ascii2bin/ascii2bin.py            | 15 +++++++++------
 wetb/hawc2/ascii2bin/pandas_dat_ascii2bin.py | 11 +++++------
 wetb/hawc2/ascii2bin/tests/test_ascii2bin.py | 14 ++------------
 4 files changed, 21 insertions(+), 28 deletions(-)

diff --git a/pyproject.toml b/pyproject.toml
index cabe0bfe..ad81e3d3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,11 +8,11 @@
 
 [tool.poetry]
 name = "wetb"
-version = "v0.1.4"
-description = "The Wind Energy Toolbox (or ```wetb```, pronounce as wee-tee-bee) is a collection of Python scripts that facilitate working with (potentially a lot) of HAWC2, HAWCStab2, FAST or other text input based simulation tools.  Note that this toolbox is very much a WIP (work in progress). For example, some of the functions in the [prepost](#prepost) module have a similar functions in [Hawc2io](wetb/hawc2/Hawc2io.py). These different implementations will be merged in due time.  Both Python2 and Python3 are supported"
+version = "v0.1.8.dev1+g80b1595"
+description = "The Wind Energy Toolbox (or ```wetb```, pronounce as wee-tee-bee) is a collection of Python scripts that facilitate working with (potentially a lot) of HAWC2, HAWCStab2, FAST or other text input based simulation tools.  Note that this toolbox is very much"
 authors = ["DTU Wind and Energy Systems <you@example.com>"]
 license = "wetb is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL, http://www.gnu.org/copyleft/gpl.html) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.  wetb is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details http://www.gnu.org/licenses/  We encourage you to submit new code for possible inclusion in future versions of wetb."
-readme = "README.md"
+
 
 [tool.poetry.dependencies]
 click = "^8.0.4"
@@ -24,6 +24,7 @@ matplotlib = "^3.8"
 pillow = "^10.0.1" # This is only needed as long as matplotlib does not require pillow >= 10.0.1.
 mock = "^5.0.2"
 numpy = ">=1.4"
+numba = ">=0.56"
 openpyxl =  { version = "^3.1.2", optional = true }
 pandas = "^1.1.5"
 paramiko = {version="^3.2.0", optional = true}
@@ -46,4 +47,4 @@ all = ["openpyxl", "tables", "wafo", "xlwt", "Cython", "paramiko", "sshtunnel"]
 
 [build-system]
 requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
+build-backend = "poetry.core.masonry.api"
\ No newline at end of file
diff --git a/wetb/hawc2/ascii2bin/ascii2bin.py b/wetb/hawc2/ascii2bin/ascii2bin.py
index 391c48cb..2f8cdd60 100644
--- a/wetb/hawc2/ascii2bin/ascii2bin.py
+++ b/wetb/hawc2/ascii2bin/ascii2bin.py
@@ -1,20 +1,22 @@
+from wetb.hawc2.ascii2bin.pandas_dat_ascii2bin import pandas_dat_ascii2bin
 import sys
 import warnings
 
 warnings.filterwarnings("ignore", message="numpy.ufunc size changed")
 
-from wetb.hawc2.ascii2bin.pandas_dat_ascii2bin import pandas_dat_ascii2bin
 
 class TextUI(object):
     def show_message(self, m):
-        print (m)
+        print(m)
 
-    def exec_long_task(self, text, allow_cancel, task, *args, **kwargs):
-        print (text)
+    def exec_long_task(self, title, text, allow_cancel, task, *args, **kwargs):
+        print(text)
         return task(*args, **kwargs)
 
+
 sys.path.append(".")
 
+
 def size_from_file(selfilename):
     with open(selfilename, encoding='utf-8') as f:
         info = f.readlines()[8].split()
@@ -22,6 +24,7 @@ def size_from_file(selfilename):
         no_sensors = int(info[1])
     return (scans, no_sensors)
 
+
 def ascii2bin(ascii_selfilename, bin_selfilename=None, ui=TextUI()):
 
     # Convert dat file
@@ -29,7 +32,6 @@ def ascii2bin(ascii_selfilename, bin_selfilename=None, ui=TextUI()):
     if bin_selfilename is None:
         bin_selfilename = ascii_selfilename[:-4] + "_bin.sel"
 
-
     # Read, convert and write sel file
     with open(ascii_selfilename, encoding='utf-8') as f:
         lines = f.readlines()
@@ -51,9 +53,10 @@ def ascii2bin(ascii_selfilename, bin_selfilename=None, ui=TextUI()):
         if ui is not None:
             ui.show_message("Finish converting %s to %s" % (ascii_selfilename, bin_selfilename))
 
+
 if __name__ == "__main__":
     if len(sys.argv) < 2:
-        print ("syntax: ascii2bin ascii_sel_filename [bin_sel_filename]")
+        print("syntax: ascii2bin ascii_sel_filename [bin_sel_filename]")
     elif len(sys.argv) == 2:
         ascii2bin(sys.argv[1])
     else:
diff --git a/wetb/hawc2/ascii2bin/pandas_dat_ascii2bin.py b/wetb/hawc2/ascii2bin/pandas_dat_ascii2bin.py
index f6b29a26..a2771872 100644
--- a/wetb/hawc2/ascii2bin/pandas_dat_ascii2bin.py
+++ b/wetb/hawc2/ascii2bin/pandas_dat_ascii2bin.py
@@ -8,21 +8,20 @@ import numpy as np
 from pandas import read_csv
 
 
-
 def pandas_dat_ascii2bin(ascii_filename, bin_filename, ui):
 
-    df = ui.exec_long_task("Reading ascii file", False, read_csv, ascii_filename, sep=" ", skipinitialspace=True, header=None)
+    df = ui.exec_long_task("Please wait...", "Reading ascii file", False, read_csv, ascii_filename, sep=" ",
+                           skipinitialspace=True, header=None)
 
     def compress(df, bin_filename):
         with open(bin_filename, 'wb') as outfile:
             scale_factors = []
-            for _, sensor in df.iteritems():
+            for _, sensor in df.items():
                 sf = sensor.abs().max() / 32000
                 if sf > 0:
                     sensor /= sf
                 np.round(sensor.values).astype(np.int16).tofile(outfile)
                 scale_factors.append(sf)
         return np.array(scale_factors)
-    #return compress(df, bin_filename)
-    return ui.exec_long_task("Compress and save as binary", False, compress, df, bin_filename)
-
+    # return compress(df, bin_filename)
+    return ui.exec_long_task("Please wait...", "Compress and save as binary", False, compress, df, bin_filename)
diff --git a/wetb/hawc2/ascii2bin/tests/test_ascii2bin.py b/wetb/hawc2/ascii2bin/tests/test_ascii2bin.py
index 433758b3..6871a349 100644
--- a/wetb/hawc2/ascii2bin/tests/test_ascii2bin.py
+++ b/wetb/hawc2/ascii2bin/tests/test_ascii2bin.py
@@ -13,22 +13,14 @@ from wetb.hawc2.ascii2bin.ascii2bin import ascii2bin, size_from_file
 testfilepath = os.path.join(os.path.dirname(__file__), 'test_files/')  # test file path
 
 
-class TextUI(object):
-    def show_message(self, m):
-        pass
-
-    def exec_long_task(self, text, allow_cancel, task, *args, **kwargs):
-        return task(*args, **kwargs)
-
 class TestAscii2Bin(unittest.TestCase):
 
-
     def testAscii2bin(self):
 
         for f in ["Hawc2ascii_bin.sel", "Hawc2ascii_bin.dat"]:
             if os.path.exists(testfilepath + f):
                 os.remove(testfilepath + f)
-        ascii2bin(testfilepath + "Hawc2ascii.sel", ui=TextUI())
+        ascii2bin(testfilepath + "Hawc2ascii.sel")
 
         ascii_file = Hawc2io.ReadHawc2(testfilepath + 'Hawc2ascii')
         bin_file = Hawc2io.ReadHawc2(testfilepath + "Hawc2ascii_bin")
@@ -40,7 +32,7 @@ class TestAscii2Bin(unittest.TestCase):
         for f in ["Hawc2bin.sel", "Hawc2bin.dat"]:
             if os.path.exists(testfilepath + f):
                 os.remove(testfilepath + f)
-        ascii2bin(testfilepath + "Hawc2ascii.sel", testfilepath + "Hawc2bin.sel", ui=TextUI())
+        ascii2bin(testfilepath + "Hawc2ascii.sel", testfilepath + "Hawc2bin.sel")
 
         ascii_file = Hawc2io.ReadHawc2(testfilepath + 'Hawc2ascii')
         bin_file = Hawc2io.ReadHawc2(testfilepath + "Hawc2bin")
@@ -48,12 +40,10 @@ class TestAscii2Bin(unittest.TestCase):
         np.testing.assert_array_almost_equal(ascii_file.ReadAscii(), bin_file.ReadBinary(), 1)
         self.assertEqual(ascii_file.ChInfo, bin_file.ChInfo)
 
-
     def testSizeOfFile(self):
         self.assertEqual(size_from_file(testfilepath + "Hawc2ascii.sel"), (800, 28))
 
 
-
 if __name__ == "__main__":
     #import sys;sys.argv = ['', 'Test.testName']
     unittest.main()
-- 
GitLab