commandoption menu notebook +noteslist +search(filter:str)list +new_note(memo,tags="+modify_memo(note_id,memo+modify_tags(note_id,tags note +memo +creation_date +tags +match(search_filter:str)boolean before writing any codelet' define the folder structure for this project the menu interface should clearly be in its own modulesince it will be an executable scriptand we may have other executable scripts accessing the notebook in the future the notebook and note objects can live together in one module these modules can both exist in the same top-level directory without having to put them in package an empty command_option py module can help remind us in the future that we were planning to add new user interfaces parent_directorynotebook py menu py command_option py now let' see some code we start by defining the note class as it seems simplest the following example presents note in its entirety docstrings within the example explain how it all fits together import datetime store the next available id for all new notes last_id class note'''represent note in the notebook match against