diff --git a/C++/SplitClassFiles/custom.cpp b/C++/SplitClassFiles/custom.cpp new file mode 100644 index 0000000..c665b59 --- /dev/null +++ b/C++/SplitClassFiles/custom.cpp @@ -0,0 +1,25 @@ +#include +#include +#include "custom.h" + +proto::proto(std::string cname) +{ +std::cout<< "FFFFUUUUU" < +#include +#include "custom.h" +#include +//for sleepings +unsigned int microsec; + +int main(){ +proto obj("WTF"); +std::cout<< obj.getname() << std::endl; +obj.setname("Paul Lesack"); +std::cout << obj.getname() < + +### Pydoc-markdown + +This option gives control over the order in which things are arranged in the API document: + +`pydoc-markdown -I ./ -m dryad2dataverse -m dryad2dataverse.constants -m dryad2dataverse.serializer -m dryad2dataverse.transfer -m dryad2dataverse.monitor -m dryad2dataverse.exceptions --render-toc > api_reference.md` + +or, after it's installed (with pip -e ./) + +`pydoc-markdown -p dryad2dataverse > api_reference.md` + +or + +`pydoc-markdown -p dryad2dataverse --render-toc > api_reference.md` + +Edit manually as required (but hopefully not) + +Write the `_config.yml` and `pydoc-markdown.yml` manually + +HTML hierarchies are automatically created with a top level heading (`#`) and subheadings. + +In the case of pydoc markdown, it's useful to create the docmentation as above, and then add an extra (`#`) to the headings. Then add a heading for the entire page. This is because each source file will create its own `

