Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pyRFC3339 for 
openSUSE:Factory checked in at 2021-06-04 00:33:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyRFC3339 (Old)
 and      /work/SRC/openSUSE:Factory/.python-pyRFC3339.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pyRFC3339"

Fri Jun  4 00:33:57 2021 rev:4 rq:897201 version:1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyRFC3339/python-pyRFC3339.changes        
2018-08-29 12:26:43.595596993 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pyRFC3339.new.1898/python-pyRFC3339.changes  
    2021-06-04 00:34:18.256999289 +0200
@@ -1,0 +2,6 @@
+Thu Jun  3 11:27:14 UTC 2021 - [email protected]
+
+- use github tarball with tests
+- %check: use %pytest rpm macro
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pyRFC3339.spec ++++++
--- /var/tmp/diff_new_pack.lDmGtT/_old  2021-06-04 00:34:18.621000337 +0200
+++ /var/tmp/diff_new_pack.lDmGtT/_new  2021-06-04 00:34:18.625000348 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pyRFC3339
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -24,8 +24,9 @@
 License:        MIT
 Group:          Development/Languages/Python
 URL:            https://github.com/kurtraschke/pyRFC3339
-Source:         
https://files.pythonhosted.org/packages/source/p/pyRFC3339/pyRFC3339-%{version}.tar.gz
+Source:         
https://github.com/kurtraschke/pyRFC3339/archive/refs/tags/v1.1.tar.gz#/pyRFC3339-%{version}.tar.gz
 BuildRequires:  %{python_module nose}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module pytz}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
@@ -48,7 +49,7 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}/pyrfc3339
 
 %check
-%python_exec setup.py test
+%pytest pyrfc3339/tests/tests.py
 
 %files %{python_files}
 %license LICENSE.txt

