<commit_before>TODO
====

Documentation
-------------

Reference
~~~~~~~~~
- commands: use :exc:`...` to refer to exceptions

- Database: explain the purpose and meaning of this class

- DatabaseEntry:

  - explain the purpose and meaning of this class

  - say that instances of this class are usually not created manually but
    by other methods such as Database.add_from_path or
    Database.add_from_vso_query_result

- attrs module: document the following classes:
  
  - Starred
    
  - Tag
    
  - Path
    
  - DownloadTime
    
  - FitsHeaderEntry

- document in more methods and functions which exceptions may be raised

- document property cache_size, cache_maxsize

- document commands.EmptyCommandStackError, commands.NoSuchEntryError

- document the package database itself!!! → show how to use the Database
  class and the undo and redo methods

- document Database.__getitem__

- document the caching package

- document caching.LRUCache and caching.LFUCache

- improve doc of commands.DatabaseOperation (parameters of __init__)

- do not autodocument the inherited methods of caching.BaseCache

- document the specific commands AddEntry, EditEntry, RemoveEntry

Testing
-------
- test undoing and redoing the following methods of Database:

  - tag

  - star

  - unstar

- test adding entries that are already saved in the database → should
  throw an exception

- what to do if a database operation is attempted but the table hasn't
  been created yet? Throw a custom exception or create the required
  table(s) silently? Currently, the exception OperationalError from
  sqlalchemy is raised in such a case.

- test commands.CommandManager
  → test undo/redo in combination with the caching strategy
    (integration test, wohoo)

- test starring and tagging entries that haven't been added to the
  database!

Important
---------<commit_msg>updated database/TODO.rst<commit_after>TODO
====

Documentation
-------------

Reference
~~~~~~~~~
- Database: explain the purpose and meaning of this class

- DatabaseEntry:

  - explain the purpose and meaning of this class

  - say that instances of this class are usually not created manually but
    by other methods such as Database.add_from_path or
    Database.add_from_vso_query_result

- attrs module: document the following classes:
  
  - Starred
    
  - Tag
    
  - Path
    
  - DownloadTime
    
  - FitsHeaderEntry

- document in more methods and functions which exceptions may be raised

- document property cache_size, cache_maxsize

- document the package database itself!!! → show how to use the Database
  class and the undo and redo methods

- document Database.__getitem__

- document the caching module

- document caching.LRUCache and caching.LFUCache

- improve doc of commands.DatabaseOperation (parameters of __init__)

- do not autodocument the inherited methods of caching.BaseCache

- document the specific commands AddEntry, EditEntry, RemoveEntry

Testing
-------
- test undoing and redoing the following methods of Database:

  - tag

  - star

  - unstar

- what to do if a database operation is attempted but the table hasn't
  been created yet? Throw a custom exception or create the required
  table(s) silently? Currently, the exception OperationalError from
  sqlalchemy is raised in such a case.

- test commands.CommandManager
  → test undo/redo in combination with the caching strategy
    (integration test, wohoo)

- test starring and tagging entries that haven't been added to the
  database!

Important
---------
- docs: fix all examples with (implicit) repr calls in DatabaseEntry
  instances!!!

{'fraction_non_alphanumeric': 0.06592797783933518, 'fraction_numerical': 0.0, 'mean_word_length': 3.387606318347509, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6683754', 'n_tokens_mistral': 972, 'n_tokens_neox': 931, 'n_words': 429}