[Git][clojure-team/clj-time-clojure][upstream] New upstream version 0.15.2

Louis-Philippe Véronneau gitlab at salsa.debian.org
Thu Dec 17 22:07:59 GMT 2020



Louis-Philippe Véronneau pushed to branch upstream at Debian Clojure Maintainers / clj-time-clojure


Commits:
320bf040 by Louis-Philippe Véronneau at 2020-12-10T12:39:25-05:00
New upstream version 0.15.2
- - - - -


15 changed files:

- .gitignore
- .travis.yml
- ChangeLog.md
- README.md
- + deps.edn
- project.clj
- src/clj_time/coerce.clj
- src/clj_time/core.clj
- src/clj_time/format.clj
- + src/data_readers.clj
- test/clj_time/coerce_test.clj
- test/clj_time/core_test.clj
- test/clj_time/format_test.clj
- + test_spec/clj_time/inst_test.clj
- test_clj_1.9/clj_time/spec_test.clj → test_spec/clj_time/spec_test.clj


Changes:

=====================================
.gitignore
=====================================
@@ -6,6 +6,7 @@ clj-time.jar
 pom.xml
 *.jar
 *~
+.cpcache
 .lein-*
 .nrepl-*
 checkouts


=====================================
.travis.yml
=====================================
@@ -8,5 +8,5 @@ before_script:
 script: lein test-all
 jdk:
   - openjdk7
-  - oraclejdk7
+  - openjdk8
   - oraclejdk8