++++++ pyRFC3339-1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/.gitignore new/pyRFC3339-1.1/.gitignore
--- old/pyRFC3339-1.1/.gitignore        1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/.gitignore        2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,185 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, 
CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# CMake
+cmake-build-debug/
+cmake-build-release/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyRFC3339-1.1/.idea/inspectionProfiles/Project_Default.xml 
new/pyRFC3339-1.1/.idea/inspectionProfiles/Project_Default.xml
--- old/pyRFC3339-1.1/.idea/inspectionProfiles/Project_Default.xml      
1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/.idea/inspectionProfiles/Project_Default.xml      
2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,10 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="FieldMayBeFinal" enabled="true" level="WARNING" 
enabled_by_default="true" />
+    <inspection_tool class="LocalCanBeFinal" enabled="true" level="WARNING" 
enabled_by_default="true">
+      <option name="REPORT_VARIABLES" value="true" />
+      <option name="REPORT_PARAMETERS" value="true" />
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/.idea/misc.xml 
new/pyRFC3339-1.1/.idea/misc.xml
--- old/pyRFC3339-1.1/.idea/misc.xml    1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/.idea/misc.xml    2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_9" 
default="false" project-jdk-name="Python 2.7 (env)" project-jdk-type="Python 
SDK" />
+</project>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/.idea/modules.xml 
new/pyRFC3339-1.1/.idea/modules.xml
--- old/pyRFC3339-1.1/.idea/modules.xml 1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/.idea/modules.xml 2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/pyRFC3339.iml" 
filepath="$PROJECT_DIR$/.idea/pyRFC3339.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/.idea/pyRFC3339.iml 
new/pyRFC3339-1.1/.idea/pyRFC3339.iml
--- old/pyRFC3339-1.1/.idea/pyRFC3339.iml       1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/.idea/pyRFC3339.iml       2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Python" name="Python">
+      <configuration sdkName="" />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="TemplatesService">
+    <option name="TEMPLATE_FOLDERS">
+      <list>
+        <option value="$MODULE_DIR$/docs/source/_templates" />
+      </list>
+    </option>
+  </component>
+</module>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/.idea/vcs.xml 
new/pyRFC3339-1.1/.idea/vcs.xml
--- old/pyRFC3339-1.1/.idea/vcs.xml     1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/.idea/vcs.xml     2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/.travis.yml 
new/pyRFC3339-1.1/.travis.yml
--- old/pyRFC3339-1.1/.travis.yml       1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/.travis.yml       2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,11 @@
+language: python
+python:
+  - "2.7"
+  - "3.4"
+  - "3.5"
+  - "3.6"
+# command to install dependencies
+install:
+  - "pip install ."
+# command to run tests
+script: nosetests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/CHANGES.rst 
new/pyRFC3339-1.1/CHANGES.rst
--- old/pyRFC3339-1.1/CHANGES.rst       1970-01-01 01:00:00.000000000 +0100
+++ new/pyRFC3339-1.1/CHANGES.rst       2018-06-11 02:18:08.000000000 +0200
@@ -0,0 +1,25 @@
+Changelog
+=========
+
+1.1 (2018-06-10)
+----------------
+
+- Drop support for EOL Python releases, add (explicit) support for Python 3.5 
and 3.6 (:issue:`7,10,11,12`)
+- Add :meth:`.utils.FixedOffset.__deepcopy__()` method, to prevent crash on 
deepcopy (:issue:`8`)
+
+1.0 (2015-11-09)
+----------------
+
+- First formally-tagged release
+- Fix :func:`.utils.timedelta_seconds()` to use 
:meth:`datetime.timedelta.total_seconds()` when the native method is available 
(:issue:`6`)
+- Documentation and packaging cleanup (:issue:`4,5`)
+
+0.2 (2014-02-09)
+----------------
+
+- Python 3 compatibility (:issue:`2`)
+
+0.1 (2011-01-26)
+----------------
+
+- Initial release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/PKG-INFO new/pyRFC3339-1.1/PKG-INFO
--- old/pyRFC3339-1.1/PKG-INFO  2018-06-11 02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/PKG-INFO  1970-01-01 01:00:00.000000000 +0100
@@ -1,59 +0,0 @@
-Metadata-Version: 1.1
-Name: pyRFC3339
-Version: 1.1
-Summary: Generate and parse RFC 3339 timestamps
-Home-page: https://github.com/kurtraschke/pyRFC3339
-Author: Kurt Raschke
-Author-email: [email protected]
-License: MIT
-Description: Description
-        ===========
-        
-        .. image:: 
https://travis-ci.org/kurtraschke/pyRFC3339.svg?branch=master
-            :target: https://travis-ci.org/kurtraschke/pyRFC3339
-        
-        pyRFC3339 parses and generates :RFC:`3339`-compliant timestamps using 
`Python <https://www.python.org/>`_ `datetime.datetime 
<https://docs.python.org/2/library/datetime.html#datetime-objects>`_ objects.
-        
-        >>> from pyrfc3339 import generate, parse
-        >>> from datetime import datetime
-        >>> import pytz
-        >>> generate(datetime.utcnow().replace(tzinfo=pytz.utc)) 
#doctest:+ELLIPSIS
-        '...T...Z'
-        >>> parse('2009-01-01T10:01:02Z')
-        datetime.datetime(2009, 1, 1, 10, 1, 2, tzinfo=<UTC>)
-        >>> parse('2009-01-01T14:01:02-04:00')
-        datetime.datetime(2009, 1, 1, 14, 1, 2, tzinfo=<UTC-04:00>)
-        
-        Installation
-        ============
-        
-        To install the latest version from `PyPI 
<https://pypi.python.org/pypi>`_:
-        
-        ``$ pip install pyRFC3339``
-        
-        To install the latest development version:
-        
-        ``$ pip install 
https://github.com/kurtraschke/pyRFC3339/tarball/master#egg=pyRFC3339-dev``
-        
-        To build the documentation with Sphinx:
-        
-        #. ``$ pip install Sphinx``
-        #. ``$ python setup.py build_sphinx``
-        
-        The documentation is also available online at:
-        
-        ``https://pythonhosted.org/pyRFC3339/``
-        
-Keywords: rfc 3339 timestamp
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Topic :: Internet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/build/.gitignore 
new/pyRFC3339-1.1/docs/build/.gitignore
--- old/pyRFC3339-1.1/docs/build/.gitignore     1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/build/.gitignore     2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/changes.rst 
new/pyRFC3339-1.1/docs/source/changes.rst
--- old/pyRFC3339-1.1/docs/source/changes.rst   1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/changes.rst   2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1 @@
+.. include:: ../../CHANGES.rst
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/conf.py 
new/pyRFC3339-1.1/docs/source/conf.py
--- old/pyRFC3339-1.1/docs/source/conf.py       1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/conf.py       2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,202 @@
+# -*- coding: utf-8 -*-
+#
+# pyRFC3339 documentation build configuration file, created by
+# sphinx-quickstart on Mon Jul 27 19:32:42 2009.
+#
+# This file is execfile()d with the current directory set to its containing 
dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# -- General configuration 
-----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be 
extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx_issues']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'pyRFC3339'
+copyright = u'2018, Kurt Raschke'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '1.1'
+# The full version, including alpha/beta/rc tags.
+release = '1.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = []
+
+# The reST default role (used for this markup: `text`) to use for all 
documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output 
---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'nature'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'pyRFC3339doc'
+
+
+# -- Options for LaTeX output 
--------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass 
[howto/manual]).
+latex_documents = [
+  ('index', 'pyRFC3339.tex', u'pyRFC3339 Documentation',
+   u'Kurt Raschke', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
+
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'http://docs.python.org/': None,
+                       #'http://pytz.sourceforge.net/':None
+                       }
+
+issues_github_path = 'kurtraschke/pyrfc3339'
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/doc.rst 
new/pyRFC3339-1.1/docs/source/doc.rst
--- old/pyRFC3339-1.1/docs/source/doc.rst       1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/doc.rst       2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,19 @@
+Modules
+=======
+
+.. toctree::
+   :maxdepth: 2
+   :glob:
+
+   pyrfc3339
+   generator
+   parser
+   utils
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/generator.rst 
new/pyRFC3339-1.1/docs/source/generator.rst
--- old/pyRFC3339-1.1/docs/source/generator.rst 1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/generator.rst 2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,5 @@
+:mod:`pyrfc3339.generator` -- Generate :RFC:`3339` timestamps
+=============================================================
+
+.. automodule:: pyrfc3339.generator
+                :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/index.rst 
new/pyRFC3339-1.1/docs/source/index.rst
--- old/pyRFC3339-1.1/docs/source/index.rst     1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/index.rst     2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,16 @@
+.. pyRFC3339 documentation master file, created by
+   sphinx-quickstart on Mon Jul 27 19:32:42 2009.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+pyRFC3339
+=========
+
+.. toctree::
+   :maxdepth: 3
+
+   intro
+   changes
+   doc
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/intro.rst 
new/pyRFC3339-1.1/docs/source/intro.rst
--- old/pyRFC3339-1.1/docs/source/intro.rst     1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/intro.rst     2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1 @@
+.. include:: ../../README.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/parser.rst 
new/pyRFC3339-1.1/docs/source/parser.rst
--- old/pyRFC3339-1.1/docs/source/parser.rst    1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/parser.rst    2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,5 @@
+:mod:`pyrfc3339.parser` -- Parse :RFC:`3339` timestamps
+=============================================================
+
+.. automodule:: pyrfc3339.parser
+                :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/pyrfc3339.rst 
new/pyRFC3339-1.1/docs/source/pyrfc3339.rst
--- old/pyRFC3339-1.1/docs/source/pyrfc3339.rst 1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/pyrfc3339.rst 2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,5 @@
+:mod:`pyrfc3339` -- Imports
+=============================
+
+.. automodule:: pyrfc3339
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/docs/source/utils.rst 
new/pyRFC3339-1.1/docs/source/utils.rst
--- old/pyRFC3339-1.1/docs/source/utils.rst     1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/docs/source/utils.rst     2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,6 @@
+:mod:`pyrfc3339.utils` -- Utilities for working with timestamps
+===============================================================
+
+.. automodule:: pyrfc3339.utils
+                :members:
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/pyRFC3339.egg-info/PKG-INFO 
new/pyRFC3339-1.1/pyRFC3339.egg-info/PKG-INFO
--- old/pyRFC3339-1.1/pyRFC3339.egg-info/PKG-INFO       2018-06-11 
02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/pyRFC3339.egg-info/PKG-INFO       1970-01-01 
01:00:00.000000000 +0100
@@ -1,59 +0,0 @@
-Metadata-Version: 1.1
-Name: pyRFC3339
-Version: 1.1
-Summary: Generate and parse RFC 3339 timestamps
-Home-page: https://github.com/kurtraschke/pyRFC3339
-Author: Kurt Raschke
-Author-email: [email protected]
-License: MIT
-Description: Description
-        ===========
-        
-        .. image:: 
https://travis-ci.org/kurtraschke/pyRFC3339.svg?branch=master
-            :target: https://travis-ci.org/kurtraschke/pyRFC3339
-        
-        pyRFC3339 parses and generates :RFC:`3339`-compliant timestamps using 
`Python <https://www.python.org/>`_ `datetime.datetime 
<https://docs.python.org/2/library/datetime.html#datetime-objects>`_ objects.
-        
-        >>> from pyrfc3339 import generate, parse
-        >>> from datetime import datetime
-        >>> import pytz
-        >>> generate(datetime.utcnow().replace(tzinfo=pytz.utc)) 
#doctest:+ELLIPSIS
-        '...T...Z'
-        >>> parse('2009-01-01T10:01:02Z')
-        datetime.datetime(2009, 1, 1, 10, 1, 2, tzinfo=<UTC>)
-        >>> parse('2009-01-01T14:01:02-04:00')
-        datetime.datetime(2009, 1, 1, 14, 1, 2, tzinfo=<UTC-04:00>)
-        
-        Installation
-        ============
-        
-        To install the latest version from `PyPI 
<https://pypi.python.org/pypi>`_:
-        
-        ``$ pip install pyRFC3339``
-        
-        To install the latest development version:
-        
-        ``$ pip install 
https://github.com/kurtraschke/pyRFC3339/tarball/master#egg=pyRFC3339-dev``
-        
-        To build the documentation with Sphinx:
-        
-        #. ``$ pip install Sphinx``
-        #. ``$ python setup.py build_sphinx``
-        
-        The documentation is also available online at:
-        
-        ``https://pythonhosted.org/pyRFC3339/``
-        
-Keywords: rfc 3339 timestamp
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Topic :: Internet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/pyRFC3339.egg-info/SOURCES.txt 
new/pyRFC3339-1.1/pyRFC3339.egg-info/SOURCES.txt
--- old/pyRFC3339-1.1/pyRFC3339.egg-info/SOURCES.txt    2018-06-11 
02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/pyRFC3339.egg-info/SOURCES.txt    1970-01-01 
01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-LICENSE.txt
-MANIFEST.in
-README.rst
-setup.cfg
-setup.py
-pyRFC3339.egg-info/PKG-INFO
-pyRFC3339.egg-info/SOURCES.txt
-pyRFC3339.egg-info/dependency_links.txt
-pyRFC3339.egg-info/requires.txt
-pyRFC3339.egg-info/top_level.txt
-pyrfc3339/__init__.py
-pyrfc3339/generator.py
-pyrfc3339/parser.py
-pyrfc3339/utils.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyRFC3339-1.1/pyRFC3339.egg-info/dependency_links.txt 
new/pyRFC3339-1.1/pyRFC3339.egg-info/dependency_links.txt
--- old/pyRFC3339-1.1/pyRFC3339.egg-info/dependency_links.txt   2018-06-11 
02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/pyRFC3339.egg-info/dependency_links.txt   1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/pyRFC3339.egg-info/requires.txt 
new/pyRFC3339-1.1/pyRFC3339.egg-info/requires.txt
--- old/pyRFC3339-1.1/pyRFC3339.egg-info/requires.txt   2018-06-11 
02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/pyRFC3339.egg-info/requires.txt   1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-pytz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/pyRFC3339.egg-info/top_level.txt 
new/pyRFC3339-1.1/pyRFC3339.egg-info/top_level.txt
--- old/pyRFC3339-1.1/pyRFC3339.egg-info/top_level.txt  2018-06-11 
02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/pyRFC3339.egg-info/top_level.txt  1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-pyrfc3339
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/pyrfc3339/tests/tests.py 
new/pyRFC3339-1.1/pyrfc3339/tests/tests.py
--- old/pyRFC3339-1.1/pyrfc3339/tests/tests.py  1970-01-01 01:00:00.000000000 
+0100
+++ new/pyRFC3339-1.1/pyrfc3339/tests/tests.py  2018-06-11 02:18:08.000000000 
+0200
@@ -0,0 +1,170 @@
+'''
+Test suite for pyRFC3339.
+
+'''
+
+from datetime import datetime
+from copy import deepcopy
+
+from pyrfc3339 import generate, parse
+from pyrfc3339.utils import timezone
+import pytz
+
+from nose.tools import eq_, raises
+
+
+class TestCore():
+    '''
+    This test suite contains tests to address cases not tested in the doctests,
+    as well as additional tests for end-to-end verification.
+
+    '''
+    def test_timezone_rounding(self):
+        '''
+        Test rounding of timezone values to the nearest second.
+
+        '''
+        eq_(timezone(5429), '+01:30')
+        eq_(timezone(5431), '+01:31')
+
+    def test_zero_offset(self):
+        '''
+        Both +00:00 and -00:00 are equivalent to the offset 'Z' (UTC).
+
+        '''
+        timestamp = '2009-01-01T10:02:03+00:00'
+        dt = parse(timestamp)
+        eq_(dt.tzinfo, pytz.utc)
+
+        timestamp = '2009-01-01T10:02:03-00:00'
+        dt = parse(timestamp)
+        eq_(dt.tzinfo, pytz.utc)
+
+    def test_deepcopy(self):
+        '''
+        Tests that deepcopy works and doesn't crash
+
+        '''
+        timestamp = '2009-01-01T10:02:03+02:00'
+        dt = parse(timestamp)
+        deepcopy(dt)
+
+    def test_parse_microseconds(self):
+        '''
+        Test parsing timestamps with microseconds.
+
+        '''
+        timestamp = '2009-01-01T10:02:03.25Z'
+        dt = parse(timestamp)
+        eq_(dt.microsecond, 250000)
+
+    def test_generate_microseconds(self):
+        '''
+        Test generating timestamps with microseconds.
+
+        '''
+        dt = datetime(2009, 1, 1, 10, 2, 3, 500000, pytz.utc)
+        timestamp = generate(dt, microseconds=True)
+        eq_(timestamp, '2009-01-01T10:02:03.500000Z')
+
+    def test_mixed_case(self):
+        '''
+        Timestamps may use either 'T' or 't' and either 'Z' or 'z'
+        according to :RFC:`3339`.
+
+        '''
+        dt1 = parse('2009-01-01t10:01:02z')
+        dt2 = datetime(2009, 1, 1, 10, 1, 2, tzinfo=pytz.utc)
+
+        eq_(dt1, dt2)
+
+    def test_parse_naive_utc(self):
+        '''
+        Test parsing a UTC timestamp to a naive datetime.
+
+        '''
+        dt1 = parse('2009-01-01T10:01:02Z', produce_naive=True)
+        eq_(dt1.tzinfo, None)
+
+    @raises(ValueError)
+    def test_parse_naive_local(self):
+        '''
+        Test that parsing a local timestamp to a naive datetime fails.
+
+        '''
+        parse('2009-01-01T10:01:02-04:00', produce_naive=True)
+
+    def test_generate_utc_parse_utc(self):
+        '''
+        Generate a UTC timestamp and parse it into a UTC datetime.
+
+        '''
+        dt1 = datetime.utcnow()
+        dt1 = dt1.replace(tzinfo=pytz.utc)
+
+        dt2 = parse(generate(dt1, microseconds=True))
+        eq_(dt1, dt2)
+
+    def test_generate_local_parse_local(self):
+        '''
+        Generate a local timestamp and parse it into a local datetime.
+
+        '''
+        eastern = pytz.timezone('US/Eastern')
+        dt1 = eastern.localize(datetime.utcnow())
+        dt2 = parse(generate(dt1, utc=False, microseconds=True), utc=False)
+        eq_(dt1, dt2)
+
+    def test_generate_local_parse_utc(self):
+        '''
+        Generate a local timestamp and parse it into a UTC datetime.
+
+        '''
+        eastern = pytz.timezone('US/Eastern')
+        dt1 = eastern.localize(datetime.utcnow())
+        dt2 = parse(generate(dt1, utc=False, microseconds=True))
+        eq_(dt1, dt2)
+
+
+class TestExhaustiveRoundtrip():
+    '''
+    This test suite exhaustively tests parsing and generation by generating
+    a local RFC 3339 timestamp for every timezone supported by pytz,
+    and parsing that timestamp into a local datetime and a UTC datetime.
+    '''
+
+    slow = True
+
+    def test_local_roundtrip(self):
+        for tz_name in pytz.all_timezones:
+            yield self.local_roundtrip, tz_name
+
+    def local_roundtrip(self, tz_name):
+        '''
+        Generates a local datetime using the given timezone,
+        produces a local timestamp from the datetime, parses the timestamp
+        to a local datetime, and verifies that the two datetimes are equal.
+
+        '''
+        tzinfo = pytz.timezone(tz_name)
+        dt1 = tzinfo.localize(datetime.utcnow())
+        timestamp = generate(dt1, utc=False, microseconds=True)
+        dt2 = parse(timestamp, utc=False)
+        eq_(dt1, dt2)
+
+    def test_utc_roundtrip(self):
+        for tz_name in pytz.all_timezones:
+            yield self.utc_roundtrip, tz_name
+
+    def utc_roundtrip(self, tz_name):
+        '''
+        Generates a local datetime using the given timezone,
+        produces a local timestamp from the datetime, parses the timestamp
+        to a UTC datetime, and verifies that the two datetimes are equal.
+
+        '''
+        tzinfo = pytz.timezone(tz_name)
+        dt1 = tzinfo.localize(datetime.utcnow())
+        timestamp = generate(dt1, utc=False, microseconds=True)
+        dt2 = parse(timestamp)
+        eq_(dt1, dt2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyRFC3339-1.1/setup.cfg new/pyRFC3339-1.1/setup.cfg
--- old/pyRFC3339-1.1/setup.cfg 2018-06-11 02:20:42.000000000 +0200
+++ new/pyRFC3339-1.1/setup.cfg 2018-06-11 02:18:08.000000000 +0200
@@ -1,13 +1,13 @@
 [nosetests]
-verbosity = 2
-detailed-errors = 1
-with-coverage = 1
-cover-package = pyrfc3339
-cover-erase = 1
-cover-html = 1
-cover-html-dir = docs/coverage
-with-doctest = 1
-attr = !slow
+verbosity=2
+detailed-errors=1
+with-coverage=1
+cover-package=pyrfc3339
+cover-erase=1
+cover-html=1
+cover-html-dir=docs/coverage
+with-doctest=1
+attr=!slow
 
 [build_sphinx]
 source-dir = docs/source
@@ -19,8 +19,7 @@
 upload-dir = docs/build/html
 
 [egg_info]
-tag_build = 
-tag_date = 0
+tag_build = .dev
 
 [bdist_wheel]
 universal = 1
@@ -28,4 +27,3 @@
 [aliases]
 release = egg_info -Db ''
 make_dist = release sdist bdist_wheel
-

Reply via email to