simplenote 2.1.4
Python library for the simplenote.com API
License: MIT

==============
simplenote.py
==============

.. image:: https://readthedocs.org/projects/simplenotepy/badge/?version=latest
  :target: http://simplenotepy.readthedocs.io/en/latest/?badge=latest
  :alt: Documentation Status

.. image:: https://travis-ci.org/mrtazz/simplenote.py.svg?branch=master
    :target: https://travis-ci.org/mrtazz/simplenote.py

.. image:: https://codeclimate.com/github/mrtazz/simplenote.py/badges/gpa.svg
   :target: https://codeclimate.com/github/mrtazz/simplenote.py
   :alt: Code Climate

.. image:: https://img.shields.io/pypi/v/simplenote.svg
   :target: https://pypi.python.org/pypi/simplenote
   :alt: PyPi

.. image:: https://img.shields.io/badge/license-MIT-blue.svg
   :target: http://opensource.org/licenses/MIT
   :alt: MIT License

Introduction
=============
simplenote.py is a python library for the simplenote.com_ web service.

Installation
=============
Install via pip::

    pip install simplenote

Or if you must::

    easy_install simplenote


Usage
======
simplenote.py can be imported into any python module::

    import simplenote
    sn = simplenote.Simplenote(user, password)

The object then provides the following API methods::

    sn.get_note_list(data=True, since=cursor, tags=[])  # Supports optional `tags` parameter that takes a list of tags
                                                        # to return only notes that contain at least one of these tags.
                                                        # Also supports a `since` parameter, but as per the Simperium
                                                        # API this is no longer a date, rather a cursor.
                                                        # Lastly, also supports a  `data` parameter (defaults to True)
                                                        # to only return keys/ids and versions

    sn.get_note(note_id)                                # note id is value of key `key` in note dict as returned
                                                        # by get_note_list. Supports optional version integer as
                                                        # argument to return previous versions

    sn.add_note(note)                                   # A ``note`` object is a dictionary with at least a
                                                        # ``content`` property, containing the note text.

    sn.update_note(note)                                # The ``update_note`` method needs a note object which
                                                        # also has a ``key`` property.
    sn.trash_note(note_id)

    simplenote.delete_note(note_id)


.. _simplenote.com: http://simplenoteapp.com


History
========

2.1.4 (2019-06-02)
------------------

* Handle BadStatusLine errors

2.1.3 (2019-06-01)
------------------

* Fix issue where update_note was actually modifying the external note object passed to it rather than creating a copy and returning that.

2.1.2 (2019-04-07)
------------------

* Fix error in version number

2.1.1 (2019-04-07)
------------------

* Handle invalid/expired tokens
* Fixed KeyError in get_note_list() when offline
* Fix order of note, status for trash_note

2.1.0 (2018-11-04)
------------------

* Adds since paramter back in (as Simperium cursor, not date)

2.0.3 (2018-10-19)
------------------

* No end facing change in functionality - just removes a superfluous default modificationDate

2.0.2 (2018-10-03)
------------------

* Actually remove the since support like I thought I had. I could have
  re-implemented since in as per tags so it filters after pulling everything
  else, but since (ha!) I used "since" for a faster note loading there seems
  little point.

2.0.1 (2018-10-03)
------------------

* Documentation updatess only

2.0.0 (2018-09-29)
------------------

* Update to the Simperium API: https://simperium.com/docs/http/
* Breaking changes:
  * The since parameter has been removed. Simperium supports the since parameter, but as a cursor, not a date.
  * The syncnum key no longer exists (this is an upstream change)
  * Things seem to be UTF-8 by default
* This should largely be a drop in replacement though: E.g. Simperium uses id instead of key, but simplenote.py handles that for you.

1.0.5 (2018-03-24)
-------------------
* Sort tags in get_note and update_note

1.0.4 (2018-02-26)
-------------------
* Unescape html entites due to api change

1.0.3 (2016-04-03)
-------------------
* Bug fix for an error introduce as a result of code review improvements. 

1.0.2 (2016-03-18)
-------------------
* Code review improvements only. No change to functionality.

1.0.1 (2016-01-13)
-------------------
* I ended up pointing tag v1.0.0 at a re-written commit so need to retag. No changes beyond that.

1.0.0 (2015-11-22)
-------------------
* I think this is stable and proven enough to be version 1 by now. Can then roll into Simplenote.vim v1.

0.4.0 (2015-03-06)
-------------------
* Python 2 and 3 compatibility

0.3.8 (2015-02-16)
-------------------
* Fix version number of deploy, now deploying is working

0.3.7 (2015-02-16)
-------------------
* Testing deploying to PyPi with a change in credentials

0.3.6 (2015-02-15)
-------------------
* Testing deploying to PyPi again, changes to .travis.yml

0.3.5 (2015-02-15)
-------------------
* Testing deploying to PyPi again, this time will use an annotate tag

0.3.4 (2015-02-15)
-------------------
* Test related changes again (using single instance)
* Also testing deploying to PyPi via Travis

0.3.3 (2014-04-07)
-------------------
* Minor change to a test, setting it as expected failure.

0.3.2 (2014-04-06)
-------------------
* update_note uses utf-8 encoding on returned note content

0.3.1 (2013-12-30)
-------------------
* Minor change to Travis CI PyPi deply details

0.3.0 (2013-12-29)
-------------------
* Change optional argument for get_note_list() to be "since date" instead of quanity
* Various tweaks to tests and CI in attempt to make more robust
* get_note_list() now supports optional tag argument
* get_note() now supports optional version argument
  
0.2.0 (2012-06-02)
-------------------
* Add optional argument for quantity to get_note_list()
* catch HTTPError when fetching notes
* immediately return if note could not be fetched
* trash_note has to succeed for deleting
* add json import fallbacks

0.1.3 (2011-07-17)
-------------------
* fix display of '+' signs

0.1.2 (2011-07-02)
-------------------
* improved documentation
* add sphinx docs

0.1.1 (2011-06-25)
-------------------
* minor changes for pypi

0.1.0 (2011-06-25)
-------------------
* basic API methods
* get note list
* get single note
* add note
* update note
* trash note
* delete note