=====================================
ChangeLog.md
=====================================
@@ -1,3 +1,48 @@
+## Changes Between 0.15.1 and 0.15.2
+
+* Add type hints to reduce reflection warnings for users (#268, #269, @vemv)
+* Fix `overlaps?` with four arguments (#264).
+* Improve tests and documentation (#258, #259, #260, @bhaskarsaraogi)
+
+## Changes Between 0.15.0 and 0.15.1
+
+* Add `adjust` for intervals, so they can be "moved" backwards and forwards by one or more periods (#257).
+
+## Changes Between 0.14.5 and 0.15.0
+
+* Add tagged literal support (in `clj-time.coerce`) (#255, @jconti). `DateTime` can be converted `to-edn` and can be printed as `#clj-time/date-time "..."`, and `data_readers.clj` provides the conversion from that back to `DateTime`.
+
+## Changes Between 0.14.4 and 0.14.5
+
+* Update Joda Time to 2.10 (#254, @novalis).
+* Update various dev/test dependencies; clean up `spec_test.clj` to avoid Clojure refer warnings.
+* Drop `oraclejdk7` from test matrix (we still support `openjdk7`); add `openjdk8`; test Clojure 1.10 on Java 8+ only (#253).
+* Switch to versions.deps.co for tracking outdated dependencies (#252, @v-kolesnikov).
+
+## Changes Between 0.14.3 and 0.14.4
+
+* On Clojure 1.9 and later, `ReadableInstant` now extends to `Inst`, providing `inst?` and `inst-ms` on most Joda Time types (#248, #249)
+
+## Changes Between 0.14.2 and 0.14.3
+
+* Added deprecation notice and recommendation to move to Java Time (and [clojure.java-time](https://github.com/dm3/clojure.java-time)).
+* Clarified behavior of functions when passed `nil` (due to how Joda Time handles `null` objects).
+* Update to Joda Time 2.9.9.
+* Drop Clojure 1.6.0 support.
+* Refactor code to be more idiomatic (mostly `when` instead of `if`).
+
+* Fully-qualify function return type hints to avoid requiring imports on use (#241).
+
+## Changes Between 0.14.1 and 0.14.2
+
+* Fully-qualify function return type hints to avoid requiring imports on use (#241).
+
+## Changes Between 0.14.0 and 0.14.1
+
+* Switches `clojure.spec` to `clojure.spec.alpha` to work with latest Clojure 1.9 builds.
+* Adds `week-year` to go with `week-number-of-year` (#239, #240).
+* Adds function return type hints across the board (#226).
+
 ## Changes Between 0.13.0 and 0.14.0
 
 * Add `from-epoch`.


=====================================
README.md
=====================================
@@ -1,8 +1,20 @@
-# `clj-time` <a href="http://travis-ci.org/#!/clj-time/clj-time/builds"><img src="https://secure.travis-ci.org/clj-time/clj-time.png" /></a> [![Dependency Status](https://www.versioneye.com/clojure/clj-time:clj-time/badge.png)](https://www.versioneye.com/clojure/clj-time:clj-time) [![Join the chat at https://gitter.im/clj-time/clj-time](https://badges.gitter.im/clj-time/clj-time.svg)](https://gitter.im/clj-time/clj-time?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![Build Status](https://travis-ci.org/clj-time/clj-time.svg?branch=master)](https://travis-ci.org/clj-time/clj-time)
+[![Dependencies Status](https://versions.deps.co/clj-time/clj-time/status.svg)](https://versions.deps.co/clj-time/clj-time)
+[![Downloads](https://versions.deps.co/clj-time/clj-time/downloads.svg)](https://versions.deps.co/clj-time/clj-time)
+[![Join the chat at https://gitter.im/clj-time/clj-time](https://badges.gitter.im/clj-time/clj-time.svg)](https://gitter.im/clj-time/clj-time?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
 
+# clj-time
 
 A date and time library for Clojure, wrapping the [Joda Time](http://www.joda.org/joda-time/) library.
 
+## Project Status
+
+**The Joda Time website says:**
+
+> Note that from Java SE 8 onwards, users are asked to migrate to java.time (JSR-310) - a core part of the JDK which replaces this project.
+
+**If you are using Java 8 or later, consider using the built-in Java Time instead of Joda Time -- and look at [clojure.java-time](https://github.com/dm3/clojure.java-time) if you want a Clojure wrapper for that, or [cljc.java-time](https://github.com/henryw374/cljc.java-time) for a thin Clojure(Script) wrapper. See [Converting from Joda Time to java.time](http://blog.joda.org/2014/11/converting-from-joda-time-to-javatime.html) for more details about the similarities and differences between the two libraries.**
+
 ## Artifacts
 
 `clj-time` artifacts are [released to Clojars](https://clojars.org/clj-time/clj-time).
@@ -20,8 +32,8 @@ If you are using Maven, add the following repository definition to your `pom.xml
 
 With Leiningen:
 
-``` clj
-[clj-time "0.14.0"]
+```
+[clj-time "0.15.2"]
 ```
 
 With Maven:
@@ -30,13 +42,13 @@ With Maven:
 <dependency>
   <groupId>clj-time</groupId>
   <artifactId>clj-time</artifactId>
-  <version>0.14.0</version>
+  <version>0.15.2</version>
 </dependency>
 ```
 
 ## Bugs and Enhancements
 
-Please open issues against the [official clj-time repo on Github](https://github.com/clj-time/clj-time/issues).
+Please open issues against the [official clj-time repo on Github](https://github.com/clj-time/clj-time/issues). `clj-time` is a very thin wrapper around Joda Time. That means that if Joda Time has a "peculiar behavior", it's likely to be surfaced directly in `clj-time` as well. A good example of this is `clj-time.format/unparse` which simply calls Joda Time's `.print` method -- and if the date passed in happens to be `nil`, you silently get back the _current date/time_ (many people would expect an exception!).
 
 ## Mailing List
 
@@ -138,6 +150,13 @@ date-time:
 => #<DateTime 1986-12-05T00:00:00.000Z>
 ```
 
+You can perform also `minus` operations
+```clj
+(t/minus (t/date-time 1986 10 14 6) (t/hours 2))
+=> #<DateTime 1986-10-14T04:00:00.000Z>
+```
+
+
 An `Interval` is used to represent the span of time between two
 `DateTime` instances. Construct one using `interval`, then query them
 using `within?`, `overlaps?`, and `abuts?`
@@ -232,13 +251,15 @@ format, you can do this:
 => "2012-02-01"
 ```
 
+Note: Joda Time's `.print` method accepts a null date/time object and substitutes the current date/time, so `(f/unparse my-fmt nil)` will not throw an exception -- it will just silently return the current date/time!
+
 ### clj-time.coerce
 
 The namespace `clj-time.coerce` contains utility functions for
 coercing Joda `DateTime` instances to and from various other types:
 
 
-``` clj
+```clojure
 (require '[clj-time.coerce :as c])
 ```
 
@@ -266,6 +287,38 @@ There are also conversions to and from `java.util.Date` (`to-date` and
 `java.sql.Timestamp` (`to-sql-time` and `from-sql-time`) and several
 other types.
 
+To support serialization to the ubiquitous
+[EDN format](https://github.com/edn-format/edn),
+`pr`, `prn` etc. will serialize Joda `DateTime` in a tagged-literal format,
+that `clojure.edn/read` will deserialize.  There is a `data_readers.clj`
+file, or if not loaded a `data-readers` var to use with `clojure.edn`.
+
+```clojure
+(pr-str (t/date-time 1998 4 25))
+=> "#clj-time/date-time \"1998-04-25T00:00:00.000Z\""
+```
+
+```clojure
+(require '[clojure.edn :as edn])
+=> nil
+```
+
+```clojure
+(def x (edn/read-string {:readers c/data-readers}
+                        (pr-str (t/date-time 1998 4 25))))
+```
+
+```clojure
+(type x)
+=> org.joda.time.DateTime
+```
+
+```clj
+x
+=> #clj-time/date-time "1998-04-25T00:00:00.000Z"
+```
+
+
 ### clj-time.local
 
 The namespace `clj-time.local` contains functions for working with
@@ -336,7 +389,7 @@ check for common conditions. For instance:
 (require '[clj-time.core :as t])
 (require '[clj-time.predicates :as pr])
 ```
-``` clojure
+```clojure
 (pr/monday? (t/date-time 1999 9 9))
 => false
 
@@ -385,7 +438,7 @@ objects when "reading" where you would have previously expected
 
 Running the tests:
 
-    $ rm -f test/readme.clj && lein test-all && lein test-readme
+    $ rm -f test/readme.clj && lein test-all
 
 (assumes Leiningen 2.x)
 


=====================================
deps.edn
=====================================
@@ -0,0 +1 @@
+{:deps {joda-time {:mvn/version "2.10"}}}


=====================================
project.clj
=====================================
@@ -1,4 +1,6 @@
-(defproject clj-time/clj-time "0.14.0"
+(def java7? (.startsWith (System/getProperty "java.version") "1.7"))
+
+(defproject clj-time/clj-time "0.15.2"
   :description "A date and time library for Clojure, wrapping Joda Time."
   :url "https://github.com/clj-time/clj-time"
   :mailing-list {:name "clj-time mailing list"
@@ -7,22 +9,36 @@
   :license {:name "MIT License"
             :url "http://www.opensource.org/licenses/mit-license.php"
             :distribution :repo}
-  :dependencies [[joda-time "2.9.7"]
-                 [org.clojure/clojure "1.8.0" :scope "provided"]]
+  :dependencies [[joda-time "2.10"]
+                 [org.clojure/clojure "1.10.0" :scope "provided"]]
   :min-lein-version "2.0.0"
   :global-vars {*warn-on-reflection* true}
-  :profiles {:dev {:dependencies [[org.clojure/java.jdbc "0.6.1"]]
-                   :plugins [[codox "0.8.10"]]}
-             :midje {:dependencies [[midje "1.9.0-alpha5"]]
+  :profiles {:dev {:dependencies [[org.clojure/java.jdbc "0.7.9"]]
+                   :plugins [[codox "0.10.6"]]}
+             :midje {:dependencies [[midje "1.9.8"]]
                      :plugins      [[lein-midje "3.2.1"]
                                     [midje-readme "1.0.9"]]
                      :midje-readme {:require "[clj-time.core :as t] [clj-time.predicates :as pr] [clj-time.format :as f] [clj-time.coerce :as c]"}}
-             :1.6    {:dependencies [[org.clojure/clojure "1.6.0"]]}
              :1.7    {:dependencies [[org.clojure/clojure "1.7.0"]]}
+             :1.8    {:dependencies [[org.clojure/clojure "1.8.0"]]}
+             :1.9    {:dependencies [[org.clojure/clojure "1.9.0"]
+                                     [org.clojure/test.check "0.10.0-alpha4"]]
+                      :test-paths ["test" "test_spec"]}
+             :1.10   {:dependencies [[org.clojure/clojure "1.10.0"]
+                                     [org.clojure/test.check "0.10.0-alpha4"]]
+                      :test-paths ["test" "test_spec"]}
              :master {:repositories [["snapshots" "https://oss.sonatype.org/content/repositories/snapshots/"]]
-                      :dependencies [[org.clojure/clojure "1.9.0-master-SNAPSHOT"]]}
-             :spec   {:dependencies [[org.clojure/clojure "1.9.0-alpha17"]
-                                     [org.clojure/test.check "0.9.0"]]
-                      :test-paths ["test" "test_clj_1.9"]}}
+                      :dependencies [[org.clojure/clojure "1.11.0-master-SNAPSHOT"]
+                                     [org.clojure/test.check "0.10.0-alpha4"]]
+                      :test-paths ["test" "test_spec"]}}
 
-  :aliases {"test-all" ["with-profile" "dev,master,default,midje:dev,default,midje:dev,1.6,midje:dev,1.7,midje" "test"]})
+  :aliases {"test-all" ["with-profile"
+                        ~(str (when-not java7?
+                                ;; 1.10+ requires Java 8+
+                                (str "dev,master,midje:" ; 1.11 with spec
+                                     "dev,1.10,midje:" ; 1.10 with spec
+                                     "dev,default,midje:")) ; 1.10 without spec
+                              "dev,1.9,midje:" ; 1.9 with spec
+                              "dev,1.8,midje:" ; 1.8 is supported too
+                              "dev,1.7,midje") ; 1.7 is earliest we support
+                        "test"]})


=====================================
src/clj_time/coerce.clj
=====================================
@@ -10,46 +10,53 @@
   (:refer-clojure :exclude [extend second])
   (:require [clj-time.core :refer :all]
             [clj-time.format :as time-fmt])
-  (:import [java.sql Timestamp]
+  (:import [java.io Writer]
+           [java.sql Timestamp]
            [java.util Date]
            [org.joda.time DateTime DateTimeZone DateMidnight YearMonth
                           LocalDate LocalDateTime]))
 
 (defprotocol ICoerce
-  (^org.joda.time.DateTime
-    to-date-time [obj] "Convert `obj` to a Joda DateTime instance."))
+  (to-date-time ^org.joda.time.DateTime [obj] "Convert `obj` to a Joda DateTime instance."))
 
 (defn from-long
   "Returns a DateTime instance in the UTC time zone corresponding to the given
    number of milliseconds after the Unix epoch."
+  ^org.joda.time.DateTime
   [^Long millis]
   (DateTime. millis ^DateTimeZone utc))
 
-
 (defn from-epoch
   "Returns a DateTime instance in the UTC time zone
    from given Unix epoch."
+  ^org.joda.time.DateTime
   [^Long epoch]
   (from-long (* epoch 1000)))
 
-
 (defn from-string
   "return DateTime instance from string using
    formatters in clj-time.format, returning first
    which parses"
+  ^org.joda.time.DateTime
   [^String s]
   (time-fmt/parse s))
 
+(def data-readers
+  "tagged literal support if loader does not find \"data_readers.clj\""
+  {'clj-time/date-time from-string})
+
 (defn from-date
   "Returns a DateTime instance in the UTC time zone corresponding to the given
    Java Date object."
-  [^Date date]
+  ^org.joda.time.DateTime
+  [^java.util.Date date]
   (when date
     (from-long (.getTime date))))
 
 (defn from-sql-date
   "Returns a DateTime instance in the UTC time zone corresponding to the given
    java.sql.Date object."
+  ^org.joda.time.DateTime
   [^java.sql.Date sql-date]
   (when sql-date
     (from-long (.getTime sql-date))))
@@ -57,69 +64,92 @@
 (defn from-sql-time
   "Returns a DateTime instance in the UTC time zone corresponding to the given
    java.sql.Timestamp object."
+  ^org.joda.time.DateTime
   [^java.sql.Timestamp sql-time]
   (when sql-time
     (from-long (.getTime sql-time))))
 
 (defn to-long
   "Convert `obj` to the number of milliseconds after the Unix epoch."
+  ^Long
   [obj]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (.getMillis dt)))
 
 (defn to-epoch
   "Convert `obj` to Unix epoch."
+  ^Long
   [obj]
-  (let [millis (to-long obj)]
-    (and millis (quot millis 1000))))
+  (when-let [millis (to-long obj)]
+    (quot millis 1000)))
 
 (defn to-date
   "Convert `obj` to a Java Date instance."
+  ^java.util.Date
   [obj]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (Date. (.getMillis dt))))
 
 (defn to-sql-date
   "Convert `obj` to a java.sql.Date instance."
+  ^java.sql.Date
   [obj]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (java.sql.Date. (.getMillis dt))))
 
 (defn to-sql-time
   "Convert `obj` to a java.sql.Timestamp instance."
+  ^java.sql.Timestamp
   [obj]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (java.sql.Timestamp. (.getMillis dt))))
 
 (defn to-string
   "Returns a string representation of obj in UTC time-zone
   using (ISODateTimeFormat/dateTime) date-time representation."
+  ^String
   [obj]
-  (if-let [^DateTime dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (time-fmt/unparse (:date-time time-fmt/formatters) dt)))
 
+(defn to-edn
+  "Convert `obj` to a string representation readable by clojure.edn/read."
+  ^String
+  [obj]
+  (when-let [dt (to-date-time obj)]
+    (str "#clj-time/date-time \"" (to-string dt) "\"")))
+
+;; pr and prn support to write edn
+(defmethod print-method org.joda.time.DateTime
+  [v ^java.io.Writer w]
+  (.write w (to-edn v)))
+
 (defn to-timestamp
   "Convert `obj` to a Java SQL Timestamp instance."
+  ^java.sql.Timestamp
   [obj]
-  (if-let [dt (to-date-time obj)]
-    (Timestamp. (.getMillis dt))))
+  (when-let [dt (to-date-time obj)]
+    (java.sql.Timestamp. (.getMillis dt))))
 
 (defn to-local-date
   "Convert `obj` to a org.joda.time.LocalDate instance"
+  ^org.joda.time.LocalDate
   [obj]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (LocalDate. (.getMillis (from-time-zone dt (default-time-zone))))))
 
 (defn to-local-date-time
   "Convert `obj` to a org.joda.time.LocalDateTime instance"
+  ^org.joda.time.LocalDateTime
   [obj]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (LocalDateTime. (.getMillis (from-time-zone dt (default-time-zone))))))
 
 (defn in-time-zone
   "Convert `obj` into `tz`, return org.joda.time.LocalDate instance."
+  ^org.joda.time.LocalDate
   [obj tz]
-  (if-let [dt (to-date-time obj)]
+  (when-let [dt (to-date-time obj)]
     (-> dt
         (to-time-zone tz)
         .toLocalDate)))
@@ -175,6 +205,6 @@
   (to-date-time [string]
     (from-string string))
 
-  Timestamp
+  java.sql.Timestamp
   (to-date-time [timestamp]
     (from-date timestamp)))


=====================================
src/clj_time/core.clj
=====================================
@@ -119,7 +119,8 @@
     "Returns a new date/time corresponding to the given date/time moved backwards by the given Period(s).")
   (first-day-of-the-month- [this] "Returns the first day of the month")
   (last-day-of-the-month- [this] "Returns the last day of the month")
-  (week-number-of-year [this] "Returs the number of weeks in the year"))
+  (week-number-of-year [this] "Returns the week of the week based year of the given date/time")
+  (week-year [this] "Returns the the week based year of the given date/time."))
 
 (defprotocol InTimeUnitProtocol
   "Interface for in-<time unit> functions"
@@ -157,6 +158,7 @@
      (.. ^DateTime this dayOfMonth withMaximumValue))
   (week-number-of-year [this]
     (.getWeekOfWeekyear this))
+  (week-year [this] (.getWeekyear this))
 
   org.joda.time.DateMidnight
   (year [this] (.getYear this))
@@ -182,6 +184,7 @@
      (.. ^DateMidnight this dayOfMonth withMaximumValue))
   (week-number-of-year [this]
     (.getWeekOfWeekyear this))
+  (week-year [this] (.getWeekyear this))
 
   org.joda.time.LocalDateTime
   (year [this] (.getYear this))
@@ -207,6 +210,7 @@
      (.. ^LocalDateTime this dayOfMonth withMaximumValue))
   (week-number-of-year [this]
     (.getWeekOfWeekyear this))
+  (week-year [this] (.getWeekyear this))
 
   org.joda.time.YearMonth
   (year [this] (.getYear this))
@@ -233,6 +237,7 @@
      (.. ^LocalDate this dayOfMonth withMaximumValue))
   (week-number-of-year [this]
     (.getWeekOfWeekyear this))
+  (week-year [this] (.getWeekyear this))
 
   org.joda.time.LocalTime
   (hour [this] (.getHourOfDay this))
@@ -252,12 +257,14 @@
 
 (defn now
   "Returns a DateTime for the current instant in the UTC time zone."
+  ^org.joda.time.DateTime
   []
   (DateTime. ^DateTimeZone utc))
 
 (defn time-now
   "Returns a LocalTime for the current instant without date or time zone
   using ISOChronology in the current time zone."
+  ^org.joda.time.LocalTime
   []
   (LocalTime. ))
 
@@ -269,14 +276,16 @@
   ([^DateTimeZone tz]
    (DateMidnight. tz)))
 
-(defn ^DateTime with-time-at-start-of-day
+(defn with-time-at-start-of-day
   "Returns a DateTime representing the start of the day. Normally midnight,
   but not always true, as in some time zones with daylight savings."
+  ^org.joda.time.DateTime
   [^DateTime dt]
   (.withTimeAtStartOfDay dt))
 
 (defn epoch
   "Returns a DateTime for the beginning of the Unix epoch in the UTC time zone."
+  ^org.joda.time.DateTime
   []
   (DateTime. (long 0) ^DateTimeZone utc))
 
@@ -285,12 +294,12 @@
    Specify the year, month of year, day of month. Note that month and day are
    1-indexed. Any number of least-significant components can be ommited, in which case
    they will default to 1."
-  ([year]
-    (date-midnight year 1 1))
-  ([^long year ^long month]
-    (date-midnight year month 1))
-  ([^Long year ^Long month ^Long day]
-    (DateMidnight. year month day ^DateTimeZone utc)))
+  (^DateMidnight [year]
+   (date-midnight year 1 1))
+  (^DateMidnight [^long year ^long month]
+   (date-midnight year month 1))
+  (^DateMidnight [^Long year ^Long month ^Long day]
+   (DateMidnight. year month day ^DateTimeZone utc)))
 
 (defn min-date
   "Minimum of the provided DateTimes."
@@ -302,99 +311,102 @@
   [dt & dts]
   (reduce #(if (after? %1 %2) %1 %2) dt dts))
 
-(defn ^DateTime date-time
+(defn date-time
   "Constructs and returns a new DateTime in UTC.
    Specify the year, month of year, day of month, hour of day, minute of hour,
    second of minute, and millisecond of second. Note that month and day are
    1-indexed while hour, second, minute, and millis are 0-indexed.
    Any number of least-significant components can be ommited, in which case
    they will default to 1 or 0 as appropriate."
-  ([year]
+  (^org.joda.time.DateTime [year]
    (date-time year 1 1 0 0 0 0))
-  ([year month]
+  (^org.joda.time.DateTime [year month]
    (date-time year month 1 0 0 0 0))
-  ([year month day]
+  (^org.joda.time.DateTime [year month day]
    (date-time year month day 0 0 0 0))
-  ([year month day hour]
+  (^org.joda.time.DateTime [year month day hour]
    (date-time year month day hour 0 0 0))
-  ([year month day hour minute]
+  (^org.joda.time.DateTime [year month day hour minute]
    (date-time year month day hour minute 0 0))
-  ([year month day hour minute second]
+  (^org.joda.time.DateTime [year month day hour minute second]
    (date-time year month day hour minute second 0))
-  ([^Integer year ^Integer month ^Integer day ^Integer hour
-    ^Integer minute ^Integer second ^Integer millis]
+  (^org.joda.time.DateTime [^Integer year ^Integer month ^Integer day ^Integer hour
+                            ^Integer minute ^Integer second ^Integer millis]
    (DateTime. year month day hour minute second millis ^DateTimeZone utc)))
 
-(defn ^org.joda.time.LocalDateTime local-date-time
+(defn local-date-time
   "Constructs and returns a new LocalDateTime.
    Specify the year, month of year, day of month, hour of day, minute of hour,
    second of minute, and millisecond of second. Note that month and day are
    1-indexed while hour, second, minute, and millis are 0-indexed.
    Any number of least-significant components can be ommited, in which case
    they will default to 1 or 0 as appropriate."
-  ([year]
+  (^org.joda.time.LocalDateTime [year]
    (local-date-time year 1 1 0 0 0 0))
-  ([year month]
+  (^org.joda.time.LocalDateTime [year month]
    (local-date-time year month 1 0 0 0 0))
-  ([year month day]
+  (^org.joda.time.LocalDateTime [year month day]
    (local-date-time year month day 0 0 0 0))
-  ([year month day hour]
+  (^org.joda.time.LocalDateTime [year month day hour]
    (local-date-time year month day hour 0 0 0))
-  ([year month day hour minute]
+  (^org.joda.time.LocalDateTime [year month day hour minute]
    (local-date-time year month day hour minute 0 0))
-  ([year month day hour minute second]
+  (^org.joda.time.LocalDateTime [year month day hour minute second]
    (local-date-time year month day hour minute second 0))
-  ([^Integer year ^Integer month ^Integer day ^Integer hour
-    ^Integer minute ^Integer second ^Integer millis]
+  (^org.joda.time.LocalDateTime [^Integer year ^Integer month ^Integer day ^Integer hour
+                   ^Integer minute ^Integer second ^Integer millis]
    (LocalDateTime. year month day hour minute second millis)))
 
-(defn ^org.joda.time.YearMonth year-month
+(defn year-month
   "Constructs and returns a new YearMonth.
    Specify the year and month of year. Month is 1-indexed and defaults
    to January (1)."
-  ([year]
-     (year-month year 1))
-  ([^Integer year ^Integer month]
-     (YearMonth. year month)))
+  (^org.joda.time.YearMonth [year]
+   (year-month year 1))
+  (^org.joda.time.YearMonth [^Integer year ^Integer month]
+   (YearMonth. year month)))
 
-(defn ^org.joda.time.LocalDate local-date
+(defn local-date
   "Constructs and returns a new LocalDate.
    Specify the year, month, and day. Does not deal with timezones."
+  ^org.joda.time.LocalDate
   [^Integer year ^Integer month ^Integer day]
   (LocalDate. year month day))
 
-(defn ^org.joda.time.LocalTime local-time
+(defn local-time
   "Constructs and returns a new LocalTime.
    Specify the hour of day, minute of hour, second of minute, and millisecond of second.
    Any number of least-significant components can be ommited, in which case
    they will default to 1 or 0 as appropriate."
-  ([hour]
+  (^org.joda.time.LocalTime [hour]
    (local-time hour 0 0 0))
-  ([hour minute]
+  (^org.joda.time.LocalTime [hour minute]
    (local-time hour minute 0 0))
-  ([hour minute second]
+  (^org.joda.time.LocalTime [hour minute second]
    (local-time hour minute second 0))
-  ([^Integer hour ^Integer minute ^Integer second ^Integer millis]
+  (^org.joda.time.LocalTime [^Integer hour ^Integer minute ^Integer second ^Integer millis]
    (LocalTime. hour minute second millis))
   )
 
-(defn ^org.joda.time.LocalDate today
+(defn today
   "Constructs and returns a new LocalDate representing today's date.
    LocalDate objects do not deal with timezones at all."
+  ^org.joda.time.LocalDate
   []
   (LocalDate.))
 
 (defn time-zone-for-offset
   "Returns a DateTimeZone for the given offset, specified either in hours or
    hours and minutes."
-  ([hours]
+  (^org.joda.time.DateTimeZone [hours]
    (DateTimeZone/forOffsetHours hours))
-  ([hours minutes]
+  (^org.joda.time.DateTimeZone [hours minutes]
    (DateTimeZone/forOffsetHoursMinutes hours minutes)))
 
 (defn time-zone-for-id
   "Returns a DateTimeZone for the given ID, which must be in long form, e.g.
    'America/Matamoros'."
+  ^org.joda.time.DateTimeZone
   [^String id]
   (DateTimeZone/forID id))
 
@@ -405,80 +417,81 @@
 
 (defn default-time-zone
   "Returns the default DateTimeZone for the current environment."
+  ^org.joda.time.DateTimeZone
   []
   (DateTimeZone/getDefault))
 
-(defn ^org.joda.time.DateTime
-  to-time-zone
+(defn to-time-zone
   "Returns a new ReadableDateTime corresponding to the same absolute instant in time as
    the given ReadableDateTime, but with calendar fields corresponding to the given
    TimeZone."
+  ^org.joda.time.DateTime
   [^DateTime dt ^DateTimeZone tz]
   (.withZone dt tz))
 
-(defn ^org.joda.time.DateTime
-  from-time-zone
+(defn from-time-zone
   "Returns a new ReadableDateTime corresponding to the same point in calendar time as
    the given ReadableDateTime, but for a correspondingly different absolute instant in
    time."
+  ^org.joda.time.DateTime
   [^DateTime dt ^DateTimeZone tz]
   (.withZoneRetainFields dt tz))
 
 (defn years
   "Given a number, returns a Period representing that many years.
    Without an argument, returns a PeriodType representing only years."
-  ([]
-     (PeriodType/years))
-  ([^Integer n]
-     (Years/years n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/years))
+  (^org.joda.time.Years [^Integer n]
+   (Years/years n)))
 
 (defn months
   "Given a number, returns a Period representing that many months.
    Without an argument, returns a PeriodType representing only months."
-  ([]
-     (PeriodType/months))
-  ([^Integer n]
-     (Months/months n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/months))
+  (^org.joda.time.Months [^Integer n]
+   (Months/months n)))
 
 (defn weeks
   "Given a number, returns a Period representing that many weeks.
    Without an argument, returns a PeriodType representing only weeks."
-  ([]
-     (PeriodType/weeks))
-  ([^Integer n]
-     (Weeks/weeks n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/weeks))
+  (^org.joda.time.Weeks [^Integer n]
+   (Weeks/weeks n)))
 
 (defn days
   "Given a number, returns a Period representing that many days.
    Without an argument, returns a PeriodType representing only days."
-  ([]
-     (PeriodType/days))
-  ([^Integer n]
-     (Days/days n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/days))
+  (^org.joda.time.Days [^Integer n]
+   (Days/days n)))
 
 (defn hours
   "Given a number, returns a Period representing that many hours.
    Without an argument, returns a PeriodType representing only hours."
-  ([]
-     (PeriodType/hours))
-  ([^Integer n]
-     (Hours/hours n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/hours))
+  (^org.joda.time.Hours [^Integer n]
+   (Hours/hours n)))
 
 (defn minutes
   "Given a number, returns a Period representing that many minutes.
    Without an argument, returns a PeriodType representing only minutes."
-  ([]
-     (PeriodType/minutes))
-  ([^Integer n]
-     (Minutes/minutes n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/minutes))
+  (^org.joda.time.Minutes [^Integer n]
+   (Minutes/minutes n)))
 
 (defn seconds
   "Given a number, returns a Period representing that many seconds.
    Without an argument, returns a PeriodType representing only seconds."
-  ([]
-     (PeriodType/seconds))
-  ([^Integer n]
-     (Seconds/seconds n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/seconds))
+  (^org.joda.time.Seconds [^Integer n]
+   (Seconds/seconds n)))
 
 (extend-protocol InTimeUnitProtocol
   org.joda.time.Interval
@@ -539,10 +552,10 @@
 (defn millis
   "Given a number, returns a Period representing that many milliseconds.
    Without an argument, returns a PeriodType representing only milliseconds."
-  ([]
-     (PeriodType/millis))
-  ([^Integer n]
-     (Period/millis n)))
+  (^org.joda.time.PeriodType []
+   (PeriodType/millis))
+  (^org.joda.time.Period [^Integer n]
+   (Period/millis n)))
 
 (defn plus
   "Returns a new date/time corresponding to the given date/time moved forwards by
@@ -596,7 +609,7 @@
 (defn interval
   "Returns an interval representing the span between the two given ReadableDateTimes.
    Note that intervals are closed on the left and open on the right."
-  [^ReadableDateTime dt-a ^ReadableDateTime dt-b]
+  ^Interval [^ReadableDateTime dt-a ^ReadableDateTime dt-b]
   (Interval. dt-a dt-b))
 
 (defn start
@@ -615,6 +628,16 @@
   [^Interval in & by]
   (.withEnd in (apply plus (end in) by)))
 
+(defn adjust
+  "Returns an Interval with the start and end adjusted by the specified Periods."
+  [^Interval in & by]
+  (interval (apply plus (start in) by)
+            (apply plus (end in) by)))
+
+(comment
+  (from-now (days 4))
+  (interval (now) (from-now (days 4)))
+  (adjust (interval (now) (from-now (days 4))) (hours -4) (minutes 30)))
 
 (defn within?
   "With 2 arguments: Returns true if the given Interval contains the given
@@ -640,8 +663,7 @@
   ([^ReadablePartial start-a ^ReadablePartial end-a
     ^ReadablePartial start-b ^ReadablePartial end-b]
      (or (and (before? start-b end-a) (after? end-b start-a))
-         (and (after? end-b start-a) (before? start-b end-a))
-         (or (equal? start-a end-b) (equal? start-b end-a)))))
+         (and (after? end-b start-a) (before? start-b end-a)))))
 
 (defn overlap
   "Returns an Interval representing the overlap of the specified Intervals.
@@ -736,7 +758,7 @@
    (plus (first-day-of-the-month dt)
          (days (- n 1)))))
 
-(defn ^DateTime today-at
+(defn ^org.joda.time.DateTime today-at
   ([^long hours ^long minutes ^long seconds ^long millis]
      (let [^MutableDateTime mdt (.toMutableDateTime ^DateTime (now))]
        (.toDateTime (doto mdt
@@ -762,11 +784,11 @@
   `(do-at* ~base-date-time
     (fn [] ~@body)))
 
-(defn ^DateTime floor
+(defn floor
   "Floors the given date-time dt to the given time unit dt-fn,
   e.g. (floor (now) hour) returns (now) for all units
   up to and including the hour"
-  ([^DateTime dt dt-fn]
+  (^org.joda.time.DateTime [^DateTime dt dt-fn]
    (let [dt-fns [year month day hour minute second milli]
          tz (.getZone dt)]
     (.withZoneRetainFields
@@ -776,3 +798,13 @@
   				(concat (take-while (partial not= dt-fn) dt-fns) [dt-fn])
   				(repeat [dt])))
       tz))))
+
+(defmacro ^:private when-available [sym & body]
+  (when (resolve sym)
+    `(do ~@body)))
+
+(when-available Inst
+  (extend-protocol Inst
+    org.joda.time.ReadableInstant
+    (inst-ms* [inst]
+      (.getMillis inst))))


=====================================
src/clj_time/format.clj
=====================================
@@ -40,13 +40,13 @@
 
 (defn formatter
   "Returns a custom formatter for the given date-time pattern or keyword."
-  ([fmts]
+  (^org.joda.time.format.DateTimeFormatter [fmts]
      (formatter fmts utc))
-  ([fmts ^DateTimeZone dtz]
+  (^org.joda.time.format.DateTimeFormatter [fmts ^DateTimeZone dtz]
    (cond (keyword? fmts) (.withZone ^DateTimeFormatter (get formatters fmts) dtz)
          (string?  fmts) (.withZone (DateTimeFormat/forPattern fmts) dtz)
          :else           (.withZone ^DateTimeFormatter fmts dtz)))
-  ([^DateTimeZone dtz fmts & more]
+  (^org.joda.time.format.DateTimeFormatter [^DateTimeZone dtz fmts & more]
     (let [printer (.getPrinter ^DateTimeFormatter (formatter fmts dtz))
           parsers (map #(.getParser ^DateTimeFormatter (formatter % dtz)) (cons fmts more))]
       (-> (DateTimeFormatterBuilder.)
@@ -58,32 +58,32 @@
 
 (defn formatter-local
   "Returns a custom formatter with no time zone info."
-  ([^String fmt]
+  (^org.joda.time.format.DateTimeFormat [^String fmt]
      (DateTimeFormat/forPattern fmt)))
 
 (defn with-chronology
   "Return a copy of a formatter that uses the given Chronology."
-  [^DateTimeFormatter f ^Chronology c]
+  ^org.joda.time.format.DateTimeFormatter [^DateTimeFormatter f ^Chronology c]
   (.withChronology f c))
 
 (defn with-locale
   "Return a copy of a formatter that uses the given Locale."
-  [^DateTimeFormatter f ^Locale l]
+  ^org.joda.time.format.DateTimeFormatter [^DateTimeFormatter f ^Locale l]
   (.withLocale f l))
 
 (defn with-pivot-year
   "Return a copy of a formatter that uses the given pivot year."
-  [^DateTimeFormatter f ^Long pivot-year]
+  ^org.joda.time.format.DateTimeFormatter [^DateTimeFormatter f ^Long pivot-year]
   (.withPivotYear f pivot-year))
 
 (defn with-zone
   "Return a copy of a formatter that uses the given DateTimeZone."
-  [^DateTimeFormatter f ^DateTimeZone dtz]
+  ^org.joda.time.format.DateTimeFormatter [^DateTimeFormatter f ^DateTimeZone dtz]
   (.withZone f dtz))
 
 (defn with-default-year
   "Return a copy of a formatter that uses the given default year."
-  [^DateTimeFormatter f ^Integer default-year]
+  ^org.joda.time.format.DateTimeFormatter [^DateTimeFormatter f ^Integer default-year]
   (.withDefaultYear f default-year))
 
 (def ^{:doc "Map of ISO 8601 and a single RFC 822 formatters that can be used for parsing and, in most
@@ -156,9 +156,9 @@
 (defn parse
   "Returns a DateTime instance in the UTC time zone obtained by parsing the
    given string according to the given formatter."
-  ([^DateTimeFormatter fmt ^String s]
+  (^org.joda.time.DateTime [^DateTimeFormatter fmt ^String s]
      (.parseDateTime fmt s))
-  ([^String s]
+  (^org.joda.time.DateTime [^String s]
      (first
       (for [f (vals formatters)
             :let [d (try (parse f s) (catch Exception _ nil))]
@@ -167,9 +167,9 @@
 (defn parse-local
   "Returns a LocalDateTime instance obtained by parsing the
    given string according to the given formatter."
-  ([^DateTimeFormatter fmt ^String s]
+  (^org.joda.time.LocalDateTime [^DateTimeFormatter fmt ^String s]
      (.parseLocalDateTime fmt s))
-  ([^String s]
+  (^org.joda.time.LocalDateTime [^String s]
      (first
       (for [f (vals formatters)
             :let [d (try (parse-local f s) (catch Exception _ nil))]
@@ -178,9 +178,9 @@
 (defn parse-local-date
   "Returns a LocalDate instance obtained by parsing the
    given string according to the given formatter."
-  ([^DateTimeFormatter fmt ^String s]
+  (^org.joda.time.LocalDate [^DateTimeFormatter fmt ^String s]
      (.parseLocalDate fmt s))
-  ([^String s]
+  (^org.joda.time.LocalDate [^String s]
      (first
       (for [f (vals formatters)
             :let [d (try (parse-local-date f s) (catch Exception _ nil))]
@@ -189,7 +189,7 @@
 (defn parse-local-time
   "Returns a LocalTime instance obtained by parsing the
   given string according to the given formatter."
-  ([^DateTimeFormatter fmt ^ String s]
+  (^org.joda.time.LocalTime [^DateTimeFormatter fmt ^ String s]
    (.parseLocalTime fmt s))
    ([^String s]
      (first
@@ -200,25 +200,25 @@
 (defn unparse
   "Returns a string representing the given DateTime instance in UTC and in the
   form determined by the given formatter."
-  [^DateTimeFormatter fmt ^DateTime dt]
+  ^String [^DateTimeFormatter fmt ^DateTime dt]
   (.print fmt dt))
 
 (defn unparse-local
   "Returns a string representing the given LocalDateTime instance in the
   form determined by the given formatter."
-  [^DateTimeFormatter fmt ^LocalDateTime dt]
+  ^String [^DateTimeFormatter fmt ^LocalDateTime dt]
   (.print fmt dt))
 
 (defn unparse-local-date
   "Returns a string representing the given LocalDate instance in the form
   determined by the given formatter."
-  [^DateTimeFormatter fmt ^LocalDate ld]
+  ^String [^DateTimeFormatter fmt ^LocalDate ld]
   (.print fmt ld))
 
 (defn unparse-local-time
   "Returns a string representing the given LocalTime instance in the form
   determined by the given formatter."
-  [^DateTimeFormatter fmt ^LocalTime lt]
+  ^String [^DateTimeFormatter fmt ^LocalTime lt]
   (.print fmt lt))
 
 


=====================================
src/data_readers.clj
=====================================
@@ -0,0 +1 @@
+{clj-time/date-time clj-time.coerce/from-string}


=====================================
test/clj_time/coerce_test.clj
=====================================
@@ -1,6 +1,7 @@
 (ns clj-time.coerce-test
   (:refer-clojure :exclude [extend second])
-  (:require [clojure.test :refer :all]
+  (:require [clojure.edn :as edn]
+            [clojure.test :refer :all]
             [clj-time [core :refer :all] [coerce :refer :all]])
   (:import java.util.Date java.sql.Timestamp
            [org.joda.time LocalDate LocalDateTime]))
@@ -144,6 +145,24 @@
   (is (= "1998-04-25T00:00:00.000Z" (to-string (Timestamp. 893462400000))))
   (is (= "1998-04-25T00:00:00.000Z" (to-string "1998-04-25T00:00:00.000Z"))))
 
+(deftest test-to-edn
+  (is (nil? (to-edn nil)))
+  (is (nil? (to-edn "")))
+  (is (nil? (to-edn "x")))
+  (is (= (date-time 1970 1 1 0 0 0 0)
+         (edn/read-string {:readers data-readers}
+                          (to-edn 0))))
+  (are [o] (= (date-time 1998 4 25 0 0 0 0)
+               (edn/read-string {:readers data-readers}
+                                (to-edn o)))
+    (date-time 1998 4 25)
+    (date-midnight 1998 4 25)
+    (Date. 893462400000)
+    (java.sql.Date. 893462400000)
+    893462400000
+    (Timestamp. 893462400000)
+    "1998-04-25T00:00:00.000Z"))
+
 (deftest test-to-timestamp
   (is (nil? (to-timestamp nil)))
   (is (nil? (to-timestamp "")))


=====================================
test/clj_time/core_test.clj
=====================================
@@ -5,6 +5,9 @@
   (:import java.util.Date
            org.joda.time.DateTime))
 
+;; visual sanity check on version being used:
+(println "\nTesting clj-time with Clojure" (clojure-version) "\n")
+
 (deftest test-now
   (is (= (date-time 2010 1 1)
          (do-at (date-time 2010 1 1)
@@ -381,7 +384,7 @@
   (is (= 30240 (-> 3 weeks in-minutes)))
   (is (thrown? UnsupportedOperationException (-> 2 months in-minutes)))
   (is (thrown? UnsupportedOperationException (-> 2 years in-minutes))))
- 
+
 (deftest test-period-in-hours
   (is (= 0   (-> 30 seconds in-hours)))
   (is (= 0   (-> 4 minutes in-hours)))
@@ -427,6 +430,18 @@
   (is (= 1 (-> 14 months in-years)))
   (is (= 3 (-> 3 years in-years))))
 
+(deftest test-adjust
+  (let [s (now) e (plus s (hours 3))
+        i (interval s e)]
+    (is (abuts? i (adjust i (hours 3))))
+    (is (abuts? i (adjust i (hours -3))))
+    (is (not (within? i (plus s (hours 4)))))
+    (is (within? (adjust i (hours 3)) (plus s (hours 4))))
+    (is (not (within? i (minus s (hours 2)))))
+    (is (within? (adjust i (hours -3)) (minus s (hours 2))))
+    (is (overlaps? i (adjust i (hours 1))))
+    (is (overlaps? i (adjust i (hours -1))))))
+
 (deftest test-within?
   (let [d1 (date-time 1985)
         d2 (date-time 1986)
@@ -491,8 +506,10 @@
     (is (overlaps? ld1 ld5 ld1 ld5))
     (is (overlaps? ld1 ld5 ld2 ld4))
     (is (overlaps? ld2 ld4 ld1 ld5))
-    (is (overlaps? ld1 ld2 ld2 ld3))
-    (is (overlaps? ld2 ld3 ld1 ld2))
+    ;; these ranges abut and do not overlap -- fixed in #264
+    (is (not (overlaps? ld1 ld2 ld2 ld3)))
+    ;; these ranges abut and do not overlap -- fixed in #264
+    (is (not (overlaps? ld2 ld3 ld1 ld2)))
     (is (not (overlaps? ld1 ld2 ld3 ld4)))
     (is (not (overlaps? ld1 ld3 ld4 ld5)))))
 
@@ -592,6 +609,12 @@
   (is (= 1 (week-number-of-year (date-time 2012 12 31))))
   (is (= 1 (week-number-of-year (date-time 2013 1 1)))))
 
+(deftest test-week-year
+  (is (= 2015 (week-year (date-time 2016 1 3))))
+  (is (= 2016 (week-year (date-time 2016 1 4))))
+  (is (= 2016 (week-year (date-time 2017 1 1))))
+  (is (= 2017 (week-year (date-time 2017 1 2)))))
+
 (deftest test-number-of-days-in-the-month
   (is (= 31 (number-of-days-in-the-month 2012 1)))
   (is (= 31 (number-of-days-in-the-month (date-time 2012 1 3))))


=====================================
test/clj_time/format_test.clj
=====================================
@@ -135,6 +135,27 @@
     (is (= "2012-02-01 22:15"
            (unparse fmt (date-time 2012 2 1 22 15))))))
 
+(deftest test-parser-with-builtin-time-formatters
+  (let [fmt (formatters :time-no-ms)]
+    (is (= "10:00:20Z" (unparse fmt (parse fmt "10:00:20Z")))))
+
+  (let [fmt (formatters :week-date)]
+    (is (= "2018-W44-2" (unparse fmt (parse fmt "2018-W44-2")))))
+
+  (let [fmt (formatters :time)]
+    (is (= "10:00:20.120Z" (unparse fmt (parse fmt "10:00:20.120Z")))))
+  )
+
+(deftest test-parser-with-builtin-time-formatters-with-zone
+  (let [fmt (with-zone (formatters :time-no-ms) (time-zone-for-offset 2))]
+    (is (= "10:00:20+02:00" (unparse fmt (parse fmt "10:00:20+02:00")))))
+
+  (let [fmt (formatters :week-date-time-no-ms)]
+    (is (= "2018-W44-2T05:09:54Z" (unparse fmt (parse fmt "2018-W44-2T05:09:54Z")))))
+
+  (let [fmt (with-zone (formatters :time) (time-zone-for-offset 2))]
+    (is (= "10:00:20.120+02:00" (unparse fmt (parse fmt "10:00:20.120+02:00"))))))
+
 (deftest test-mysql-format
   (are [expectation mysql] (= (parse mysql) expectation)
        (date-time 2013 1 1 0 0 0) "2013-01-01 00:00:00"


=====================================
test_spec/clj_time/inst_test.clj
=====================================
@@ -0,0 +1,10 @@
+(ns clj-time.inst-test
+  (:refer-clojure :exclude [extend second])
+  (:require [clojure.test :refer :all]
+            [clj-time.core :refer :all])
+  (:import org.joda.time.DateTime))
+
+(deftest test-inst
+  (let [^DateTime n (now)]
+    (is (inst? n))
+    (is (= (inst-ms n) (.getMillis n)))))


=====================================
test_clj_1.9/clj_time/spec_test.clj → test_spec/clj_time/spec_test.clj
=====================================
@@ -1,8 +1,10 @@
 (ns clj-time.spec-test
-  (:require [clojure.test :refer :all]
-            [clojure.spec :as spec]
-            [clojure.spec.gen :as gen]
-            [clj-time.core :refer :all]
+  (:require [clojure.test :refer [deftest is]]
+            [clojure.spec.alpha :as spec]
+            [clojure.spec.gen.alpha :as gen]
+            [clj-time.core :refer [before?
+                                   date-time
+                                   local-date local-date-time]]
             [clj-time.types :as types]
             [clj-time.spec :as ts]))
 



View it on GitLab: https://salsa.debian.org/clojure-team/clj-time-clojure/-/commit/320bf0402dc37166a62075d5582559a22d4bc4ec

-- 
View it on GitLab: https://salsa.debian.org/clojure-team/clj-time-clojure/-/commit/320bf0402dc37166a62075d5582559a22d4bc4ec
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20201217/778cf2fb/attachment.html>


More information about the pkg-java-commits mailing list