* Fixed error related to display_format in config file
Now _display_search_results tries to source the export arg from the
config file before dispaying search results.
* Add BDD test for original bug
* update unit test
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
* Refactored path expansion calls into a new path.py file
This also fixed bugs with relative journal and template paths.
* Update tests for new path functions
Also, make the tests specific to Windows, Mac & Linux
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Implement --change-time flag
* Remove todo from --change-time bdd folder journal tests
* Add warning when --change-time used with no matching entries
* Add a test to make sure running --change-time with nothing prints a warning and doesn't change anything
* Add prompt for --change-time
* Don't prompt for --change-time when used with --edit and only one entry
* When using --edit and --change-time, change the time before editing
* Add test for --change-time used with --edit
* Modify failing --change-time test to conform to text in develop branch
* Update and modularize exception handling
cc #1024#1141
- Stack traces are no longer shown to users unless the --debug flag is
being used
- Errors, warnings, and other messages contain color as needed
- Converted error messages to Enum
- Adds print_msg function to centralize output (this should replace all
other output in other modules)
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* format with black
* add message to catch-all exception block
* Unskip some tests (#1399)
* remove skip_editor test and tag
* remove useless test
* unskip blank input test
* formatting
* rename test so it doesn't overwrite other test
* unskip some dayone tests that now work
* Bump ipython from 7.28.0 to 7.31.1 (#1401)
Bumps [ipython](https://github.com/ipython/ipython) from 7.28.0 to 7.31.1.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](https://github.com/ipython/ipython/compare/7.28.0...7.31.1)
---
updated-dependencies:
- dependency-name: ipython
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update changelog [ci skip]
* Bump asteval from 0.9.25 to 0.9.26 (#1400)
Bumps [asteval](https://github.com/newville/asteval) from 0.9.25 to 0.9.26.
- [Release notes](https://github.com/newville/asteval/releases)
- [Commits](https://github.com/newville/asteval/compare/0.9.25...0.9.26)
---
updated-dependencies:
- dependency-name: asteval
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update changelog [ci skip]
* Bump black from 21.12b0 to 22.1.0 (#1404)
* Bump black from 21.12b0 to 22.1.0
Bumps [black](https://github.com/psf/black) from 21.12b0 to 22.1.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/commits/22.1.0)
---
updated-dependencies:
- dependency-name: black
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
* Run make format
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Update changelog [ci skip]
* Add reference documentation to docs site and separate out "Tips and Tricks" and "External Editors" from "Recipes" (#1332)
* First draft of command line reference, mostly pulled from help screen
* Add first draft of config file reference, mostly pulled from advanced.md
* Clean up config file doc for readability
* Add --config-file and remove examples from CLI reference
* Add warning about time zone in timeformat
* More small changes, and adding template config keyword
* Cleaning up and re-ordering config file reference
* Clean up reference and anything else from advanced documentation that can live elsewhere and linking to config file reference wherever config file is mentioned
* Fix syntax highlighting in command line reference, clean up content a bit, include --diagnostic
* Mention version config key
* Apply minor changes suggested in PR review
* Rename "recipes" to "Tips and Tricks", pull "External Editors" out of it into its own page, and redirect old recipes link to tips-and-tricks
* Revert broken mkdocs-redirects usage from last commit
* Update changelog [ci skip]
* Add --co alias for --config-override (#1397)
* Add hash as a default tag symbol (#1398)
* Update changelog [ci skip]
* Increment version to v2.8.4-beta2
* Update changelog [ci skip]
* Increment version to v2.8.4
* Update changelog [ci skip]
* Bump pytest from 6.2.5 to 7.0.0 (#1407)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.5 to 7.0.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.5...7.0.0)
---
updated-dependencies:
- dependency-name: pytest
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update changelog [ci skip]
* Drop support for Python 3.7 and 3.8 (#1412)
* Remove Python 3.7 and 3.8 from github actions workflows
* Update lockfile after running poetry update a couple times
* Update poetry lock
* Remove Python 3.7 and 3.8 from pyproject.toml and run poetry lock
* Update changelog [ci skip]
* Tidy up git ignore (#1414)
* cleaned gitignore and add comments
* removed colon for readbility
* alphabetize files in sections
Co-authored-by: nelnog <nel.nogales@gmail.com>
* fix behavior that was confusing pytest
* update test to match new message
* whitespace change
* clean up error for manually stopping the inline editor
* udpate error to use new exception handling
* move some exceptions and errors to the new exception handling
* add line breaks to keyboard interrupt so it looks more like other exceptions
* add handling for exceptions that happen earlier in the flow
* add new 'NothingToDelete' error to replace old behavior
* get rid of old exception
* add new exception handling to 'nothing saved to file' errors
* move exception for no editor configured into new handling
* move exception for no alt config to new handling
* get rid of old exception handling for encrypted journal
* Move error for too many wrong passwords into new handling
* fix merge errors
* replace sys.exit call with new exception handling
* replace sys.exit call with new exception handling
* replace sys.exit call with new exception handling
* reformat with black
* clean up old code
* clean up old code
* clean up linting issue
* update uncaught exception for new handling
* update test
* fix mangled lock file
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jrnl Bot <jrnl.bot@gmail.com>
Co-authored-by: Nelson <35701520+nelnog@users.noreply.github.com>
Co-authored-by: nelnog <nel.nogales@gmail.com>
* Add added option to _print_edited_summary
* Add tests for counts of entries added, modified, and deleted
* Add test for modifying an entry rather than replacing it
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* added new CLI argument option --config-file
* pass argument and fetch alt config file if specified
* argparse argument setting update
* argument alias --cf added
* documentation update - usage of CLI argument
* fixed name-clash + unit tests
* feature test added
* #1170-alternate-config-file: Auto stash before rebase of "refs/heads/#1170-alternate-config-file"
* Update docs/advanced.md
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
* BDD tests added
* Begin migrating/rewording --cf tests in pytest-bdd.
Uses current directory instead of deep directory structure, but requires a given for each config file referenced
* Fix issue where specifying a config-file that needs to be upgraded ended up upgrading the user config file instead
* Uncomment and rework remaining tests for pytest-bdd instead of behave
* Fix copytree for Python 3.7 (which doesn't support dirs_exist_ok)
* Minor fixes to alternative config examples
* Remove behave tests (behave is no longer in use)
* Move config file unit test to unit test dir and use pytext path fixture instead of current directory to find test data
* Use explicit "given the config exists" for copying config files instead of shoehorning in "given we use the config" twice
* Change when/when to when/and
* Clarify scenarios and fix indentation
* Confirm primary config file isn't modified when encrypting/decrypting a journal in an alternate config file
* Remove try/except on copytree since I'm no longer using the same
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* update yaml loader to new method
* Add config overrides steps to pytest
This requires some patching around the config object, which now happens
in every test.
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* udpate docs for new tests
* remove behave from deps
* remove feature dir from flake8 checks
* udpate lock file
* disable pip version check (it keeps spamming the pipeline)
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
Add --config-override feature
* add test and argument handler for runtime override of configurations.
* identify location to apply override in "main"
* update gitignore
* remove unneeded import
* add jrnl interface test for overriden configurations
* trivial whitespace change
* implement runtime override
* make format
* refactor override unittest
* clean up unused import
* start writing integration test
* add linewrap override scenario
* implement editor override step
* add dev dependencies on pytest -mock and -cov
* make format
* remove unused imports
* make format
* rename --override to --config-override
* move override implementation into own module
* begin TDD of dot notated overrides
* rewrite behavior scenario
* implement recursive config overrides
* clean up unittests
* iterate on behave step
* make format
* cleanup
* move override behave tests out of core
* refactor recursive code
* make format
* code cleanup
* remove unused import
* update test config
* rewrite test for better mock call expect
* make format
* binary search misbehaving windows test
* unittest multiple overrides
* uncomment dot notation unittest
* add multiple override scenario spec
* make format
* make format
* update unittests for new syntax
* update integ tests for new syntax
* update gitignore
* guard override application
* deserialize function as return type
* make format
* organize deserialization unittests
* better, more specific behave tests
* test different editor launch commands
* formatting
* handle datatypes in deserialization and update helptext
* stick to config convention in testbed
* update tests ith better verifications
* make format
* space
* review feedbac
* make format
* skip on win
* update deps
* update tests with better verifications
make format
space
review feedbac
* skip on win
* update deps
* refactor deserialization
organize test_parse_args
make format
* skip on win
* refactor deserialization
organize test_parse_args
make format
* update tests ith better verifications
* make format
* space
* make format
* document apply_overrides
* update gitignore
* document config-override enhancement
* Simplify config override syntax (#5)
* update tests and expected behavior
* clean up arg parsing tests
* update deserialization
* update deserialization
* config argparse action
* update override application logic
* update tests; delete unused imports
* override param must be list
* update docstring
* update test input to SUT
* update remaining override unittests
* make format
* forgot to update CLI syntax
* update documentation to sphinx style
* variable renames
* Lockfile merge (#7)
* Add brew and gitter badges to README
* Update changelog [ci skip]
* Make journal selection behavior more consistent when there's a colon with no date (#1164)
* Simplify config override syntax (#8)
* update tests and expected behavior
* clean up arg parsing tests
* update deserialization
* update deserialization
* config argparse action
* update override application logic
* update tests; delete unused imports
* override param must be list
* update docstring
* update test input to SUT
* update remaining override unittests
* make format
* forgot to update CLI syntax
* formatting
* Update pyproject.toml
* update lockfile to remove pytest-cov and pytest-mock deps
* update docs
* reuse existing mock; delete unneeded code
* move overrides earlier in the execution
use existing configs instead of custom
make format
clean up imports
* update for passworded access
context.parser -> parsed_args
* test that no editor is launched
* remove unnecessary mocks
* rename variable for intent
* reinstate getpass deletion
* update gitignore
* capture failure mode
* remove unneeded imports
* renamed variable
* delete redundant step
* comment on step
* clean up step behavior description
* [WIP] lock down journal access behavior
* skip -> wip
* correct command for overriding journal via dot keys
* update wip test for updating a "temp" journal and then reading baack its entries
* remove "mock" from poetry file
* make CI happy
* complex behavior sequence for default journal override
* separate out smaller pieces of logic
test that apply_overrides acts on base configuration and not the copy
* defer modification of loaded configuration to update_config
remove unused fixtures
delete complicated UT since behavior is covered in overrides.feature integ test
delete redundant UT
* Update .gitignore
* remove skip_win
* forward override unpacking to yaml library
* merge config override step with existing config_var step in core
delete config_override step
unify step description syntax
* delete unused and redundant code
* rebases are hard
* remove wip tag from test
* remove skipped tests for windows
* Address code review
yield -> return
remove needless copy
adjust spacing
re-inline args return
reset packaging info to e6c0a16342
revert package version for this PR
* consolidate imports
* Defer config_override unpacking to dict *after* base config is loaded
store cli overrides without unpacking just yet
move deserialize_config_args to config module
delete custom Action class for config operations
apply [k,v] -> {k, v} for each override
update test data
update import
* rename deserialize_config_args to better express intent
make format
* Introduce -reminisce, -month, -day, and -year
* Update expected_args in parse_args tests
* Add check before creating compare_d
* Misc changes
* Implement testing for -month, -day, -year, and -reminisce
* Compress tests into one Scenario Outline
* Fix failing tests by updating dates_similar journal
* Create 'we set current date and time to' step
* Use time.parse in reminisce
* Update dates_similar journal
* Make 'Searching in a journal' test shorter
* Lint
* Implement reminiscing test
* Add combination tests
* Finalize tests
* Finalize pytests
* Simplify reminisce tests
* Change reminsice help (since it also shows today's entries)
* Re-do tests; use various tests
* Remove old test data
* Better scenario description
* Standardize format for compare_d
* Rename -reminisce to -today-in-history
* Moving configuration values and methods from install.py to config.py -- everything is broken right now
* Using context to store config path - still lots broken
* Use mocks and context.config_path to store test configs - many tests still broken though
* Update changelog [ci skip]
* Fix jrnl --ls crash
* Fix crash when no editor configured
* Attempt to patch config path with test data - doesn't appear to be working
* Properly use patched config path and add config given to scenario that wasn't using it
* Fix copypasta
* Fix editor test that needed patched config and trapping for system exit
* Add exception and handling for when configuration directory is actually a file
* Remove extraneous comment
* Use more generic JrnlError with messaging switchboard
* Format code a bit nicer
* Remove unnecessary given in diagnostic test
* Ensure full error message is output
* Remove unnecessary whitespace characters
* Update authors to "jrnl contributors" to comply with GPL3
* Include jrnl email address with contributors
* Include GPL notice in jrnl --version
* Apply consistent copyright and license to all Python files
* Add copyright and license to documentation
* Add copyright and license to docs theme
* Wiping poetry cache to try to resolve a test issue
* Testing with Python 3.9.0 in attempt to bypass GitHub Actions failure in 3.9.1
* make format
* Exclude Windows Python 3.9 build which is failing due to a GitHub Actions problem
* Modify testing to get around this 3.9 issue...
* Fix exclude
* Update version pin on pyxdg and run poetry update
* Update pytest pin and rerun poetry update
* Update black pin to latest version, poetry update, and make format
* More refactoring of cli.py
break up code from cli.py (now in jrnl.py) up into smaller functions
get rid of export mode
move --encrypt and --decrypt to commands.py
clean up the help screen even more
update flag name for import
* reorganize code, move around lots of functions
* clean up import statements
* move run function out of cli and into jrnl
* rename confusingly named function
* move editor function into editor file
* rename parse_args.py to args.py to make room for more args functions
* Fix error in test suite for windows
I accidentally flipped the conditional, so this fixes it.
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Update app description on help screen
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>