` tag. + +If local, you can switch to the top dir and run `mkdocs serve`, and/or automatically create github pages by using `mkdocs gh-deploy`. See + diff --git a/Python/Creating_Documentation/pydoc_markdown.md b/Python/Creating_Documentation/pydoc_markdown.md new file mode 100644 index 0000000..d76627a --- /dev/null +++ b/Python/Creating_Documentation/pydoc_markdown.md @@ -0,0 +1,15 @@ +## Notes on creating documentation + +Use pydoc-markdown: + + + +`pydoc-markdown -p dryad2dataverse --render-toc > outputfile.md` + +Note the `-p` switch for loading a package instead of a single module (ie, `-m`) + +Can be used with mkdocs to produce JustTheDocs format static pages: + + + + diff --git a/Python/datetime_filenames/Python_datetime_string_conversion.md b/Python/datetime_filenames/Python_datetime_string_conversion.md new file mode 100644 index 0000000..db104d2 --- /dev/null +++ b/Python/datetime_filenames/Python_datetime_string_conversion.md @@ -0,0 +1,9 @@ +# Python time conversions +x = datetime.datetime.now() +x.strftime('%Y-%m-%d %H:%M:%S') +'2021-11-30 08:11:51' + +String to datetime: datetime.strptime + +z=datetime.strptime(y, '%Y-%m-%d %H:%M:%S') #python 3.8 + dammit +datetime.datetime(*(time.strptime(y, '%Y-%m-%d %H:%M:%S')[0:6]))#painful diff --git a/Python/datetime_filenames/chronological_backup.py b/Python/datetime_filenames/chronological_backup.py new file mode 100644 index 0000000..9d24a51 --- /dev/null +++ b/Python/datetime_filenames/chronological_backup.py @@ -0,0 +1,31 @@ +''' +Chronological file backup example +''' + +import datetime +import time + +#to generate a date: +#x=datetime.datetime.now().strftime('%Y-%m-%d') + +#Sample dates +DATES = ['2021-01-07', '2021-02-14', '2021-06-22', + '2021-04-14', '2021-03-19', '2021-07-11', '2021-05-14'] + +#sample file names +FNAMES = ['SP_dryad_production.sqlite3.'+ x for x in DATES] + +#Note: min max etc work on dictionary keys +#datetime.datetime(*(time.strptime(y, '%Y-%m-%d %H:%M:%S')[0:6]))#painful +#see https://python.readthedocs.io/en/latest/library/datetime.html + +FNAME_D={datetime.datetime( + *(time.strptime(dat[-10:],'%Y-%m-%d')[0:6])): dat + for dat in FNAMES} +TIMES = list(FNAME_D) +TIMES.sort() +#There can be only 3 +for fil in TIMES[3:]: + print(f'os.remove({FNAME_D[fil]})') + del FNAMES[FNAMES.index(FNAME_D[fil])] +print(FNAMES) diff --git a/Python/logging/log1.py b/Python/logging/log1.py new file mode 100644 index 0000000..bbff2ab --- /dev/null +++ b/Python/logging/log1.py @@ -0,0 +1,9 @@ +import logging + +logger = logging.getLogger(__name__) + +def test1(): + logger.info('Ran log1.py test1()') + return 1 + + diff --git a/Python/logging/log2.py b/Python/logging/log2.py new file mode 100644 index 0000000..2e61912 --- /dev/null +++ b/Python/logging/log2.py @@ -0,0 +1,10 @@ +import logging + +logger = logging.getLogger(__name__) + +def test2(): + logger.info('Ran log2.py test2()') + return 1 + + + diff --git a/Python/logging/main.py b/Python/logging/main.py new file mode 100644 index 0000000..1c8b7cb --- /dev/null +++ b/Python/logging/main.py @@ -0,0 +1,16 @@ +import logging +import log1 +import log2 + +# See also https://python101.pythonlibrary.org/chapter15_logging.html + +logger = logging.getLogger(__name__) + +logging.basicConfig(format='%(module)s - %(name)s - %(asctime)s -' + ' %(funcName)s - %(message)s', filename='test.log', filemode='w', level=logging.INFO) + +#logging.basicConfig(filename='test.log', filemode='w', level=logging.INFO) +for i in range(10): + logger.info(f'called {i} times') + log1.test1() + log2.test2() diff --git a/Python/logging/test.log b/Python/logging/test.log new file mode 100644 index 0000000..24fe870 --- /dev/null +++ b/Python/logging/test.log @@ -0,0 +1,30 @@ +main - __main__ - 2021-01-08 13:30:10,622 - - called 0 times +log1 - log1 - 2021-01-08 13:30:10,622 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,622 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,622 - - called 1 times +log1 - log1 - 2021-01-08 13:30:10,622 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,622 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,622 - - called 2 times +log1 - log1 - 2021-01-08 13:30:10,622 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,622 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,622 - - called 3 times +log1 - log1 - 2021-01-08 13:30:10,622 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,622 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,622 - - called 4 times +log1 - log1 - 2021-01-08 13:30:10,623 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,623 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,623 - - called 5 times +log1 - log1 - 2021-01-08 13:30:10,623 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,623 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,623 - - called 6 times +log1 - log1 - 2021-01-08 13:30:10,623 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,623 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,623 - - called 7 times +log1 - log1 - 2021-01-08 13:30:10,623 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,623 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,623 - - called 8 times +log1 - log1 - 2021-01-08 13:30:10,623 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,623 - test2 - Ran log2.py test2() +main - __main__ - 2021-01-08 13:30:10,623 - - called 9 times +log1 - log1 - 2021-01-08 13:30:10,623 - test1 - Ran log1.py test1() +log2 - log2 - 2021-01-08 13:30:10,623 - test2 - Ran log2.py test2() diff --git a/Python/misc/complete_path_to_source.py b/Python/misc/complete_path_to_source.py new file mode 100644 index 0000000..b3cd2bd --- /dev/null +++ b/Python/misc/complete_path_to_source.py @@ -0,0 +1,3 @@ +#Find complete path to a python file: +dir_path = os.path.dirname(os.path.realpath(__file__)) +