gocept.month 3.0
A datatype which stores a year and a month.
License: MIT
Requires Python: >=3.7

============
gocept.month
============

.. image:: https://img.shields.io/pypi/v/gocept.month.svg
    :target: https://pypi.org/project/gocept.month/

.. image:: https://img.shields.io/pypi/pyversions/gocept.month.svg
    :target: https://pypi.org/project/gocept.month/

.. image:: https://github.com/gocept/gocept.month/workflows/tests/badge.svg
    :target: https://github.com/gocept/gocept.month/actions?query=workflow%3Atests

.. image:: https://coveralls.io/repos/github/gocept/gocept.month/badge.svg?branch=master
    :target: https://coveralls.io/github/gocept/gocept.month?branch=master

.. image:: https://results.pre-commit.ci/badge/github/gocept/gocept.month/main.svg
   :target: https://results.pre-commit.ci/latest/github/gocept/gocept.month/main
   :alt: pre-commit.ci status


A datatype which stores a year and a month.

This package provides the data type ``Month`` (typical usage:
``Month(4, 2003)``), which supports conversion to and from strings, as well as
a zope.schema field and widgets for both zope.formlib and z3c.form.

To use the month field, ``<include package="gocept.month"/>`` and declare a
schema like this:

    >>> import gocept.month
    >>> import zope.interface
    >>> import zope.schema
    >>> class IContract(zope.interface.Interface):
    ...     title = zope.schema.TextLine(title=u"Contract title")
    ...     start = gocept.month.MonthField(title=u"Starting date")
    ...     end = gocept.month.MonthField(title=u"Ending date")

To use the form widgets, you need to require the ``form`` setuptools extra
(i.e. ``gocept.month[form]``), and ``<include
package="gocept.month.browser"/>`` in your ZCML.


CHANGES
=======

3.0 (2021-08-27)
----------------

Backwards-incompatible changes
++++++++++++++++++++++++++++++

- Re-licence from ZPL to MIT licence.

- Drop support for Python 2 and 3.6.

Features
++++++++

- Add support for Python 3.10 (as of rc.1).


2.2 (2021-04-20)
----------------

Features
++++++++

- Add support for Python 3.7, 3.8 and 3.9.

Bug fixes
+++++++++

- Add missing security declaration needed for ``.browser.widget.MonthWidget``,
  the month widget for ``z3c.form``.

Other CHANGES
+++++++++++++

- Migrate to Github.

- Use Github actions as CI.

- Drop support for Python 3.4 and 3.5.


2.1 (2017-04-13)
----------------

- Officially support Python 3.6.

- Fix `configure.zcml` to be compatible with Python 3.


2.0 (2016-04-28)
----------------

- Made the package compatible with Python 2.7 and Python 3 at the same time.

- Backwards-incompatible change towards stricter comparison behaviour: While
  arbitrary objects (except month strings) used to be considered less than any
  ``Month`` instance, such a comparison now raises a ``TypeError``.

- Removed deprecated ``Month.isBetween`` method.


1.5 (2016-04-27)
----------------

- Support Python 2.7 and PyPy only.

- Add tox as testrunner.


1.4 (2016-02-07)
----------------

- Add a ``__len__`` method to `MonthInterval`.

- Require `z3c.form >= 2.6` to get rid of some odd test dependencies.


1.3.2 (2015-10-13)
------------------

- Fix `configure.zcml` to include needed `meta.zcml` files.


1.3.1 (2015-08-05)
------------------

- Migrate repository to https://bitbucket.org/gocept/gocept.month


1.3 (2014-07-16)
----------------

- Add placeholder for month widget in z3c forms describing the required month
  format.


1.2 (2013-02-18)
----------------

- Split off widgets into setuptools extra ``form``, and don't include the
  ``browser`` ZCML by ourselves, so clients can use only the domain part of
  this package without the UI parts.

- Added ``firstOfMonth`` method to ``Month``.

- Using `zope.formlib >= 4.0` instead of `zope.app.form`.

- Updated to ZTK 1.1.5.


1.1 (2012-02-09)
----------------

- Add MonthInterval.forYear().
- Declared ``fromString`` method as a class method in interface.


1.0.2 (2011-09-01)
------------------

- Added ``__contains__`` method on ``Month``.


1.0.1 (2011-04-26)
------------------

- Declare dependencies that some upstream packages need but don't declare.

- Use stdlib's doctest module, not zope.testing's which is deprecated.


1.0 (2009-10-05)
----------------

- Initial public release.