DataComparerLibrary 0.849__tar.gz → 0.850__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.
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/PKG-INFO +44 -43
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/README.rst +36 -28
- datacomparerlibrary-0.850/pyproject.toml +34 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/field.py +4 -6
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/row.py +2 -4
- datacomparerlibrary-0.850/src/DataComparerLibrary/tools.py +23 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/twodarray.py +2 -4
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary.egg-info/PKG-INFO +44 -43
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary.egg-info/SOURCES.txt +1 -2
- datacomparerlibrary-0.850/src/DataComparerLibrary.egg-info/requires.txt +1 -0
- datacomparerlibrary-0.849/pyproject.toml +0 -6
- datacomparerlibrary-0.849/setup.py +0 -50
- datacomparerlibrary-0.849/src/DataComparerLibrary/tools.py +0 -8
- datacomparerlibrary-0.849/src/DataComparerLibrary/version.py +0 -3
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/LICENSE.txt +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/setup.cfg +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/__init__.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/datacomparer.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/datasorter.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/datetimehandler.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/delimitertranslator.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/fileconverter.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/report.py +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary.egg-info/dependency_links.txt +0 -0
- {datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary.egg-info/top_level.txt +0 -0
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: DataComparerLibrary
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.850
|
|
4
4
|
Summary: For comparing csv-files, 2d-array with a csv-file or 2d-arrays. For comparing text-files, text variable with a text-file or text variables. Including a sorting module.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Keywords: robotframework testing test-automation datacompare
|
|
10
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
5
|
+
Author-email: René Philip Zuijderduijn <datacomparerlibrary@outlook.com>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Keywords: robotframework,Robot Framework,testing,test-automation,datacompare,data compare,compare csv files,compare text files,compare txt files,compare arrays,compare text
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
9
|
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
|
|
12
10
|
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
13
11
|
Classifier: Programming Language :: Python :: 3.8
|
|
@@ -16,17 +14,12 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development :: Testing
|
|
18
|
+
Requires-Python: >=3.8
|
|
19
19
|
Description-Content-Type: text/x-rst
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
|
-
|
|
22
|
-
Dynamic: author-email
|
|
23
|
-
Dynamic: classifier
|
|
24
|
-
Dynamic: description
|
|
25
|
-
Dynamic: description-content-type
|
|
26
|
-
Dynamic: keywords
|
|
27
|
-
Dynamic: license
|
|
21
|
+
Requires-Dist: python-dateutil
|
|
28
22
|
Dynamic: license-file
|
|
29
|
-
Dynamic: summary
|
|
30
23
|
|
|
31
24
|
===================
|
|
32
25
|
DataComparerLibrary
|
|
@@ -94,6 +87,10 @@ The DataComparerLibrary can be used for:
|
|
|
94
87
|
| With {INTEGER} in the expected data file you can make clear that the data of a field/cell of the actual data should be an
|
|
95
88
|
integer. This can be helpful for fields that have constant changing integer values. For example integer id's.
|
|
96
89
|
|
|
|
90
|
+
| {NOT(...)}:
|
|
91
|
+
| With {NOT(...)} in the expected data file you can make clear that data of a field/cell should not match the unexpected data.
|
|
92
|
+
| At "Examples comparing Actual Data with Expected Data" you can find some examples how to use it.
|
|
93
|
+
|
|
|
97
94
|
| {NOW()...:....}:
|
|
98
95
|
| With {NOW()} in the expected data file you can make clear that the data of a field/cell or part of a field/cell of the actual
|
|
99
96
|
data should be (a part of) a date. You can let calculate the current or a date in the past or future. Calculation is
|
|
@@ -169,34 +166,38 @@ Below there is an example of actual and expected data with some different cases.
|
|
|
169
166
|
Based on current datetime = 2023-09-06 19:04:00 (example):
|
|
170
167
|
|
|
171
168
|
|
|
172
|
-
|
|
173
|
-
| Actual csv file or 2d-array
|
|
174
|
-
|
|
175
|
-
| id | name
|
|
176
|
-
|
|
177
|
-
| 87 | John
|
|
178
|
-
|
|
179
|
-
| 88 | Bert
|
|
180
|
-
|
|
181
|
-
| 89 | Klaas
|
|
182
|
-
|
|
183
|
-
| 90 | Joe
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
|
191
|
-
|
|
192
|
-
|
|
|
193
|
-
|
|
194
|
-
| {INTEGER} |
|
|
195
|
-
|
|
196
|
-
| {INTEGER} |
|
|
197
|
-
|
|
198
|
-
| {INTEGER} |
|
|
199
|
-
|
|
169
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
170
|
+
| Actual csv file or 2d-array |
|
|
171
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
172
|
+
| id | name | city | start datetime | code | password |
|
|
173
|
+
+==============+=============+==============+=================================+============+=============+
|
|
174
|
+
| 87 | John | London | 2019-09-01 10:00:15 | abc1 | xxxxxxxx |
|
|
175
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
176
|
+
| 88 | Bert | Amsterdam | 2023/09/06 19:02:00 | | xxxxxxxx |
|
|
177
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
178
|
+
| 89 | Klaas | Brussel | 23-8-6 12:04:17 | 5ghi | xxxxxxxx |
|
|
179
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
180
|
+
| 90 | Joe | Helsinki | 08062025 12:04:17 | 99fg | xxxxxxxx |
|
|
181
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
182
|
+
| 91 | Mike | Berlin | 2023/09/06 19:02:00 | 123 | xxxxxxxx |
|
|
183
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
187
|
+
| Expected csv file or 2d-array |
|
|
188
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
189
|
+
| id | name | city | start datetime | code | password |
|
|
190
|
+
+==============+=============+==============+=================================+============+=============+
|
|
191
|
+
| {INTEGER} | John | London | {NOW()-4Y5D:YYYY-MM-DD} | abc1 | {PRESENT} |
|
|
192
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
193
|
+
| {INTEGER} | Bert | Amsterdam | {NOW():YYYY/MM/DD} {SKIP} | {EMPTY} | {PRESENT} |
|
|
194
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
195
|
+
| {INTEGER} | Klaas | Brussel | {NOW()-1M:YY-M-D} {SKIP} | 5ghi | {PRESENT} |
|
|
196
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
197
|
+
| {INTEGER} | Joe | Helsinki | {NOW()+1Y9M2D:DDMMYYYY} {SKIP} | {SKIP} | {PRESENT} |
|
|
198
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
199
|
+
| {INTEGER} | NOT("Jack"} | Berlin | {NOW():YYYY/MM/DD} {SKIP} | {NOT(456)} | {PRESENT} |
|
|
200
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
200
201
|
|
|
201
202
|
|
|
202
203
|
Comparing Text
|
|
@@ -64,6 +64,10 @@ The DataComparerLibrary can be used for:
|
|
|
64
64
|
| With {INTEGER} in the expected data file you can make clear that the data of a field/cell of the actual data should be an
|
|
65
65
|
integer. This can be helpful for fields that have constant changing integer values. For example integer id's.
|
|
66
66
|
|
|
|
67
|
+
| {NOT(...)}:
|
|
68
|
+
| With {NOT(...)} in the expected data file you can make clear that data of a field/cell should not match the unexpected data.
|
|
69
|
+
| At "Examples comparing Actual Data with Expected Data" you can find some examples how to use it.
|
|
70
|
+
|
|
|
67
71
|
| {NOW()...:....}:
|
|
68
72
|
| With {NOW()} in the expected data file you can make clear that the data of a field/cell or part of a field/cell of the actual
|
|
69
73
|
data should be (a part of) a date. You can let calculate the current or a date in the past or future. Calculation is
|
|
@@ -139,34 +143,38 @@ Below there is an example of actual and expected data with some different cases.
|
|
|
139
143
|
Based on current datetime = 2023-09-06 19:04:00 (example):
|
|
140
144
|
|
|
141
145
|
|
|
142
|
-
|
|
143
|
-
| Actual csv file or 2d-array
|
|
144
|
-
|
|
145
|
-
| id | name
|
|
146
|
-
|
|
147
|
-
| 87 | John
|
|
148
|
-
|
|
149
|
-
| 88 | Bert
|
|
150
|
-
|
|
151
|
-
| 89 | Klaas
|
|
152
|
-
|
|
153
|
-
| 90 | Joe
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
|
161
|
-
|
|
162
|
-
|
|
|
163
|
-
|
|
164
|
-
| {INTEGER} |
|
|
165
|
-
|
|
166
|
-
| {INTEGER} |
|
|
167
|
-
|
|
168
|
-
| {INTEGER} |
|
|
169
|
-
|
|
146
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
147
|
+
| Actual csv file or 2d-array |
|
|
148
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
149
|
+
| id | name | city | start datetime | code | password |
|
|
150
|
+
+==============+=============+==============+=================================+============+=============+
|
|
151
|
+
| 87 | John | London | 2019-09-01 10:00:15 | abc1 | xxxxxxxx |
|
|
152
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
153
|
+
| 88 | Bert | Amsterdam | 2023/09/06 19:02:00 | | xxxxxxxx |
|
|
154
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
155
|
+
| 89 | Klaas | Brussel | 23-8-6 12:04:17 | 5ghi | xxxxxxxx |
|
|
156
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
157
|
+
| 90 | Joe | Helsinki | 08062025 12:04:17 | 99fg | xxxxxxxx |
|
|
158
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
159
|
+
| 91 | Mike | Berlin | 2023/09/06 19:02:00 | 123 | xxxxxxxx |
|
|
160
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
164
|
+
| Expected csv file or 2d-array |
|
|
165
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
166
|
+
| id | name | city | start datetime | code | password |
|
|
167
|
+
+==============+=============+==============+=================================+============+=============+
|
|
168
|
+
| {INTEGER} | John | London | {NOW()-4Y5D:YYYY-MM-DD} | abc1 | {PRESENT} |
|
|
169
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
170
|
+
| {INTEGER} | Bert | Amsterdam | {NOW():YYYY/MM/DD} {SKIP} | {EMPTY} | {PRESENT} |
|
|
171
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
172
|
+
| {INTEGER} | Klaas | Brussel | {NOW()-1M:YY-M-D} {SKIP} | 5ghi | {PRESENT} |
|
|
173
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
174
|
+
| {INTEGER} | Joe | Helsinki | {NOW()+1Y9M2D:DDMMYYYY} {SKIP} | {SKIP} | {PRESENT} |
|
|
175
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
176
|
+
| {INTEGER} | NOT("Jack"} | Berlin | {NOW():YYYY/MM/DD} {SKIP} | {NOT(456)} | {PRESENT} |
|
|
177
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
170
178
|
|
|
171
179
|
|
|
172
180
|
Comparing Text
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["pkginfo>=1.12", "setuptools>=80", "twine>=6.0.1", "wheel>=0.41.2"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
[project]
|
|
7
|
+
name = "DataComparerLibrary"
|
|
8
|
+
description = "For comparing csv-files, 2d-array with a csv-file or 2d-arrays. For comparing text-files, text variable with a text-file or text variables. Including a sorting module."
|
|
9
|
+
version = "0.850"
|
|
10
|
+
dependencies = ["python-dateutil"]
|
|
11
|
+
authors = [{ name = "René Philip Zuijderduijn", email = "datacomparerlibrary@outlook.com" }]
|
|
12
|
+
readme = "README.rst"
|
|
13
|
+
license = "Apache-2.0"
|
|
14
|
+
license-files = ["LICENSE.txt"]
|
|
15
|
+
classifiers=[
|
|
16
|
+
"Development Status :: 5 - Production/Stable",
|
|
17
|
+
"Operating System :: Microsoft :: Windows :: Windows 10",
|
|
18
|
+
"Operating System :: Microsoft :: Windows :: Windows 11",
|
|
19
|
+
"Programming Language :: Python :: 3.8",
|
|
20
|
+
"Programming Language :: Python :: 3.9",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Topic :: Software Development :: Testing",
|
|
26
|
+
]
|
|
27
|
+
requires-python = ">=3.8"
|
|
28
|
+
keywords = ["robotframework", "Robot Framework","testing", "test-automation", "datacompare", "data compare", "compare csv files",
|
|
29
|
+
"compare text files", "compare txt files", "compare arrays", "compare text"]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
[tool.setuptools]
|
|
33
|
+
package-dir = { "" = "src" }
|
|
34
|
+
packages = ["DataComparerLibrary"]
|
|
@@ -143,12 +143,10 @@ class Field:
|
|
|
143
143
|
def __is_same_value_but_different_types(self, other_field_data):
|
|
144
144
|
# Verify if difference is a matter of string versus integer representation.
|
|
145
145
|
if str(self.field_data) == str(other_field_data):
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
Report.show_differences_comparation_result(self.row_nr, self.column_nr, self.field_data, other_field_data, "There is a difference between actual and expected data. Actual data is a string while expected data is an integer.")
|
|
151
|
-
return True
|
|
146
|
+
type_field_data = Tools.get_full_typename(self.field_data)
|
|
147
|
+
type_other_field_data = Tools.get_full_typename(other_field_data)
|
|
148
|
+
Report.show_differences_comparation_result(self.row_nr, self.column_nr, self.field_data, other_field_data, "There is a difference between actual and expected data. Actual data is a(n) " + type_field_data + " while expected data is a(n) " + type_other_field_data + ".")
|
|
149
|
+
return True
|
|
152
150
|
return False
|
|
153
151
|
|
|
154
152
|
|
|
@@ -19,14 +19,12 @@ class Row:
|
|
|
19
19
|
if column_nr >= self.number_of_columns:
|
|
20
20
|
equal = False
|
|
21
21
|
Report.show_differences_comparation_result(self.row_nr, column_nr, "", other_row.row_data[column_nr], "Column actual data is not PRESENT.")
|
|
22
|
-
continue
|
|
23
22
|
#
|
|
24
|
-
|
|
23
|
+
elif column_nr >= other_row.number_of_columns:
|
|
25
24
|
equal = False
|
|
26
25
|
Report.show_differences_comparation_result(self.row_nr, column_nr, self.row_data[column_nr], "", "Column expected data is not PRESENT.")
|
|
27
|
-
continue
|
|
28
26
|
#
|
|
29
|
-
|
|
27
|
+
elif not Field(self.row_data[column_nr], self.row_nr, column_nr).equals(Field(other_row.row_data[column_nr], self.row_nr, column_nr), template_literals_dict):
|
|
30
28
|
equal = False
|
|
31
29
|
#
|
|
32
30
|
return equal
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
class Tools:
|
|
2
|
+
@staticmethod
|
|
3
|
+
def is_integer(string):
|
|
4
|
+
if string[0] == '-':
|
|
5
|
+
# if a negative number
|
|
6
|
+
return string[1:].isdigit()
|
|
7
|
+
else:
|
|
8
|
+
return string.isdigit()
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@staticmethod
|
|
12
|
+
def get_full_typename(variable):
|
|
13
|
+
variable_type = type(variable).__name__
|
|
14
|
+
match variable_type:
|
|
15
|
+
case 'float':
|
|
16
|
+
long_variable_type = "float"
|
|
17
|
+
case 'int':
|
|
18
|
+
long_variable_type = "integer"
|
|
19
|
+
case 'str':
|
|
20
|
+
long_variable_type = "string"
|
|
21
|
+
case _:
|
|
22
|
+
long_variable_type = None
|
|
23
|
+
return long_variable_type
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/twodarray.py
RENAMED
|
@@ -20,17 +20,15 @@ class TwoDArray:
|
|
|
20
20
|
Report.show_differences_comparation_result(row_nr, 0, "", "", "Row actual data is not PRESENT. Row expected data is EMPTY.")
|
|
21
21
|
else:
|
|
22
22
|
Report.show_differences_comparation_result(row_nr, 0, "", other_two_d_array.two_d_array_data[row_nr][0], "Row actual data is not PRESENT.")
|
|
23
|
-
continue
|
|
24
23
|
#
|
|
25
|
-
|
|
24
|
+
elif row_nr >= other_two_d_array.number_of_rows:
|
|
26
25
|
equal = False
|
|
27
26
|
if len(self.two_d_array_data[row_nr]) == 0:
|
|
28
27
|
Report.show_differences_comparation_result(row_nr, 0, "", "", "Row actual data is EMPTY. Row expected data is not PRESENT.")
|
|
29
28
|
else:
|
|
30
29
|
Report.show_differences_comparation_result(row_nr, 0, self.two_d_array_data[row_nr][0], "", "Row expected data is not PRESENT.")
|
|
31
|
-
continue
|
|
32
30
|
#
|
|
33
|
-
|
|
31
|
+
elif not Row(self.two_d_array_data[row_nr], row_nr).equals(Row(other_two_d_array.two_d_array_data[row_nr], row_nr), template_literals_dict):
|
|
34
32
|
equal = False
|
|
35
33
|
#
|
|
36
34
|
return equal
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary.egg-info/PKG-INFO
RENAMED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: DataComparerLibrary
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.850
|
|
4
4
|
Summary: For comparing csv-files, 2d-array with a csv-file or 2d-arrays. For comparing text-files, text variable with a text-file or text variables. Including a sorting module.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Keywords: robotframework testing test-automation datacompare
|
|
10
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
5
|
+
Author-email: René Philip Zuijderduijn <datacomparerlibrary@outlook.com>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Keywords: robotframework,Robot Framework,testing,test-automation,datacompare,data compare,compare csv files,compare text files,compare txt files,compare arrays,compare text
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
9
|
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
|
|
12
10
|
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
13
11
|
Classifier: Programming Language :: Python :: 3.8
|
|
@@ -16,17 +14,12 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development :: Testing
|
|
18
|
+
Requires-Python: >=3.8
|
|
19
19
|
Description-Content-Type: text/x-rst
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
|
-
|
|
22
|
-
Dynamic: author-email
|
|
23
|
-
Dynamic: classifier
|
|
24
|
-
Dynamic: description
|
|
25
|
-
Dynamic: description-content-type
|
|
26
|
-
Dynamic: keywords
|
|
27
|
-
Dynamic: license
|
|
21
|
+
Requires-Dist: python-dateutil
|
|
28
22
|
Dynamic: license-file
|
|
29
|
-
Dynamic: summary
|
|
30
23
|
|
|
31
24
|
===================
|
|
32
25
|
DataComparerLibrary
|
|
@@ -94,6 +87,10 @@ The DataComparerLibrary can be used for:
|
|
|
94
87
|
| With {INTEGER} in the expected data file you can make clear that the data of a field/cell of the actual data should be an
|
|
95
88
|
integer. This can be helpful for fields that have constant changing integer values. For example integer id's.
|
|
96
89
|
|
|
|
90
|
+
| {NOT(...)}:
|
|
91
|
+
| With {NOT(...)} in the expected data file you can make clear that data of a field/cell should not match the unexpected data.
|
|
92
|
+
| At "Examples comparing Actual Data with Expected Data" you can find some examples how to use it.
|
|
93
|
+
|
|
|
97
94
|
| {NOW()...:....}:
|
|
98
95
|
| With {NOW()} in the expected data file you can make clear that the data of a field/cell or part of a field/cell of the actual
|
|
99
96
|
data should be (a part of) a date. You can let calculate the current or a date in the past or future. Calculation is
|
|
@@ -169,34 +166,38 @@ Below there is an example of actual and expected data with some different cases.
|
|
|
169
166
|
Based on current datetime = 2023-09-06 19:04:00 (example):
|
|
170
167
|
|
|
171
168
|
|
|
172
|
-
|
|
173
|
-
| Actual csv file or 2d-array
|
|
174
|
-
|
|
175
|
-
| id | name
|
|
176
|
-
|
|
177
|
-
| 87 | John
|
|
178
|
-
|
|
179
|
-
| 88 | Bert
|
|
180
|
-
|
|
181
|
-
| 89 | Klaas
|
|
182
|
-
|
|
183
|
-
| 90 | Joe
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
|
191
|
-
|
|
192
|
-
|
|
|
193
|
-
|
|
194
|
-
| {INTEGER} |
|
|
195
|
-
|
|
196
|
-
| {INTEGER} |
|
|
197
|
-
|
|
198
|
-
| {INTEGER} |
|
|
199
|
-
|
|
169
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
170
|
+
| Actual csv file or 2d-array |
|
|
171
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
172
|
+
| id | name | city | start datetime | code | password |
|
|
173
|
+
+==============+=============+==============+=================================+============+=============+
|
|
174
|
+
| 87 | John | London | 2019-09-01 10:00:15 | abc1 | xxxxxxxx |
|
|
175
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
176
|
+
| 88 | Bert | Amsterdam | 2023/09/06 19:02:00 | | xxxxxxxx |
|
|
177
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
178
|
+
| 89 | Klaas | Brussel | 23-8-6 12:04:17 | 5ghi | xxxxxxxx |
|
|
179
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
180
|
+
| 90 | Joe | Helsinki | 08062025 12:04:17 | 99fg | xxxxxxxx |
|
|
181
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
182
|
+
| 91 | Mike | Berlin | 2023/09/06 19:02:00 | 123 | xxxxxxxx |
|
|
183
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
187
|
+
| Expected csv file or 2d-array |
|
|
188
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
189
|
+
| id | name | city | start datetime | code | password |
|
|
190
|
+
+==============+=============+==============+=================================+============+=============+
|
|
191
|
+
| {INTEGER} | John | London | {NOW()-4Y5D:YYYY-MM-DD} | abc1 | {PRESENT} |
|
|
192
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
193
|
+
| {INTEGER} | Bert | Amsterdam | {NOW():YYYY/MM/DD} {SKIP} | {EMPTY} | {PRESENT} |
|
|
194
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
195
|
+
| {INTEGER} | Klaas | Brussel | {NOW()-1M:YY-M-D} {SKIP} | 5ghi | {PRESENT} |
|
|
196
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
197
|
+
| {INTEGER} | Joe | Helsinki | {NOW()+1Y9M2D:DDMMYYYY} {SKIP} | {SKIP} | {PRESENT} |
|
|
198
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
199
|
+
| {INTEGER} | NOT("Jack"} | Berlin | {NOW():YYYY/MM/DD} {SKIP} | {NOT(456)} | {PRESENT} |
|
|
200
|
+
+--------------+-------------+--------------+---------------------------------+------------+-------------+
|
|
200
201
|
|
|
201
202
|
|
|
202
203
|
Comparing Text
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary.egg-info/SOURCES.txt
RENAMED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
LICENSE.txt
|
|
2
2
|
README.rst
|
|
3
3
|
pyproject.toml
|
|
4
|
-
setup.py
|
|
5
4
|
src/DataComparerLibrary/__init__.py
|
|
6
5
|
src/DataComparerLibrary/datacomparer.py
|
|
7
6
|
src/DataComparerLibrary/datasorter.py
|
|
@@ -13,8 +12,8 @@ src/DataComparerLibrary/report.py
|
|
|
13
12
|
src/DataComparerLibrary/row.py
|
|
14
13
|
src/DataComparerLibrary/tools.py
|
|
15
14
|
src/DataComparerLibrary/twodarray.py
|
|
16
|
-
src/DataComparerLibrary/version.py
|
|
17
15
|
src/DataComparerLibrary.egg-info/PKG-INFO
|
|
18
16
|
src/DataComparerLibrary.egg-info/SOURCES.txt
|
|
19
17
|
src/DataComparerLibrary.egg-info/dependency_links.txt
|
|
18
|
+
src/DataComparerLibrary.egg-info/requires.txt
|
|
20
19
|
src/DataComparerLibrary.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
python-dateutil
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
|
|
3
|
-
"""Setup script for DataComparerLibrary distributions"""
|
|
4
|
-
|
|
5
|
-
import os
|
|
6
|
-
import re
|
|
7
|
-
import sys
|
|
8
|
-
from distutils.core import setup
|
|
9
|
-
from os.path import join, dirname, abspath
|
|
10
|
-
from pathlib import Path
|
|
11
|
-
from setuptools import setup
|
|
12
|
-
|
|
13
|
-
sys.path.insert(0, os.path.join('src', 'DataComparerLibrary'))
|
|
14
|
-
|
|
15
|
-
# read the contents of your README file
|
|
16
|
-
this_directory = Path(__file__).parent
|
|
17
|
-
README = (this_directory / "README.rst").read_text()
|
|
18
|
-
|
|
19
|
-
with open(join(this_directory, 'src', 'DataComparerLibrary', 'version.py')) as f:
|
|
20
|
-
VERSION = re.search("\nVERSION = '(.*)'", f.read()).group(1)
|
|
21
|
-
|
|
22
|
-
def main():
|
|
23
|
-
setup(name='DataComparerLibrary',
|
|
24
|
-
version=VERSION,
|
|
25
|
-
description="For comparing csv-files, 2d-array with a csv-file or 2d-arrays. For comparing text-files, text variable with a text-file or text variables. Including a sorting module.",
|
|
26
|
-
long_description=README,
|
|
27
|
-
long_description_content_type="text/x-rst",
|
|
28
|
-
url="",
|
|
29
|
-
author="René Philip Zuijderduijn",
|
|
30
|
-
author_email="datacomparerlibrary@outlook.com",
|
|
31
|
-
license="Apache",
|
|
32
|
-
classifiers=[
|
|
33
|
-
"License :: OSI Approved :: Apache Software License",
|
|
34
|
-
"Operating System :: Microsoft :: Windows :: Windows 10",
|
|
35
|
-
"Operating System :: Microsoft :: Windows :: Windows 11",
|
|
36
|
-
"Programming Language :: Python :: 3.8",
|
|
37
|
-
"Programming Language :: Python :: 3.9",
|
|
38
|
-
"Programming Language :: Python :: 3.10",
|
|
39
|
-
"Programming Language :: Python :: 3.11",
|
|
40
|
-
"Programming Language :: Python :: 3.12",
|
|
41
|
-
"Programming Language :: Python :: 3.13",
|
|
42
|
-
],
|
|
43
|
-
keywords='robotframework testing test-automation datacompare',
|
|
44
|
-
package_dir={'': 'src'},
|
|
45
|
-
packages=['DataComparerLibrary'],
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if __name__ == "__main__":
|
|
50
|
-
main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/datacomparer.py
RENAMED
|
File without changes
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/datasorter.py
RENAMED
|
File without changes
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/datetimehandler.py
RENAMED
|
File without changes
|
|
File without changes
|
{datacomparerlibrary-0.849 → datacomparerlibrary-0.850}/src/DataComparerLibrary/fileconverter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|