+
+(define-public python2-zeroconf
+ (package
+ (name "python2-zeroconf")
+
+ ;; This is the last version that supports Python 2.x.
+ (version "0.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "zeroconf" version))
+ (sha256
+ (base32
+ "0ykzg730n915qbrq9bn5pn06bv6rb5zawal4sqjyfnjjm66snkj3"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-requires
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "setup.py"
+ (("enum-compat")
+ "enum34"))
+ #t)))))
+ (native-inputs
+ `(("python2-six" ,python2-six)
+ ("python2-enum32" ,python2-enum34)
+ ("python2-netifaces" ,python2-netifaces)
+ ("python2-typing" ,python2-typing)))
+ (home-page "https://github.com/jstasiak/python-zeroconf")
+ (synopsis "Pure Python mDNS service discovery")
+ (description
+ "Pure Python multicast DNS (mDNS) service discovery library (Bonjour/Avahi
+compatible).")
+ (license license:lgpl2.1+)))
+
+(define-public python-bsddb3
+ (package
+ (name "python-bsddb3")
+ (version "6.2.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "bsddb3" version))
+ (sha256
+ (base32
+ "019db2y6bfmiqbrgg9x9f6h72qjmqh05czdn2v5sy9bl0gs23mj2"))))
+ (build-system python-build-system)
+ (inputs
+ `(("bdb" ,bdb)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'configure-locations
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb"))
+ (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1")
+ #t))
+ (replace 'check
+ (lambda _
+ (invoke "python3" "test3.py" "-v"))))))
+ (home-page "https://www.jcea.es/programacion/pybsddb.htm")
+ (synopsis "Python bindings for Oracle Berkeley DB")
+ (description
+ "This module provides a nearly complete wrapping of the Oracle/Sleepycat
+C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and
+Transaction objects, and each of these is exposed as a Python type in the
+bsddb3.db module. The database objects can use various access methods: btree,
+hash, recno, and queue. Complete support of Berkeley DB distributed
+transactions. Complete support for Berkeley DB Replication Manager.
+Complete support for Berkeley DB Base Replication. Support for RPC.")
+ (license license:bsd-3)))
+
+(define-public python-dbfread
+ (package
+ (name "python-dbfread")
+ (version "2.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "dbfread" version))
+ (sha256
+ (base32
+ "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://dbfread.readthedocs.io")
+ (synopsis "Read DBF Files with Python")
+ (description
+ "This library reads DBF files and returns the data as native Python data
+types for further processing. It is primarily intended for batch jobs and
+one-off scripts.")
+ (license license:expat)))
+
+(define-public python-cached-property
+ (package
+ (name "python-cached-property")
+ (version "1.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cached-property" version))
+ (sha256
+ (base32
+ "010m1bl380l2r3vwq24r5v14l6gwvgm9v0mqqjkjss552jgsa5wj"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; https://github.com/pydanny/cached-property/issues/131
+ ;; recent versions of freezegun break one test
+ (add-after 'unpack 'disable-broken-test
+ (lambda _
+ (substitute* "tests/test_cached_property.py"
+ (("def test_threads_ttl_expiry\\(self\\)" m)
+ (string-append "@unittest.skip(\"Disabled by Guix\")\n"
+ " " m)))
+ #t)))))
+ (native-inputs
+ `(("python-freezegun" ,python-freezegun)))
+ (home-page
+ "https://github.com/pydanny/cached-property")
+ (synopsis
+ "Decorator for caching properties in classes")
+ (description
+ "This package provides a decorator which makes caching
+time-or-computationally-expensive properties quick and easy and works in Python
+2 or 3.")
+ (license license:bsd-3)))
+
+(define-public python-folium
+ (package
+ (name "python-folium")
+ (version "0.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "folium" version))
+ (sha256
+ (base32
+ "18fzxijsgrb95r0a8anc9ba5ijyw3nlnv3rpavfbkqa5v878x84f"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-branca" ,python-branca)
+ ("python-jinja2" ,python-jinja2)
+ ("python-numpy" ,python-numpy)
+ ("python-requests" ,python-requests)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (home-page "https://github.com/python-visualization/folium")
+ (synopsis "Make beautiful maps with Leaflet.js & Python")
+ (description "@code{folium} makes it easy to visualize data that’s been
+manipulated in Python on an interactive leaflet map. It enables both the
+binding of data to a map for @code{choropleth} visualizations as well as
+passing rich vector/raster/HTML visualizations as markers on the map.
+
+The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
+Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It
+supports Image, Video, GeoJSON and TopoJSON overlays.")
+ (license license:expat)))
+
+(define-public jube
+ (package
+ ;; This is a command-line tool, so no "python-" prefix.
+ (name "jube")
+ (version "2.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version="
+ version))
+ (sha256
+ (base32
+ "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk"))
+ (file-name (string-append "jube-" version ".tar.gz"))))
+ (build-system python-build-system)
+ (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html")
+ (synopsis "Benchmarking environment")
+ (description
+ "JUBE helps perform and analyze benchmarks in a systematic way. For each
+benchmarked application, benchmark data is stored in a format that allows JUBE
+to deduct the desired information. This data can be parsed by automatic pre-
+and post-processing scripts that draw information and store it more densely
+for manual interpretation.")
+ (license license:gpl3+)))
+
+(define-public python-pyroutelib3
+ (package
+ (name "python-pyroutelib3")
+ (version "1.3.post1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyroutelib3" version))
+ (sha256
+ (base32
+ "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)))
+ (home-page "https://github.com/MKuranowski/pyroutelib3")
+ (synopsis "Library for simple routing on OSM data")
+ (description "Library for simple routing on OSM data")
+ (license license:gpl3+)))
+
+(define-public python-elementpath
+ (package
+ (name "python-elementpath")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "elementpath" version))
+ (sha256
+ (base32
+ "1syn2z543brab23dskh3fjd9pqvz6npqbcicrs2d88dbg26xl08p"))))
+ (build-system python-build-system)
+ (home-page
+ "https://github.com/sissaschool/elementpath")
+ (synopsis
+ "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml")
+ (description
+ "The proposal of this package is to provide XPath 1.0 and 2.0 selectors
+for Python's ElementTree XML data structures, both for the standard
+ElementTree library and for the @uref{http://lxml.de, lxml.etree} library.
+
+For lxml.etree this package can be useful for providing XPath 2.0 selectors,
+because lxml.etree already has it's own implementation of XPath 1.0.")
+ (license license:expat)))