execsql2 1.130.1__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.
@@ -0,0 +1,129 @@
1
+ Templates for execsql.py
2
+ ===================================================
3
+
4
+ Several types of templates are provided that may be useful in conjunction with execsql.py. These are:
5
+
6
+ *execsql.conf*
7
+ An annotated version of the configuration file that includes all configuration settings
8
+ and notes on their usage.
9
+
10
+ *script_template.sql*
11
+ A framework for SQL scripts that make use of several execsql features. It includes sections
12
+ for custom configuration settings, custom logfile creation, and reporting of unexpected
13
+ script exits (through user cancellation or errors).
14
+
15
+ *config_settings.sqlite* and *example_config_prompt.sql*
16
+ A SQLite database containing specifications for all settings configurable with the CONFIG
17
+ metacommand, in the form used by the PROMPT ENTRY_FORM metacommand, and a SQL script
18
+ illustrating how this database can be used to prompt the user for some or all of the
19
+ configuration settings. *execsql* version 1.63.0 or later is needed to use this script.
20
+
21
+
22
+ Functional Scripts for execsql.py
23
+ =================================================
24
+
25
+ These script files provide useful functionality that should be accessed by including these
26
+ scripts in other SQL scripts and then calling the sub-scripts that they contain.
27
+
28
+ Upsert Scripts
29
+ ------------------------------------------------
30
+
31
+ These scripts perform automated upsert operations on any tables of
32
+ any database in a DBMS that supports the standard
33
+ *information_schema* views. Currently that includes:
34
+
35
+ * PostgreSQL: pg_upsert.sql;
36
+
37
+ * MySQL/MariaDB: md_upsert.sql; and
38
+
39
+ * SQL Server: ss_upsert.sql.
40
+
41
+ These scripts perform the upsert operation by using standard SQL
42
+ UPDATE and INSERT statements rather than DBMS-specific implementations
43
+ of the SQL MERGE statement.
44
+
45
+ Features of these upsert scripts include:
46
+
47
+ * They can be applied to any table in any database without modification.
48
+
49
+ * They can be applied to multiple tables simultaneously, and will
50
+ perform the upsert operations in top-down order to maintain
51
+ referential integrity among tables.
52
+
53
+ * Prior to performing the upsert operation, they check for null
54
+ values in the columns of each staging table that must be non-null in the
55
+ corresponding base table.
56
+
57
+ * Prior to performing the upsert operation, they check for duplicate
58
+ primary key values in the staging tables.
59
+
60
+ * Prior to performing the upsert operation, they check foreign keys
61
+ against both base tables and any other appropriate staging tables.
62
+
63
+ * They will not attempt to perform the upsert operation on any
64
+ table if there are any violations of the non-null
65
+ checks, primary key checks, or foreign key checks.
66
+
67
+ * They produce a table that either a) summarizes the number of
68
+ rows that violated each type of non-null and foreign-key check,
69
+ or b) summarizes the number of rows updated and the number of
70
+ rows inserted for each table.
71
+
72
+ * Optionally, they will display all the changes to be made in a
73
+ GUI interface, prompting the user to approve each update and
74
+ insert operation.
75
+
76
+ * Optionally, they will record all operations carried out in a
77
+ custom log file; this log may include the SQL statements executed
78
+ and the data values that were added or changed.
79
+
80
+ * If an execsql console is active, they will use the console's
81
+ status bar and progress bar to indicate the activity underway.
82
+
83
+
84
+ Complete documentation is available at
85
+ `Read The Docs (execsql-upsert) <https://execsql-upsert.readthedocs.io/en/latest/>`_.
86
+
87
+
88
+ Table Comparison Scripts
89
+ ----------------------------------------------------------
90
+
91
+ These scripts generate SQL that can be used to identify differences
92
+ in the content of two tables with equivalent structure. These are
93
+ specifically intended to be base and staging tables. Running the
94
+ SQL provided by these scripts will provide different summaries of
95
+ the types of changes that would be made to the base tables by
96
+ upserting the staging tables.
97
+
98
+ These scripts work with
99
+ any tables of any database in a DBMS that supports the standard
100
+ *information_schema* views. Currently that includes:
101
+
102
+ * PostgreSQL: pg_compare.sql;
103
+
104
+ * MySQL/MariaDB: md_compare.sql; and
105
+
106
+ * SQL Server: ss_compare.sql.
107
+
108
+ Complete documentation is available at
109
+ `Read The Docs (execsql-compare) <https://execsql-compare.readthedocs.io/en/latest/>`_.
110
+
111
+
112
+ Glossary Creation Scripts
113
+ ------------------------------------------------------------
114
+
115
+ These scripts create a glossary of column names or other terms
116
+ that can be exported to accompany a data summary. These scripts work with
117
+ any tables of any database in a DBMS that supports the standard
118
+ *information_schema* views. Currently that includes:
119
+
120
+ * PostgreSQL: pg_glossary.sql;
121
+
122
+ * MySQL/MariaDB: md_glossary.sql; and
123
+
124
+ * SQL Server: ss_glossary.sql.
125
+
126
+ Complete documentation is available at
127
+ `Read The Docs (execsql-glossary) <https://execsql-compare.readthedocs.io/en/latest/>`_.
128
+
129
+
@@ -0,0 +1,159 @@
1
+ -- example_config_prompt.sql
2
+ --
3
+ -- PURPOSE
4
+ -- Illustrate the use of the 'config_settings.sqlite' database
5
+ -- to prompt for configuration settings.
6
+ --
7
+ -- NOTES
8
+ -- 1. The initial connection is assumed to have been made to some
9
+ -- database other than the configuration database.
10
+ -- 2. The 'prompt_config' script defined in this file will connect
11
+ -- to the configuration database using the alias "config_db"
12
+ -- if that alias exists, or it will connect to the (SQLite)
13
+ -- configuration database if the "config_db" substitution
14
+ -- variable contains a valid path and name to the configuration
15
+ -- database.
16
+ -- 3. This requires excecsql.py version 1.63.0 or greater.
17
+ -- 4. To replicate this example (or something like it) in production code:
18
+ -- a. Include the "prompt_config" script (defined below) in
19
+ -- your own script.
20
+ -- b. Either define the "sub_config" variable so that it contains
21
+ -- the path and filename of the configuration database,
22
+ -- or use the CONNECT metacommand to connect to that database
23
+ -- yourself with an alias of "config_db".
24
+ -- c. Possibly change the 'usage' argument for the 'prompt_config"
25
+ -- script to be "Import", "Export", or "AllButDAO" instead of "All."
26
+ --
27
+ -- AUTHOR
28
+ -- Dreas Nielsen (RDN)
29
+ --
30
+ -- HISTORY
31
+ -- Date Remarks
32
+ -- ---------- -----------------------------------------------------
33
+ -- 2020-02-15 Created. RDN.
34
+ -- 2020-02-16 Modified documentation. RDN.
35
+ -- 2020-02-16 Corrected assignments. RDN.
36
+ -- 2020-02-22 Added SCAN_LINES and GUI_LEVEL. RDN.
37
+ -- 2020-03-22 Added HDF5_TEXT_LEN and LOG_DATAVARS. RDN.
38
+ -- 2020-03-30 Added EXPORT_ROW_BUFFER. RDN.
39
+ -- 2020-07-30 Added DEDUP_COLUMN_HEADERS. RDN.
40
+ -- 2020-11-08 Added ONLY_STRINGS. RDN.
41
+ -- 2020-11-14 Added CONSOLE HEIGHT and CONSOLE WIDTH. These are
42
+ -- not subcommands of the CONFIG metacommand, but they
43
+ -- now affect future consoles, and so function similarly. RDN.
44
+ -- 2021-02-15 Added CREATE_COL_HEADERS and ZIP_BUFFER_MB. RDN.
45
+ -- 2021-09-19 Added TRIM_STRINGS and REPLACE_NEWLINES. RDN.
46
+ -- 2023-08-25 Changed names of a couple of sub vars. Added
47
+ -- DELETE_EMPTY_COLUMNS, FOLD_COLUMN_HEADERS, TRIM_COLUMN_HEADERS,
48
+ -- WRITE_PREFIX, and WRITE_SUFFIX. RDN.
49
+ -- ==================================================================
50
+
51
+
52
+ -- ##################################################################
53
+ -- Configuration
54
+ -- ==================================================================
55
+
56
+ -- Path and name of the configuration settings database.
57
+ -- !x! sub config_db ./config_settings.sqlite
58
+
59
+
60
+ -- ##################################################################
61
+ -- Usage illustration
62
+ -- ==================================================================
63
+ -- This makes use of the 'prompt_config' script, defined below.
64
+
65
+ -- Prompt the user
66
+ -- !x! execute script prompt_config with arguments (usage=All)
67
+ -- Display all configuration settings (including settings not set interactively).
68
+ -- !x! debug write config
69
+
70
+
71
+
72
+
73
+
74
+ -- ##################################################################
75
+ -- Scripts
76
+ -- ==================================================================
77
+
78
+
79
+ -- -----------------------------------------------------------------
80
+ -- prompt_config
81
+ --
82
+ -- Creates and displays prompts for configuration settings,
83
+ -- modifying the global settings per the user's input.
84
+ --
85
+ -- Argument
86
+ -- usage : Values of the 'usage' column in the 'configusage'
87
+ -- table of the configuration settings database.
88
+ -- This should be 'All', 'AllButDAO', 'Import', or 'Export'.
89
+ -- Other values may be used if they have been added
90
+ -- to the 'configusage' table
91
+ --
92
+ -- Effects
93
+ -- 1. Modifies global settings.
94
+ -- 2. Creates a temporary table with a UUID as a name in the configuration database.
95
+ --
96
+ -- Requirements
97
+ -- Either:
98
+ -- * An existing connection to the configuration database
99
+ -- with an alias of "config_db"; or
100
+ -- * A substitution variable named "config_db" that defines
101
+ -- the path and filename to the (SQLite) configuration
102
+ -- database.
103
+ -- -----------------------------------------------------------------
104
+
105
+ -- !x! begin script prompt_config with parameters (usage)
106
+ -- !x! sub entry_db !!$current_alias!!
107
+ -- !x! if(alias_defined(config_db))
108
+ -- !x! use config_db
109
+ -- !x! else
110
+ -- !x! if(sub_defined(config_db))
111
+ -- !x! connect to sqlite(file=!!config_db!!) as config_db
112
+ -- !x! use config_db
113
+ -- !x! else
114
+ -- !x! halt message "The configuration settings database is not open and its name is not specified."
115
+ -- !x! endif
116
+ -- !x! endif
117
+ -- The following SQL syntax is for SQLite. A UUID is used for the table name
118
+ -- for portability to a multi-user DBMS.
119
+ -- !x! sub ~spectbl !!$uuid!!
120
+ create temporary table "!!~spectbl!!" as
121
+ select cs.*
122
+ from configspecs cs inner join configusage cu
123
+ on cu.sub_var = cs.sub_var
124
+ where
125
+ usage = '!!#usage!!';
126
+ -- !x! prompt entry_form !!~spectbl!! message "You may change any of the configuration settings below."
127
+ -- !x! if(sub_defined(~boolean_int)) {config boolean_int !!~boolean_int!!}
128
+ -- !x! if(sub_defined(~boolean_words)) {config boolean_words !!~boolean_words!!}
129
+ -- !x! if(sub_defined(~clean_column_headers)) {config clean_column_headers !!~clean_column_headers!!}
130
+ -- !x! if(sub_defined(~create_column_headers)) {config create_column_headers !!~create_column_headers!!}
131
+ -- !x! if(sub_defined(~dedup_col_hdrs)) {config dedup_column_headers !!~dedup_col_hdrs!!}
132
+ -- !x! if(sub_defined(~delete_empty_columns)) {config delete_empty_columns !!~delete_empty_columns!!}
133
+ -- !x! if(sub_defined(~empty_strings)) {config empty_strings !!~empty_strings!!}
134
+ -- !x! if(sub_defined(~fold_col_hdrs)) {config fold_column_headers !!~fold_col_hdrs!!}
135
+ -- !x! if(sub_defined(~trim_col_hdrs)) {config trim_column_headers !!~trim_col_hdrs!!}
136
+ -- !x! if(sub_defined(~only_strings)) {config only_strings !!~only_strings!!}
137
+ -- !x! if(sub_defined(~empty_rows)) {config empty_rows !!~empty_rows!!}
138
+ -- !x! if(sub_defined(~trim_strings)) {config trim_strings !!~trim_strings!!}
139
+ -- !x! if(sub_defined(~replace_newlines)) {config replace_newlines !!~replace_newlines!!}
140
+ -- !x! if(sub_defined(~scan_lines)) {config scan_lines !!~scan_lines!!}
141
+ -- !x! if(sub_defined(~import_common)) {config import_common_columns_only !!~import_common!!}
142
+ -- !x! if(sub_defined(~console_height)) {console height !!~console_height!!}
143
+ -- !x! if(sub_defined(~console_width)) {console width !!~console_width!!}
144
+ -- !x! if(sub_defined(~console_wait_done)) {config console wait_when_done !!~console_wait_done!!}
145
+ -- !x! if(sub_defined(~console_wait_err)) {config console wait_when_error !!~console_wait_err!!}
146
+ -- !x! if(sub_defined(~log_write)) {config log_write_messages !!~log_write!!}
147
+ -- !x! if(sub_defined(~quote_all)) {config quote_all_text !!~quote_all!!}
148
+ -- !x! if(sub_defined(~export_row_buffer)) {config export_row_buffer !!~export_row_buffer!!}
149
+ -- !x! if(sub_defined(~hdf5_len)) {config hdf5_text_len !!~hdf5_len!!}
150
+ -- !x! if(sub_defined(~gui_level)) {config gui_level !!~gui_level!!}
151
+ -- !x! if(sub_defined(~write_prefix)) {config write_prefix !!~write_prefix!!}
152
+ -- !x! if(sub_defined(~write_suffix)) {config write_suffix !!~write_suffix!!}
153
+ -- !x! if(sub_defined(~write_warnings)) {config write_warnings !!~write_warnings!!}
154
+ -- !x! if(sub_defined(~log_datavars)) {config log_datavars !!~log_datavars!!}
155
+ -- !x! if(sub_defined(~dao_flush)) {config dao_flush_delay_secs !!~dao_flush!!}
156
+ -- !x! if(sub_defined(~zip_buffer_mb)) {config zip_buffer_mb !!~zip_buffer_mb!!}
157
+ -- !x! use !!entry_db!!
158
+ -- !x! end script prompt_config
159
+
@@ -0,0 +1,289 @@
1
+ # execsql.conf
2
+ #
3
+ # PURPOSE
4
+ # Configuration file for execsql.py
5
+ # See http://execsql.osdn.io/configuration.html
6
+ #
7
+ # AUTHORS
8
+ #
9
+ #
10
+ # HISTORY
11
+ # Date Revisions
12
+ # ----------- ----------------------------------------------------
13
+ #
14
+ #===================================================================
15
+
16
+ [connect]
17
+ # Connection information for the initial database connection.
18
+
19
+ # Database type. p: Postgres, l: SQLite, m: MySQL/MariaDB, f: Firebird, s: SQL Server,
20
+ # a: Access, o: Oracle, d: DSN
21
+ #db_type=
22
+
23
+ # Server name for client-server databases.
24
+ #server=
25
+
26
+ # Database name for client-server databases.
27
+ #db=
28
+
29
+ # Database name for file-based databases.
30
+ #db_file=
31
+
32
+ # Port number for server-based databases. Only needed if not the default.
33
+ #port=
34
+
35
+ # User name for client-server databases.
36
+ #username=
37
+
38
+ # User name for password-protected MS-Access databases if not "Admin".
39
+ #access_username=
40
+
41
+ # Whether or not a password is necessary, and a prompt should be issued.
42
+ # Values: Yes or No. Default: No.
43
+ #password_prompt=No
44
+
45
+ # Whether a new PostgreSQL or SQLite database should be created.
46
+ # Values: Yes or No. Default: Yes
47
+ #new_db=Yes
48
+
49
+
50
+ [encoding]
51
+ # Character encoding for text input and output.
52
+
53
+ #database=
54
+ #script=
55
+ #import=
56
+ #output=
57
+
58
+ # How to handle incompatible encodings. Values: ignore, replace, xmlcharrefreplace, or backslashreplace.
59
+ #error_response=
60
+
61
+
62
+ [input]
63
+ # Settings to control the handling of different conditions or data representations in input data.
64
+
65
+ # Whether or not to convert numeric values to double precision when using MS-Access.
66
+ # Values: Yes or No. Default: No.
67
+ #access_use_numeric=No
68
+
69
+ # Whether or not to treat integer values of 0 and 1 as Booleans.
70
+ # Values: Yes or No. Default: Yes.
71
+ #boolean_int=Yes
72
+
73
+ # Whether or not to recognize only full words as Boolean, not "Y", "N", "T", and "F".
74
+ # Values: Yes or No. Default: No.
75
+ #boolean_words=No
76
+
77
+ # Whether or not to replace non-alphanumeric characters in column names of imported data with an underscore.
78
+ # Values: Yes or No. Default: No.
79
+ #clean_column_headers=No
80
+
81
+ # Whether or not to create column headers when they are missing from an input file.
82
+ # Created column headers will take the form "Col" followed by the column number.
83
+ # Values: Yes or No. Default: No.
84
+ #create_column_headers=No
85
+
86
+ # Whether or not to modify duplicated column names of imported data by appending an underscore and
87
+ # the column number to make column names unique.
88
+ # Values: Yes or No. Default: No.
89
+ #dedup_column_headers=No
90
+
91
+ # Whether or not to completely delete columns if the headers are missing from an input file.
92
+ # Values: Yes or No. Default: No.
93
+ #delete_empy_columns=No
94
+
95
+ # Wehther or not to import completely empty rows.
96
+ # Values: Yes or No. Default: Yes.
97
+ #empty_rows=Yes
98
+
99
+ # Whether empty strings in input data are preserved or replaced by NULL.
100
+ # Values: Yes or No. Default: Yes.
101
+ #empty_strings=Yes
102
+
103
+ # Whether or not to fold column headers to lowercase or uppercase, or leave them unchanged during IMPORT.
104
+ # Values: No, Lower, or Upper. Default: No.
105
+ #fold_column_headers=No
106
+
107
+ # The size of the import buffer, in kb, to be used by the fast file reading feature of Postgres.
108
+ #import_buffer=
109
+
110
+ # Whether to ignore extra column in an imported CSV file that are not in the target table.
111
+ # Values: Yes or No. Default: No.
112
+ #import_only_common_columns=No
113
+
114
+ # The number of rows to buffer from a data source when importing data and when a DBMS-specific
115
+ # fast file reading method can't be used.
116
+ # Value: A positive non-zero integer. Default: 1000
117
+ #import_row_buffer=1000
118
+
119
+ # The maximum value that will be assigned an integer data type when creating new tables.
120
+ #max_int=2147483647
121
+
122
+ # Whether or not the IMPORT metacommand will treat all columns as text, rather than trying
123
+ # to evaluate the data type for each column.
124
+ # Values: Yes or No. Default: No.
125
+ #only_strings=No
126
+
127
+ # Whether newlines embedded in imported text should be replaced with a single space.
128
+ # Value: Yes or No. Default: No.
129
+ #replace_newlines=No
130
+
131
+ # The number of lines in an input data file to scan to identify delimiters and quote characters.
132
+ # Value: a positive non-zero integer. Default: 1000
133
+ #scan_lines=1000
134
+
135
+ # Whether leading and/or trailing spaces and underscores should be removed from column headers.
136
+ # Value: None, Both, Left, or Right. Default: None
137
+ #trim_column_headers=None
138
+
139
+ # Whether leading and trailing whitespace on imported text should be removed.
140
+ # Value: Yes or No. Default: No.
141
+ #trim_strings=No
142
+
143
+
144
+ [output]
145
+ # Settings to control the output of messages and data.
146
+
147
+ # Whether all output of the WRITE metacommands should also be sent to execsql's log file.
148
+ # Values: Yes or No. Default: No.
149
+ #log_write_messages=No
150
+
151
+ # Whether to create any non-existent directories referenced in WRITE or EXPORT metacommands.
152
+ # Values: Yes or No. Default: No.
153
+ #make_export_dirs=No
154
+
155
+ # Whether to quote all text values written to a delimited text file by the EXPORT metacommand.
156
+ # Values: Yes or No. Default: No.
157
+ #quote_all_text=No
158
+
159
+ # The number of rows to buffer from the database when exporting data. Larger values produce
160
+ # faster exports, up to a point, but require more memory.
161
+ # Value: A positive non-zero integer. Default: 1000
162
+ #export_row_buffer=1000
163
+
164
+ # The length to be assigned to 'text' data types when exporting to the HDF5 format.
165
+ # Value: a positive non-zero integer. Default: 1000
166
+ # hdf5_text_len=1000
167
+
168
+ # The URI of a CSS file to be used when exporting to HTML.
169
+ #css_file=
170
+
171
+ # CSS style commands to be embedded in HTML export.
172
+ #css_style=
173
+
174
+ # The duration, in seconds, for execsql to continue to try opening a file that is to be
175
+ # written to with the WRITE metacommand, if there is an access conflict.
176
+ # Value: A positive non-zero number. Default: 600.
177
+ #outfile_open_timeout=600
178
+
179
+ # The name of the template processor to be used when exporting data using a template.
180
+ # Values: jinja or airspeed.
181
+ #template_processor=
182
+
183
+ # The size of the internal buffer used when the EXPORT metacommand exports data to
184
+ # a zipfile, in Mb.
185
+ # Value: any positive non-zero integer that is at least as large as the longest
186
+ # data row to be exported. Default: 10.
187
+ #zip_buffer_mb=10
188
+
189
+
190
+ [interface]
191
+ # Settings to control appearance or operation of GUI dialogs.
192
+
193
+ # The approximate height, in lines, of a console window created with the CONSOLE ON metacommand.
194
+ # Value: A positive non-zero integer greater than 3. Default: 25
195
+ #console_height=25
196
+
197
+ # Whether a console window that has been opened should remain open at the end of the script.
198
+ # Value: Yes or No. Default: No.
199
+ #console_wait_when_done=No
200
+
201
+ # Whether a console window that has been opened should remain open when an error occurs.
202
+ # Value: Yes or No. Default: No.
203
+ #console_wait_when_error_halt=No
204
+
205
+ # The approximate width, in characters, of a console window created with the CONSOLE ON metacommand.
206
+ # Value: A positive non-zero integer. Default: 100
207
+ #console_width=100
208
+
209
+ # Whether to write warning messages to the console as well as to the log file.
210
+ # Value: Yes or No. Default: No.
211
+ #write_warnings=No
212
+
213
+ # Text that will be prefixed to any output from the WRITE metacommand, with a space separator.
214
+ #write_prefix=
215
+
216
+ # Text that will be appended to any output from the WRITE metacommand, with a space separator.
217
+ #write_suffix=
218
+
219
+ # Usage of GUI dialogs. Values: 0 - none, 1 - passwords and pause metacommands, 2 - also for the halt
220
+ # metacommand, 3 - open a console window immediately. Default: 0.
221
+ #gui_level=0
222
+
223
+
224
+ [email]
225
+ # Settings that provide additional information that is required by the EMAIL metacommand.
226
+
227
+ # SMTP host identification
228
+ #host=
229
+ #port=
230
+ #username=
231
+ #password=
232
+ #use_ssl=
233
+ #use_tls=
234
+
235
+ # Email may be sent as plain text or as HTML.
236
+ # Values: plain or html. Default: plain.
237
+ #email_format=plain
238
+
239
+ # HTML email may have a set of custom CSS styles applied.
240
+ #message_css=
241
+
242
+ # Instead of using a plaintext password in a configuration file, an obfuscated version
243
+ # ('encrypted' but not cryptographically-secure) can be used instead. This encrypted
244
+ # version must have been generated by execsql.
245
+ #enc_password=
246
+
247
+
248
+ [config]
249
+ # The path or filename of an additional non-standard configuration file to be read.
250
+ #config_file=
251
+
252
+ # The number of seconds between using DAO to create a query in MS-Access and using ODBC
253
+ # to access data. This must be greater than or equal to 5.0.
254
+ #dao_flush_delay_secs=5
255
+
256
+ # The full name or path to an additional configuration file to be read if execsql.py
257
+ # is running on Linux.
258
+ #linux_config_file=
259
+
260
+ # Whether or not to log all data variable assignments to the execsql.log file.
261
+ # Values: Yes or No. Default: Yes.
262
+ #log_datavars=Yes
263
+
264
+ # The full name or path to an additional configuration file to be read if execsql.py
265
+ # is running on Windows.
266
+ #win_config_file=
267
+
268
+ # Whether to place the execsql.log logfile in the user's home directory instead of the
269
+ # script directory. Values: Yes or No. Default: No.
270
+ #user_logfile=Yes
271
+
272
+
273
+ [variables]
274
+ # Substitution variables that will be defined when the script starts up. There are
275
+ # no pre-defined setting names (variable) for this section.
276
+
277
+
278
+ [include_required]
279
+ # Additional script files that will be read before the main script starts. There are no
280
+ # pre-defined settings for this section. Keys are integers defining the order in which
281
+ # scripts are read; values are the names of the scripts (including paths).
282
+
283
+
284
+ [include_optional]
285
+ # Additional script files that may be read before the main script starts. There are no
286
+ # pre-defined settings for this section. Keys are integers defining the order in which
287
+ # scripts are read; values are the names of the scripts (including paths).
288
+
289
+