--- /dev/null
+Except where otherwise noted in the source code (string_utils.py,
+shared_dict.py, decorators.py, tplink_utils.py) and described in
+the NOTICE file, all code is Copyright 2022 Scott Gasch.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
--- /dev/null
+
+Some code in this library came from other sources. As required by
+clause 4 of the Apache 2.0 License and clause 3 of the PSF License,
+this NOTICE file describes changes Scott Gasch made to any preexisting
+code regardless its original License. All such original code was used
+in a manner compliant with its original License. This file also
+contains URLs pointing at the source of the forked code.
+
+ 1. As noted in string_utils.py, that file is a fork of work by
+ Davide Zanotti. Davide's original work is here:
+
+ https://github.com/daveoncode/python-string-utils/tree/master/string_utils
+
+ David's code was released under the MIT license.
+
+ Scott's modifications include:
+ + Added these routines: strip_escape_sequences,
+ suffix_string_to_number, number_to_suffix_string, extract_ip_v4,
+ extract_ip_v6, extract_mac_address, extract_ip, to_bool,
+ to_date, valid_date, to_datetime, valid_datetime, squeeze,
+ indent, dedent, sprintf, strip_ansi_sequences, SprintfStdout,
+ capitalize_first_letter, it_they, is_are, pluralize,
+ make_contractions, thify, ngrams, ngrams_presplit, bigrams,
+ trigrams, shuffle_columns_into_list, shuffle_columns_into_dict,
+ interpolate_using_dict, to_ascii, to_base64, is_base64, from_base64,
+ chunk, to_bitstring, is_bitstring, from_bitstring, ip_v4_sort_key,
+ path_ancestors_before_descendants_sort_key, replace_all, and
+ replace_nth.
+ + Added type annotations everywhere,
+ + Wrote doctests everywhere,
+ + Wrote a supplimental unittest (tests/string_utils_test.py),
+ + Added logging.
+
+ 2. As noted in shared_dict.py, that file is a fork of work by
+ LuizaLabs and available here:
+
+ https://github.com/luizalabs/shared-memory-dict/blob/main/shared_memory_dict/dict.py
+
+ The original work was released under the MIT license.
+
+ Scott's modifications include:
+ + Adding a unittest (tests/shared_dict_test.py),
+ + Minor cleanup and style tweaks,
+ + Added type hints.
+
+ 3. The timeout decortator in decorator_utils.py is based on original
+ work published in ActiveState code recipes and covered by the PSF
+ license. It is from here:
+
+ https://code.activestate.com/recipes/307871-timing-out-function/
+
+ Scott's modifications include:
+ + Adding docs + comments including a doctest unittest,
+ + Minor cleanup and style tweaks,
+ + Added type hints.
+
+ 4. tplink_utils.py is based on original work by Lubomir Stroetmann
+ that was released under the Apache 2.0 License:
+
+ https://github.com/softScheck/tplink-smartplug
+
+ Scott's modifications include:
+ + Added the pause functionality,
+ + Added the on/off off/on functionality,
+ + Ported the code to python3,
+ + Added type hints,
+ + Added timeouts / retries,
+ + Added logging.
+
+Thank you to everyone who makes their code available for reuse by
+others and contributes to the open source ecosystem. Scott is
+especially grateful to the authors of the projects above. Thank you.
+
+Any code not mentioned in this NOTICE file is work by Scott Gasch, is
+copyrighted by him, and is released under the Apache 2.0 license
+described in the LICENSE file.
+
+If you make modifications to such code, please comply with the Apache
+2.0 license by retaining the LICENSE and copyright in your work and by
+adding your own notices about the changes you made. See
+https://www.apache.org/licenses/LICENSE-2.0 for details.