fix support exception

fix support exception

--- src/synthesis_crawlers/core.clj
+++ src/synthesis_crawlers/core.clj
@@ -240,12 +240,8 @@
                      :all-attrs ::attributes))
 (defn find-container-node
   [node-attrs all-attrs]
-  (println "node-attrs: " node-attrs)
-  (println "all-attrs " all-attrs)
   (set
     (reduce (fn [acc e]
-              (println "find-container-node " (type acc) ": " acc )
-              (println "find-container-node"(type e) ": " e )
               (let [removed (remove #(reach? % e) acc)]
                 (if-not (seq removed)
                   (conj (filter #(not (reach? % e)) acc) e)
@@ -430,13 +426,12 @@
                                                s-extractors)]
         (let [nodes-in-pages (find-nodes-in-page (:pages (sites site)) new-knowledge)
               reachable-attrs (find-reachable-attrs nodes-in-pages)
-              support-nodes (find-support-nodes nodes-in-pages)
+              support-nodes (count-support-nodes (find-support-nodes nodes-in-pages))
               container-cand-nodes (find-container reachable-attrs
                                                    (find-best-attr-set
                                                      nodes-in-pages))
               container-cand-exprs (generate-container-cand-exprs
-                                     container-cand-nodes support-nodes)
-              ]
+                                     container-cand-nodes support-nodes)]
           (println "!!!" container-cand-exprs)
           )))))


no need to re-implement the wheel

no need to re-implement the wheel

--- src/overtone/algo/chance.clj
+++ src/overtone/algo/chance.clj
@@ -8,7 +8,7 @@
 (defn choose
   "Choose a random element from col."
   [col]
-  (nth col (rand-int (count col))))
+  (rand-nth col))

 (defn choose-n
   "Choose n random elements from col."


Get rid of unused intermediate variable

Get rid of unused intermediate variable

--- src/petulant_life/shader.clj
+++ src/petulant_life/shader.clj
@@ -15,9 +15,9 @@

 ;; Loading a shader and then checking for if it compiled correctly.
 (defn load-shader [path type]
-  (let [shader (load-shader-raw path type)
-        status (GL20/glGetShaderi shader GL20/GL_COMPILE_STATUS)]
-    (if (= status 1)
+  (let [shader (load-shader-raw path type)]
+    (if (= (GL20/glGetShaderi shader GL20/GL_COMPILE_STATUS)
+           1)
       shader
       (print (str "SHADER COMPILER ERROR: " (GL20/glGetShaderInfoLog shader 2048))))))

@@ -53,8 +53,8 @@

 ;; Loading a whole shader program - and then checking if it linked.
 (defn load-shader-program [src-path]
-  (let [shader-program (load-shader-program-raw src-path)
-        status (GL20/glGetProgrami shader-program GL20/GL_LINK_STATUS)]
-    (if (= status 1)
+  (let [shader-program (load-shader-program-raw src-path)]
+    (if (= (GL20/glGetProgrami shader-program GL20/GL_LINK_STATUS)
+           1)
       shader-program
       (print (str "SHADER LINKER ERROR: " (GL20/glGetProgramInfoLog shader-program 2048))))))


comment out debug repl

comment out debug repl

--- src/polismath/simulation.clj
+++ src/polismath/simulation.clj
@@ -4,7 +4,7 @@
             [taoensso.timbre.profiling :as profiling
               :refer (pspy pspy* profile defnp p p*)])
   (:use polismath.utils
-        alex-and-georges.debug-repl
+        ;alex-and-georges.debug-repl
         polismath.named-matrix
         polismath.conversation
         clj-time.coerce
@@ -75,7 +75,7 @@

 (defn pretty-conv [conv]
-  (debug-repl)
+  ;(debug-repl)
   conv)


Refactor gizmo code

Refactor gizmo code

--- frontend/src/faceboard/views/gizmo.cljs
+++ frontend/src/faceboard/views/gizmo.cljs
@@ -7,18 +7,30 @@
             [cuerdas.core :as str]
             [om.core :as om]))

+(def gizmo-frame-left-shift 39)
+(def gizmo-frame-right-shift 11)
+
+(defn toggle-gizmo-when-clicked-gizmo-background [e]
+  (.stopPropagation e)
+  (.preventDefault e)
+  (let [target (.-target e)
+        hit (keyword (.-tagName target))
+        class-name (.-className target)]
+    (if-not (or
+              (hit #{:SELECT :INPUT :TEXTAREA :BUTTON})
+              (str/contains? class-name "no-dismiss"))
+      (perform! :toggle-gizmo))))
+
+(defn toggle-gizmo-when-clicked-pin-point [id position e]
+  (.stopPropagation e)
+  (.preventDefault e)
+  (perform! :toggle-gizmo id position))
+
 (defcomponent gizmo-content-component [data _ _]
   (render [_]
     (let [{:keys [content]} data]
       (dom/div {:class    "gizmo-frame"
-                :on-click (fn [e]
-                            (.stopPropagation e)
-                            (.preventDefault e)
-                            (let [target (.-target e)
-                                  hit (keyword (.-tagName target))
-                                  class-name (.-className target)]
-                              (if-not (or (hit #{:SELECT :INPUT :TEXTAREA :BUTTON}) (str/contains? class-name "no-dismiss"))
-                                (perform! :toggle-gizmo))))}
+                :on-click toggle-gizmo-when-clicked-gizmo-background}
         (dom/div {:class "gizmo-content"} (content))))))

 (defcomponent gizmo-component [data _ _]
@@ -27,28 +39,28 @@
           {:keys [id title content position]} descriptor
           active? (= (:active state) id)
           left? (= position :left)
+          base-icon "reply"
+          icon (if left? (str base-icon " fa-flip-horizontal") base-icon)
           top "50%"
           left (if left? "0%" "100%")
-          px (if active? (if left? -8 4) (if left? -2 0))
+          px (if active? (if left? -8 4) (if left? -2 0))   ; ad-hoc constants to fit our font size and icons
           py (if left? -2 2)
-          base-icon "reply"
-          icon (if left? (str base-icon " fa-flip-horizontal") base-icon)]
+          gizmo-point-style (merge
+                              (css-transform (str "translateX(" px "px)" "translateY(" py "px)"))
+                              {:top top :left left})
+          frame-correction-style {:top   "0px"
+                                  :right (if left? (str gizmo-frame-left-shift "px"))
+                                  :left  (if-not left? (str gizmo-frame-right-shift "px"))}]
       (dom/div {:class "gizmo-point"
-                :style (merge
-                         (css-transform (str "translateX(" px "px)" "translateY(" py "px)"))
-                         {:top top :left left})}
+                :style gizmo-point-style}
         (dom/div {:class "gizmo-wrapper"}
           (if active?
+            ; centering gizmo frame vertically to gizmo point is suprisingly hard, we need two divs
             (dom/div {:class "gizmo-frame-correction"
-                      :style {:top   "0px"
-                              :right (if left? "31px")
-                              :left  (if-not left? "11px")}}
+                      :style frame-correction-style}
               (dom/div {:class "gizmo-frame-placement"}
                 (om/build gizmo-content-component {:content (partial content (:data data))}))))
           (dom/div {:class (str "pin-point" (if active? " active"))}
             (dom/i {:class    (str "fa fa-" icon)
                     :title    title
-                    :on-click (fn [e]
-                                (.stopPropagation e)
-                                (.preventDefault e)
-                                (perform! :toggle-gizmo id position))})))))))+                    :on-click (partial toggle-gizmo-when-clicked-pin-point id position)})))))))


added user member since on dashboard statistics

--- src/cljs/daveconservatoire/site/ui.cljs
+++ src/cljs/daveconservatoire/site/ui.cljs
@@ -10,8 +10,12 @@
             [untangled.client.mutations :as um]
             [untangled.client.impl.data-fetch :as df]
             [cljs.spec :as s]
-            [om.util :as omu]
-            [daveconservatoire.site.ui.listeners :as l]))
+            [daveconservatoire.site.ui.listeners :as l])
+  (:import goog.i18n.DateTimeFormat))
+
+(defn format-time [date format]
+  (-> (DateTimeFormat. format)
+      (.format date)))

 (s/def ::component om/component?)
 (s/def ::button-color #{"yellow" "orange" "redorange" "red"})
@@ -703,12 +707,12 @@
   static om/IQuery
   (query [_]
     [:db/id :db/table :user/name :user/about :user/score :ui/editing-info?
-     :user/lessons-viewed-count :ui/tmp-about
+     :user/lessons-viewed-count :user/created-at :ui/tmp-about
      {:user/user-views (om/get-query ProfileRecentActivity)}])

   Object
   (render [this]
-    (let [{:user/keys [name about user-views score lessons-viewed-count]
+    (let [{:user/keys [name about user-views score lessons-viewed-count created-at]
            :ui/keys   [editing-info?]} (om/props this)]
       (dom/div #js {:className "span10"}
         (dom/div #js {:className "row"}
@@ -748,10 +752,10 @@
                     (dom/td #js {:className "pull-right"} lessons-viewed-count))
                   (dom/tr nil
                     (dom/td nil "Exercises Answered:")
-                    (dom/td #js {:className "pull-right"} "1854"))
+                    (dom/td #js {:className "pull-right"} "XXX"))
                   (dom/tr nil
                     (dom/td nil "Member Since:")
-                    (dom/td #js {:className "pull-right"} "July 25th 2015"))))))
+                    (dom/td #js {:className "pull-right"} (format-time (js/Date. (* 1000 created-at)) "MMMM dd yyyy")))))))
           (dom/div #js {:className "span5 whiteback"}
             (dom/div #js {:className "padding"}
               (dom/h3 nil "Recent Activity")


CMR-343: corrected cloud-cover as optional element behavior

--- src/cmr/umm/test/generators/granule.clj
+++ src/cmr/umm/test/generators/granule.clj
@@ -28,13 +28,15 @@
   (ext-gen/model-gen g/->ProductSpecificAttributeRef psa/names (gen/vector psa/string-values 1 3)))

-
 (def data-granules
   (ext-gen/model-gen
     g/map->DataGranule
     (gen/hash-map :producer-gran-id (ext-gen/optional (ext-gen/string-ascii 1 128))
                   :day-night (gen/elements ["DAY" "NIGHT" "BOTH" "UNSPECIFIED"])
                   :production-date-time ext-gen/date-time)))
+
+(def cloud-cover-elems
+  (ext-gen/optional  (gen/frequency [[7 (ext-gen/choose-double 0.0 100.0)] [3 (ext-gen/choose-double 0.0 1.0)]])))

 (def granules
   (ext-gen/model-gen
@@ -47,8 +49,7 @@
       :orbit-calculated-spatial-domains (ext-gen/nil-if-empty (gen/vector ocsd/orbit-calculated-spatial-domains 0 5))
       :project-refs (ext-gen/nil-if-empty proj-refs)
       :product-specific-attributes (ext-gen/nil-if-empty (gen/vector product-specific-attribute-refs 0 5))
-      ;; TODO - cloud-cover needs to be optional - merge function not working. Empty CloudCover fails validation.
-      :cloud-cover (gen/frequency [[7 (ext-gen/choose-double 0.0 100.0)] [3 (ext-gen/choose-double 0.0 1.0)]]))))
+      :cloud-cover cloud-cover-elems)))

 ;; Generator that only returns collection ref with entry-title
 ;; DEPRECATED - this will go away in the future. Don't use it.


Fix lock up when clicking open in file browser

--- src/net/sekao/nightcode/controller.clj
+++ src/net/sekao/nightcode/controller.clj
@@ -370,7 +370,10 @@

 (defn open-in-file-browser! [^Scene scene]
   (when-let [path (:selection @pref-state)]
-    (.open (Desktop/getDesktop) (io/file path))))
+    (javax.swing.SwingUtilities/invokeLater
+      (fn []
+        (when (Desktop/isDesktopSupported)
+          (.open (Desktop/getDesktop) (io/file path)))))))

 (defn -onOpenInFileBrowser [this ^ActionEvent event]
   (-> event .getSource .getScene open-in-file-browser!))


optimize get-all players and matches db access

from ~1 second for 377 matches to ~40ms

--- src/foosball/models/domains/matches.clj
+++ src/foosball/models/domains/matches.clj
@@ -19,48 +19,38 @@
                      {:db/id match-id :match/reported-by reported-by}]]
     (d/transact conn transaction)))

-(defn- get-player [dbc id]
-  (->> (d/q '[:find ?player :in $ ?id :where [?id :player/name ?player]] dbc id)
-       ffirst))
-
-(defn- get-team [dbc id]
-  (->> (d/q '[:find ?p1 ?p2 ?score
-              :in $ ?id :where
-              [?id :team/player1 ?p1]
-              [?id :team/player2 ?p2]
-              [?id :team/score ?score]] dbc id)
-       (map (fn [[p1 p2 score]] {:player1 (get-player dbc p1)
-                                :player2 (get-player dbc p2)
-                                :score score}))
-       first))
-
-(defn- get-reported-by [dbc matchid]
-  (->> (d/q '[:find ?n ?pid
-              :in $ ?matchid
-              :where
-              [?matchid :match/reported-by ?pid]
-              [?pid     :player/name       ?n]] dbc matchid)
-       (map (fn [[name id]] name))
-       first))
-
 (defn get-all [dbc]
-  (->> (d/q '[:find ?m ?mt ?t1 ?t2 ?tx
+  (->> (d/q '[:find ?m ?mt
+              ?t1id ?t1p1 ?t1p2 ?t1score
+              ?t2id ?t2p1 ?t2p2 ?t2score
+              ?tx
               :in $
               :where
               [?m :match/time  ?mt ?tx]
-              [?m :match/team1 ?t1]
-              [?m :match/team2 ?t2]
-              [?t1 :team/player1 _]
-              [?t1 :team/player2 _]
-              [?t1 :team/score   _]
-              [?t2 :team/player1 _]
-              [?t2 :team/player2 _]
-              [?t2 :team/score   _]] dbc)
-       (map (fn [[mid mt t1 t2 tx]]
-              {:id mid :matchdate mt :tx tx
-               :team1 (merge {:id t1} (get-team dbc t1))
-               :team2 (merge {:id t2} (get-team dbc t2))
-               :reported-by (get-reported-by dbc mid)}))
+              [?m :match/team1 ?t1id]
+              [?m :match/team2 ?t2id]
+
+              [?t1id :team/player1 ?t1p1id]
+              [?t1p1id :player/name ?t1p1]
+              [?t1id :team/player2 ?t1p2id]
+              [?t1p2id :player/name ?t1p2]
+              [?t1id :team/score   ?t1score]
+
+              [?t2id :team/player1 ?t2p1id]
+              [?t2p1id :player/name ?t2p1]
+              [?t2id :team/player2 ?t2p2id]
+              [?t2p2id :player/name ?t2p2]
+              [?t2id :team/score   ?t2score]] dbc)
+       (map (fn [[mid mt
+                 t1id t1p1 t1p2 t1score
+                 t2id t2p1 t2p2 t2score
+                 tx]]
+              (let [match (d/entity dbc mid)
+                    reporter (d/entity dbc (get-in match [:match/reported-by :db/id] ))]
+                {:id mid :matchdate mt :tx tx
+                 :team1 {:id t1id :player1 t1p1 :player2 t1p2 :score t1score}
+                 :team2 {:id t2id :player1 t2p1 :player2 t2p2 :score t2score}
+                 :reported-by (:player/name reporter)})))
        (sort-by (juxt :matchdate :tx))))

 (defn delete! [conn id]


Add the digest link to the org representation in the entry-point response so digest service can do 1 less request for every user.

--- src/oc/storage/representations/org.clj
+++ src/oc/storage/representations/org.clj
@@ -73,9 +73,6 @@
 (defn- remove-author-link [org user-id]
   (hateoas/remove-link (org-urls/org-author org user-id)))

-(defn- org-collection-links [org]
-  (assoc org :links [(item-link org)]))
-
 (defn- replies-link [org]
   (hateoas/link-map "replies" hateoas/GET (org-urls/replies org) {:accept mt/entry-collection-media-type}))

@@ -108,6 +105,17 @@
 (defn- digest-partial-link [org]
   (hateoas/link-map "digest" hateoas/GET (str (org-urls/digest org) "?direction=after&start=$0") {:accept mt/entry-collection-media-type}
    {:replace {:start "$0"}}))
+
+(defn- org-collection-links
+  ([org] (org-collection-links org nil))
+  ([org user]
+   (assoc org :links (cond-> []
+                       ;; All orgs get the item link
+                       true
+                       (conj (item-link org))
+                       ;; Only if user is member add the digest link
+                       (and user
+                            ((set (:teams user)) (:team-id org))) (conj (digest-partial-link org))))))

 (defn- partial-secure-link []
   (hateoas/link-map "partial-secure" hateoas/GET (entry-urls/secure-entry "$0" "$1") {:accept mt/entry-media-type}
@@ -305,5 +313,5 @@
       {:collection {:version hateoas/json-collection-version
                     :href "/"
                     :links full-links
-                    :items (map org-collection-links with-premium-filter)}}
+                    :items (map #(org-collection-links % user) with-premium-filter)}}
       {:pretty config/pretty?})))


fix test

fix test

--- test/babel/test/fr.clj
+++ test/babel/test/fr.clj
@@ -163,7 +163,7 @@
     (is (= (fo result) "nous sommes allées"))))

 (deftest reflexive
-  (let [result (over (vals rules)
+  (let [result (over (get rules :s-present-phrasal)
                      "je"
                      (over (get rules :vp-pronoun-nonphrasal)
                            "me" "se amuser"))]


test fix

test fix

--- src/metabase/driver/query_processor.clj
+++ src/metabase/driver/query_processor.clj
@@ -158,7 +158,8 @@
    This is done so various implementations can cast date values appropriately by simply checking their types.
    In the future when drivers are re-worked to deal with the Expanded Query directly this step will no longer be needed."
   [query]
-  (assoc query :filter (some-> *expanded-query* :query :filter expand/collapse))) ; collapse the filter clause from the expanded query and use that as the replacement
+  (cond-> query
+    (:filter query) (assoc  :filter (some-> *expanded-query* :query :filter expand/collapse)))) ; collapse the filter clause from the expanded query and use that as the replacement

 ;; ### PREPROCESS-CUMULATIVE-SUM


[#244 #245] Message queue: make new API backwards compatible

--- src/taoensso/carmine/message_queue.clj
+++ src/taoensso/carmine/message_queue.clj
@@ -99,27 +99,41 @@
           {:now         (enc/now-udt)
            :mid         mid})))))

-(def enqueue
-  "Pushes given message (any Clojure datatype) to named queue and returns unique
-  message id or {:carmine.mq/error <message-status>}. Options:
-    * unique-message-id  - Specify an explicit message id (e.g. message hash) to
-                           perform a de-duplication check. If unspecified, a
-                           unique id will be auto-generated.
-    * allow-requeue?     - When true, allow buffered escrow-requeue for a
-                           message in the :locked or :done-with-backoff state.
-    * initial-backoff-ms - Initial backoff in millis."
-  (let [script (enc/have (enc/slurp-resource "taoensso/carmine/lua/mq/enqueue.lua"))]
-    (fn [qname message & [{:keys [unique-message-id allow-requeue? initial-backoff-ms]}]]
+(let [script_ (delay (enc/have (enc/slurp-resource "taoensso/carmine/lua/mq/enqueue.lua")))]
+  (defn enqueue
+    "Pushes given message (any Clojure datatype) to named queue and returns unique
+     message id or {:carmine.mq/error <message-status>}. Options:
+       * unique-message-id  - Specify an explicit message id (e.g. message hash) to
+                              perform a de-duplication check. If unspecified, a
+                              unique id will be auto-generated.
+       * allow-requeue?     - When true, allow buffered escrow-requeue for a
+                              message in the :locked or :done-with-backoff state.
+       * initial-backoff-ms - Initial backoff in millis."
+
+    ;; Note some gymnastics here for backwards-compatible API change:
+    ;; [a b & [c d]] -> [a b ?{:keys [c d]}]
+    {:arglists
+     '([qname message]
+       [qname message {:keys [unique-message-id allow-requeue? initial-backoff-ms]}])}
+
+    [qname message & more]
+    (let [{:keys [unique-message-id allow-requeue? initial-backoff-ms]}
+          (when-let [[m1 m2] more]
+            (if (map? m1)
+              m1 ; Common case (new API)
+              {:unique-message-id  m1
+               :allow-requeue?     m2}))]
+
       (car/parse
         #(if (vector? %) (get % 0) {:carmine.mq/error (keyword %)})
-        (car/lua script
-          {:qk-messages        (qkey qname :messages)
-           :qk-locks           (qkey qname :locks)
-           :qk-backoffs        (qkey qname :backoffs)
-           :qk-nattempts       (qkey qname :nattempts)
-           :qk-mid-circle      (qkey qname :mid-circle)
-           :qk-done            (qkey qname :done)
-           :qk-requeue         (qkey qname :requeue)}
+        (car/lua @script_
+          {:qk-messages   (qkey qname :messages)
+           :qk-locks      (qkey qname :locks)
+           :qk-backoffs   (qkey qname :backoffs)
+           :qk-nattempts  (qkey qname :nattempts)
+           :qk-mid-circle (qkey qname :mid-circle)
+           :qk-done       (qkey qname :done)
+           :qk-requeue    (qkey qname :requeue)}
           {:now                (enc/now-udt)
            :mid                (or unique-message-id (enc/uuid-str))
            :mcontent           (car/freeze message)


Fix error with dinamic paths to images (remake to static)

--- src/teach_by_friends/shared/icons.cljs
+++ src/teach_by_friends/shared/icons.cljs
@@ -1,15 +1,19 @@
 (ns teach-by-friends.shared.icons)

-(defn import-icon [name]
-  (js/require (str "./images/" name ".png")))
+(def back (js/require "./images/back.png"))
+(def close (js/require "./images/close.png"))
+(def episodes (js/require "./images/episodes.png"))
+(def favorites (js/require "./images/favorites.png"))
+(def information (js/require "./images/information.png"))
+(def words (js/require "./images/words_active.png"))

 (def ^:private icons
-  {:back (import-icon "back")
-   :close (import-icon "close")
-   :episodes (import-icon "episodes")
-   :favorites (import-icon "favorites")
-   :information (import-icon "information")
-   :words (import-icon "words_active")})
+  {:back back
+   :close close
+   :episodes episodes
+   :favorites favorites
+   :information information
+   :words words})

 (defn get-icon [icon]
   (get icons icon))


SER-532 If image-review responds with anything else than 403, then create async response

--- src/vignette/storage/static_assets.clj
+++ src/vignette/storage/static_assets.clj
@@ -24,7 +24,7 @@

 (defn create-async-response-stored-object [static-image-get image-review-get]
   (let [static-image-response @static-image-get]
-    (if (and (-> static-image-response :status (= 200)) (some #(= % (:status @image-review-get)) [200 404]))
+    (if (and (-> static-image-response :status (= 200)) (some #(not (= % (:status @image-review-get))) [403]))
       (->AsyncResponseStoredObject static-image-response))))

 (defrecord StaticImageStorage [static-image-url image-review-url] ImageStorageProtocol


Fix config path for campfire adapter

Fix config path for campfire adapter

--- src/yetibot/core/adapters/campfire.clj
+++ src/yetibot/core/adapters/campfire.clj
@@ -8,13 +8,13 @@
     [yetibot.core.models.users :as users]
     [clojure.string :as s]
     [clojure.stacktrace :as st]
-    [yetibot.core.config :refer [config-for-ns conf-valid?]]
+    [yetibot.core.config :refer [get-config conf-valid?]]
     [yetibot.core.util.http :as http]
     [yetibot.core.util.format :as fmt]
     [clj-campfire.core :as cf]))

 ; Settings
-(def config (config-for-ns))
+(def config (get-config :yetibot :adapters :campfire))

 (def room-id (:room-id config))


core: dotimes

core: dotimes

--- data/core.clj
+++ data/core.clj
@@ -1319,22 +1319,6 @@
          :added "1.0"}
   not-any? (comp not some))

-;will be redefed later with arg checks
-(defmacro dotimes
-  "bindings => name n
-
-  Repeatedly executes body (presumably for side-effects) with name
-  bound to integers from 0 through n-1."
-  {:added "1.0"}
-  [bindings & body]
-  (let [i (first bindings)
-        n (second bindings)]
-    `(let [n# (int* ~n)]
-       (loop [~i 0]
-         (when (< ~i n#)
-           ~@body
-           (recur (inc ~i)))))))
-
 (defn map
   "Returns a lazy sequence consisting of the result of applying f to the
   set of first items of each coll, followed by applying f to the set
@@ -1642,6 +1626,7 @@
   "Repeatedly executes body (presumably for side-effects) with
   bindings and filtering as provided by \"for\".  Does not retain
   the head of the sequence. Returns nil."
+  {:added "1.0"}
   [seq-exprs & body]
   (assert-args
    (vector? seq-exprs) "a vector for its binding"
@@ -1672,3 +1657,21 @@
                                         ~subform
                                         ~@(when needrec [recform]))))]))))]
     (nth (step nil (seq seq-exprs)) 1)))
+
+(defmacro dotimes
+  "bindings => name n
+
+  Repeatedly executes body (presumably for side-effects) with name
+  bound to integers from 0 through n-1."
+  {:added "1.0"}
+  [bindings & body]
+  (assert-args
+   (vector? bindings) "a vector for its binding"
+   (= 2 (count bindings)) "exactly 2 forms in binding vector")
+  (let [i (first bindings)
+        n (second bindings)]
+    `(let [n# (int* ~n)]
+       (loop [~i 0]
+         (when (< ~i n#)
+           ~@body
+           (recur (inc ~i)))))))


Removing context-for-clop

Removing context-for-clop

and moving it to the paper instead.

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

--- stuff/code/context-for-clop.clj
+++ stuff/code/context-for-clop.clj
@@ -1,121 +0,0 @@
-;; -*- clojure -*-
-
-(use 'conexp.main)
-
-;;
-
-(defn context-for-clop-v0
-  "Computes context for clop the naive way."
-  [c M]
-  (let [K (make-context (all-closed-sets M c)
-                        M
-                        #(contains? %1 %2))]
-    (reduce-objects K)))
-
-;;
-
-(defn context-for-clop-v1
-  "Computes context for clop with AE."
-  [c M]
-  (let [K (:context
-           (explore-attributes (make-context [] M [])
-                               :handler (fn [_ _ impl]
-                                          (let [A (premise impl),
-                                                B (conclusion impl),
-                                                cA (c A)]
-                                            (if (subset? B cA)
-                                              nil
-                                              [[(gensym), cA]])))))]
-    (reduce-objects K)))
-
-;;
-
-(defn maximal-counterexample
-  [c M B C m]
-  (loop [C C,
-         elts (difference (disj M m) C)]
-    (if (empty? elts)
-      C
-      (let [n (first elts),
-            new-C (c (conj C n))]
-        (if (contains? new-C m)
-          (recur C (rest elts))
-          (recur new-C (rest elts)))))))
-
-(defn context-for-clop-v2
-  "Computes context for clop with AE and maximal counterexamples."
-  [c M]
-  (:context
-   (explore-attributes (make-context #{} M #{})
-                       :handler (fn [_ _ impl]
-                                  (let [A (premise impl),
-                                        B (conclusion impl),
-                                        C (c A)]
-                                    (when-not (subset? B C)
-                                      [[(gensym),
-                                        (maximal-counterexample c M B C
-                                                                (first (difference B C)))]]))))))
-
-;;
-
-(defn context-for-clop-v3
-  "Computes context for clop with AE and multiple maximal
-  counterexamples."
-  [c M]
-  (:context
-   (explore-attributes (make-context #{} M #{})
-                       :handler (fn [_ _ impl]
-                                  (let [A (premise impl),
-                                        B (conclusion impl),
-                                        C (c A)]
-                                    (when-not (subset? B C)
-                                      (map #(vector (gensym) %)
-                                           (distinct
-                                            (map #(maximal-counterexample c M B C %)
-                                                 (difference B C))))))))))
-
-;;; Testing
-
-(use 'clojure.pprint)
-
-(defmacro time* [& body]
-  `(let [start# (System/currentTimeMillis)]
-     ~@body
-     (/ (- (System/currentTimeMillis)
-           start#)
-        1000.0)))
-
-(defn test-context-for-clop-versions [number-of-contexts size-of-base-set]
-  (doseq [ctx  (take number-of-contexts
-                     (remove #(or (empty? (objects %))
-                                  (empty? (attributes %)))
-                             (repeatedly #(reduce-context
-                                           (rand-context (rand-int (expt 2 size-of-base-set))
-                                                         size-of-base-set
-                                                         (rand 1.0))))))]
-    (let [cntr   (atom 0)
-          clop   #(do (swap! cntr inc)
-                      (context-attribute-closure ctx %)),
-          M      (attributes ctx),
-          reset! (fn [atom]
-                   (let [val @atom]
-                     (reset! atom 0)
-                     val))]
-      (cl-format *out*
-                 "~5d ~5d ~5d ~5d ~8,3f ~5d ~8,3f ~5d ~8,3f ~5d ~8,3f ~5d~%"
-                 (count (objects ctx))
-                 (count (attributes ctx))
-                 (count (concepts ctx))
-                 (count (pseudo-intents ctx))
-                 (time* (context-for-clop-v0 clop M))
-                 (reset! cntr)
-                 (time* (context-for-clop-v1 clop M))
-                 (reset! cntr)
-                 (time* (context-for-clop-v2 clop M))
-                 (reset! cntr)
-                 (time* (context-for-clop-v3 clop M))
-                 (reset! cntr)))))
-
-;;
-
-nil


Test for function create-jobs-in-queue-response

--- test/emender_jenkins/rest_api_test.clj
+++ test/emender_jenkins/rest_api_test.clj
@@ -11,9 +11,10 @@
 ;

 (ns emender-jenkins.rest-api-test
-  (:require [clojure.test :refer :all]
-            [emender-jenkins.rest-api :refer :all]
-            [emender-jenkins.results  :as results]
+  (:require [clojure.test                :refer :all]
+            [clojure.data.json           :as json]
+            [emender-jenkins.rest-api    :refer :all]
+            [emender-jenkins.results     :as results]
             [clj-jenkins-api.jenkins-api :as jenkins-api]))

 ;
@@ -768,3 +769,13 @@
     (with-redefs [jenkins-api/get-command (fn [url] nil)]
         (is (= (read-queue-info-from-jenkins "url") nil)))))

+(deftest test-create-jobs-in-queue-response
+    "Check the function emender-jenkins.rest-api/create-jobs-in-queue-response."
+    (testing "the function emender-jenkins.rest-api/create-jobs-in-queue-response."
+        (let [items (-> (json/read-str jobs-in-queue-jenkins-response) (get "items"))]
+            (is (= (create-jobs-in-queue-response items)
+                   [{"queuePos" 1
+                     "jobName" "test-Example_Documentation-1.0-Guide-en-US (preview)"}
+                     {"queuePos" 2
+                      "jobName" "test-Example_Documentation-1.0-Guide-en-US (stage)  "}])))))
+


added function to dynamically require the appropriate backend based on the string returned by (System/getProperty "os.name")

--- src/main/clojure/com/contentjon/core.clj
+++ src/main/clojure/com/contentjon/core.clj
@@ -1,2 +1,12 @@
 (ns com.contentjon.core)

+(def implementations
+ { :Linux 'com.contentjon.udev })
+
+(defn require-os-implementation []
+  (let [os (System/getProperty "os.name")]
+    (if-let [implementation (implementations (keyword os))]
+      (require implementation)
+      (throw
+       (Exception.
+        (str "No implementation for operating system: " os))))))


HTML escaping: construct the StringBuilder with the length of string as initial capacity to avoid resizing (#192)

--- src/selmer/filter_parser.clj
+++ src/selmer/filter_parser.clj
@@ -23,8 +23,8 @@
   ;; This method is "Java in Clojure" for serious speedups.
   ;; Stolen from davidsantiago/quoin and modified.
   (if *escape-variables*
-    (let [sb (StringBuilder.)
-          slength (count s)]
+    (let [slength (count s)
+          sb (StringBuilder. slength)]
       (loop [idx 0]
         (if (>= idx slength)
           (.toString sb)


comment unused code

comment unused code

makes circleCI fail

--- test/nha/boot_uglify/uglifyjs_test.clj
+++ test/nha/boot_uglify/uglifyjs_test.clj
@@ -40,11 +40,11 @@
     (catch java.io.IOException e
       nil)))

-(def uglify-exec (or (maybe-exec "./node_modules/uglifyjs/bin")
-                     (maybe-exec "uglifyjs")))
+;; (def uglify-exec (or (maybe-exec "./node_modules/uglifyjs/bin")
+;;                      (maybe-exec "uglifyjs")))

-(when-not uglify-exec
-  (throw (Exception. "No uglify implementation available")))
+;; (when-not uglify-exec
+;;   (throw (Exception. "No uglify implementation available")))

 (defn clean-output
   "Remove file. If file is a directory, empty it from its contents"


Refactor tests so expected result comes before actual result; use tabular 'are' function for refresh rate tests

--- test/build_mon/test/core.clj
+++ test/build_mon/test/core.clj
@@ -2,37 +2,38 @@
   (:require [clojure.test :refer :all]
             [build-mon.core :as c]))

-(def succeeded-build {:result "succeeded"})
+(def succeeded-build   {:result "succeeded"})
 (def in-progress-build {:result nil :status "inProgress"})
-(def failed-build {:result "failed"})
+(def failed-build      {:result "failed"})

 (deftest determine-background-colour
-  (is (= (c/determine-background-colour succeeded-build :anything) "green"))
-  (is (= (c/determine-background-colour failed-build :anything) "red"))
-  (is (= (c/determine-background-colour in-progress-build succeeded-build) "yellow"))
-  (is (= (c/determine-background-colour in-progress-build failed-build) "orange")))
+  (is (=  "green"  (c/determine-background-colour succeeded-build :anything)))
+  (is (=  "red"    (c/determine-background-colour failed-build :anything)))
+  (is (=  "yellow" (c/determine-background-colour in-progress-build succeeded-build)))
+  (is (=  "orange" (c/determine-background-colour in-progress-build failed-build))))

 (deftest determine-status-text
-  (is (= (c/determine-status-text succeeded-build) "succeeded"))
-  (is (= (c/determine-status-text failed-build) "failed"))
-  (is (= (c/determine-status-text in-progress-build) "inProgress")))
+  (is (= "succeeded"  (c/determine-status-text succeeded-build)))
+  (is (= "failed"     (c/determine-status-text failed-build)))
+  (is (= "inProgress" (c/determine-status-text in-progress-build))))

 (deftest determine-build-author
-  (is (= (c/determine-build-author {:requestedFor {:displayName "Bob"}}) "Bob"))
-  (is (= (c/determine-build-author {}) "N/A")))
+  (is (= "Bob" (c/determine-build-author {:requestedFor {:displayName "Bob"}})))
+  (is (= "N/A" (c/determine-build-author {}))))

 (deftest determine-text
   (let [build {:buildNumber "123"
                :result "succeeded"
                :requestedFor {:displayName "Bob"}}]
-  (is (= (c/determine-text build) "123 – Bob – succeeded"))))
+  (is (= "123 – Bob – succeeded" (c/determine-text build)))))

 (deftest determine-refresh-rate
   (let [default-rate 20]
-    (is (= (c/determine-refresh-rate {}) default-rate))
-    (is (= (c/determine-refresh-rate {"refresh" "true"}) default-rate))
-    (is (= (c/determine-refresh-rate {"refresh" "yes"}) default-rate))
-    (is (= (c/determine-refresh-rate {"refresh" "false"}) nil))
-    (is (= (c/determine-refresh-rate {"refresh" "no"}) nil))
-    (is (= (c/determine-refresh-rate {"refresh" "30"}) 30))
-    (is (= (c/determine-refresh-rate {"refresh" "rubbish"}) nil))))
+    (are [params               expected] (= expected (c/determine-refresh-rate params))
+         {}                    default-rate
+         {"refresh" "true"}    default-rate
+         {"refresh" "yes"}     default-rate
+         {"refresh" "30"}      30
+         {"refresh" "false"}   nil
+         {"refresh" "no"}      nil
+         {"refresh" "rubbish"} nil)))


outlining a few tests

outlining a few tests

--- test/cartagena/core_test.clj
+++ test/cartagena/core_test.clj
@@ -10,3 +10,26 @@
         (is (= 6 (count (filter #(= icon %) board)))))))
   (testing "Boards are not exactly alike"
     (is (not (= (initialize-board) (initialize-board))))))
+
+(deftest shuffle-cards-test
+  (testing "Returns a random collection of N cards"))
+
+(deftest initialize-player-test
+  (testing "Returns a player data structure full of initial state data")
+  (testing "Each player should have six pirates")
+  (testing "Each player should have six cards"))
+
+(deftest new-game-test
+  (testing "Player count should be equal to the number to which it was initialized")
+  (testing "All players should be in jail")
+  (testing "Active player should be player 1"))
+
+(deftest player-move-test
+  (testing "Player can play card and move pieces")
+  (testing "Player can move backward and receives cards")
+  (testing "Player without cards must move backward")
+  (testing "Player with no available spaces behind cannot move backward")
+  (testing "Player with pirate on ship can move that pirate backward"))
+
+(deftest game-over-test
+  (testing "Game ends when a player has all pirates on the ship"))


Load up Flow test with more test cases.

Load up Flow test with more test cases.

--- test/onyx/peer/flow_test.clj
+++ test/onyx/peer/flow_test.clj
@@ -32,83 +32,304 @@
    :hornetq.udp/discovery-timeout (:discovery-timeout (:hornetq config))
    :zookeeper/address (:address (:zookeeper config))
    :onyx/id id
-   :onyx.peer/inbox-capacity (:inbox-capacity (:peer config))
-   :onyx.peer/outbox-capacity (:outbox-capacity (:peer config))
-   :onyx.peer/join-failure-back-off 500
    :onyx.peer/job-scheduler :onyx.job-scheduler/greedy})

 (def env (onyx.api/start-env env-config))

-(def n-messages 100)
-
 (def batch-size 10)

 (def echo 1000)

-(def in-queue (str (java.util.UUID/randomUUID)))
-
-(def out-queue (str (java.util.UUID/randomUUID)))
+(def people-in-queue (str (java.util.UUID/randomUUID)))
+
+(def colors-in-queue (str (java.util.UUID/randomUUID)))
+
+(def children-out-queue (str (java.util.UUID/randomUUID)))
+
+(def adults-out-queue (str (java.util.UUID/randomUUID)))
+
+(def athletes-wa-out-queue (str (java.util.UUID/randomUUID)))
+
+(def everyone-out-queue (str (java.util.UUID/randomUUID)))
+
+(def red-out-queue (str (java.util.UUID/randomUUID)))
+
+(def blue-out-queue (str (java.util.UUID/randomUUID)))
+
+(def green-out-queue (str (java.util.UUID/randomUUID)))

 (def hq-config {"host" (:host (:non-clustered (:hornetq config)))
                 "port" (:port (:non-clustered (:hornetq config)))})

-(hq-util/create-queue! hq-config in-queue)
-(hq-util/create-queue! hq-config out-queue)
-
-(hq-util/write-and-cap! hq-config in-queue (map (fn [x] {:n x}) (range n-messages)) echo)
+(hq-util/create-queue! hq-config people-in-queue)
+(hq-util/create-queue! hq-config colors-in-queue)
+(hq-util/create-queue! hq-config children-out-queue)
+(hq-util/create-queue! hq-config adults-out-queue)
+(hq-util/create-queue! hq-config athletes-wa-out-queue)
+(hq-util/create-queue! hq-config everyone-out-queue)
+(hq-util/create-queue! hq-config red-out-queue)
+(hq-util/create-queue! hq-config blue-out-queue)
+(hq-util/create-queue! hq-config green-out-queue)
+
+(hq-util/write-and-cap!
+ hq-config people-in-queue
+ [{:age 24 :job "athlete" :location "Washington"}
+  {:age 17 :job "programmer" :location "Washington"}
+  {:age 18 :job "mechanic" :location "Vermont"}
+  {:age 13 :job "student" :location "Maine"}
+  {:age 42 :job "doctor" :location "Florida"}
+  {:age 64 :job "athlete" :location "Pennsylvania"}
+  {:age 35 :job "bus driver" :location "Texas"}
+  {:age 50 :job "lawyer" :location "California"}
+  {:age 25 :job "psychologist" :location "Washington"}]
+ echo)
+
+(hq-util/write-and-cap!
+ hq-config colors-in-queue
+ [{:color "red"}
+  {:color "blue"}
+  {:color "white"}
+  {:color "green"}
+  {:color "orange"}
+  {:color "black"}
+  {:color "purple"}
+  {:color "cyan"}
+  {:color "yellow"}]
+ echo)

 (defn my-inc [{:keys [n] :as segment}]
   (assoc segment :n (inc n) :extra-key :blah))

 (def catalog
-  [{:onyx/name :in
+  [{:onyx/name :people-in
     :onyx/ident :hornetq/read-segments
     :onyx/type :input
     :onyx/medium :hornetq
     :onyx/consumption :concurrent
-    :hornetq/queue-name in-queue
-    :hornetq/host (:host (:non-clustered (:hornetq config)))
-    :hornetq/port (:port (:non-clustered (:hornetq config)))
-    :onyx/batch-size batch-size}
-
-   {:onyx/name :inc
-    :onyx/fn :onyx.peer.flow-test/my-inc
-    :onyx/type :function
-    :onyx/consumption :concurrent
-    :onyx/batch-size batch-size}
-
-   {:onyx/name :out
-    :onyx/ident :hornetq/write-segments
-    :onyx/type :output
-    :onyx/medium :hornetq
-    :onyx/consumption :concurrent
-    :hornetq/queue-name out-queue
-    :hornetq/host (:host (:non-clustered (:hornetq config)))
-    :hornetq/port (:port (:non-clustered (:hornetq config)))
-    :onyx/batch-size batch-size}])
+    :hornetq/queue-name people-in-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :colors-in
+    :onyx/ident :hornetq/read-segments
+    :onyx/type :input
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name colors-in-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-children
+    :onyx/fn :onyx.peer.flow-test/process-children
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-adults
+    :onyx/fn :onyx.peer.flow-test/process-adults
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-athletes-in-washington
+    :onyx/fn :onyx.peer.flow-test/process-athletes-in-washington
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-everyone
+    :onyx/fn :onyx.peer.flow-test/process-everyone
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-red
+    :onyx/fn :onyx.peer.flow-test/process-red
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-blue
+    :onyx/fn :onyx.peer.flow-test/process-blue
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :process-blue
+    :onyx/fn :onyx.peer.flow-test/process-green
+    :onyx/type :function
+    :onyx/consumption :concurrent
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :children-out
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name children-out-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :adults-out
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name adults-out-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :athletes-wa-out
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name athletes-wa-out-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :everyone-out
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name everyone-out-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :red-out
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name red-out-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}
+
+   {:onyx/name :blue-out
+    :onyx/ident :hornetq/write-segments
+    :onyx/type :output
+    :onyx/medium :hornetq
+    :onyx/consumption :concurrent
+    :hornetq/queue-name blue-out-queue
+    :hornetq/host (:host (:non-clustered (:hornetq config)))
+    :hornetq/port (:port (:non-clustered (:hornetq config)))
+    :onyx/batch-size batch-size}]
+
+  {:onyx/name :green-out
+   :onyx/ident :hornetq/write-segments
+   :onyx/type :output
+   :onyx/medium :hornetq
+   :onyx/consumption :concurrent
+   :hornetq/queue-name green-out-queue
+   :hornetq/host (:host (:non-clustered (:hornetq config)))
+   :hornetq/port (:port (:non-clustered (:hornetq config)))
+   :onyx/batch-size batch-size})

 (def workflow
-  [[:in :inc]
-   [:inc :out]])
+  [[:people-in :process-children]
+   [:people-in :process-adults]
+   [:people-in :process-athletes-in-washington]
+   [:people-in :process-everyone]
+
+   [:colors-in :process-red]
+   [:colors-in :process-blue]
+   [:colors-in :process-green]
+
+   [:process-children :children-out]
+   [:process-adults :adults-out]
+   [:process-athletes-in-washington :athletes-wa-out]
+   [:process-everyone :everyone-out]
+
+   [:process-red :red-out]
+   [:process-blue :blue-out]
+   [:process-green :green-out]])

 (def flow-conditions
   [{:flow/from :in
-    :flow/to [:inc]
-    :my/param 10
-    :flow/predicate [:and
-                     :onyx.peer.flow-test/segment-even?
-                     [:onyx.peer.flow-test/gt? :my/param]]
-    :flow/doc "Emits segments to :inc if the segment's :n key is an even number."}
-   {:flow/from :inc
-    :flow/to [:out]
-    :flow/exclude-keys [:extra-key]
-    :flow/predicate :onyx.peer.flow-test/constantly-true}])
-
-(defn segment-even? [event {:keys [n]}]
-  (even? n))
-
-(defn gt? [event {:keys [n]} my-param]
-  (> n my-param))
+    :flow/to [:process-children]
+    :child/age 17
+    :flow/predicate [:onyx.peer.flow-test/child? :child/age]}
+
+   {:flow/from :in
+    :flow/to [:process-adults]
+    :flow/predicate :onyx.peer.flow-test/adult?}
+
+   {:flow/from :in
+    :flow/to [:process-athletes-in-washington]
+    :flow/predicate [:and :onyx.peer.flow-test/athlete? :onyx.peer.flow-test/washington-resident?]}
+
+   {:flow/from :in
+    :flow/to [:process-everyone]
+    :flow/predicate :onyx.peer.flow-test/constantly-true}
+
+   {:flow/from :colors-in
+    :flow/to :all
+    :flow/short-circuit? true
+    :flow/predicate :onyx.peer.flow-test/white?}
+
+   {:flow/from :colors-in
+    :flow/to :none
+    :flow/short-circuit? true
+    :flow/predicate :onyx.peer.flow-test/black?}
+
+   {:flow/from :colors-in
+    :flow/to [:process-red]
+    :flow/short-circuit? true
+    :flow/predicate :onyx.peer.flow-test/red?}
+
+   {:flow/from :colors-in
+    :flow/to [:process-blue]
+    :flow/short-circuit? true
+    :flow/predicate :onyx.peer.flow-test/blue?}
+
+   {:flow/from :colors-in
+    :flow/to [:process-green]
+    :flow/short-circuit? true
+    :flow/predicate :onyx.peer.flow-test/green?}
+
+   {:flow/from :colors-in
+    :flow/to [:process-red]
+    :flow/predicate :onyx.peer.flow-test/orange?}
+
+   {:flow/from :colors-in
+    :flow/to [:process-blue]
+    :flow/predicate :onyx.peer.flow-test/orange?}
+
+   {:flow/from :colors-in
+    :flow/to [:process-green]
+    :flow/predicate :onyx.peer.flow-test/orange?}])
+
+(defn child? [event {:keys [age]} max-child-age]
+  (<= age max-child-age))
+
+(defn adult? [event {:keys [age]}]
+  (>= age 18))
+
+(defn athlete? [event {:keys [job]}]
+  (= job "athlete"))
+
+(defn washington-resident? [event {:keys [location]}]
+  (= location "Washington"))
+
+(defn red? [event {:keys [color]}]
+  (= color "red"))
+
+(defn blue? [event {:keys [color]}]
+  (= color "blue"))
+
+(defn green? [event {:keys [color]}]
+  (= color "green"))
+
+(defn orange? [event {:keys [color]}]
+  (= color "orange"))

 (def constantly-true (constantly true))


CTH-130 always log that we failed to deliver a message

Here we restructure handle-delivery-failure to always log the failure message,
and additionally log if we'll reschedule or drop.

--- src/puppetlabs/cthun/connection_states.clj
+++ src/puppetlabs/cthun/connection_states.clj
@@ -61,19 +61,18 @@
 (defn- handle-delivery-failure
   [message reason]
   "If the message is not expired schedule for a future redelivery by adding to the redeliver queue"
+  (log/info "Failed to deliver message" message reason)
   (let [expires (time-coerce/to-date-time (:expires message))
         now     (time/now)]
     (if (time/after? expires now)
-      (do
-        (log/info "Failed to deliver message" message reason)
-        (let [difference     (time/in-seconds (time/interval now expires))
-              sleep-duration (if (<= (/ difference 2) 1) 1 (float (/ difference 2)))
-              message        (message/add-hop message "redelivery")]
-          (log/info "Moving message to the redeliver queue in " sleep-duration " seconds")
-          ;; TODO(richardc): we should queue for future delivery, not sleep
-          (Thread/sleep (* sleep-duration 1000))
-          (activemq/queue-message "redeliver" message)))
-      (log/warn "Message " message " has expired. Dropping message"))))
+      (let [difference     (time/in-seconds (time/interval now expires))
+            sleep-duration (if (<= (/ difference 2) 1) 1 (float (/ difference 2)))
+            message        (message/add-hop message "redelivery")]
+        (log/info "Moving message to the redeliver queue in " sleep-duration " seconds")
+        ;; TODO(richardc): we should queue for future delivery, not sleep
+        (Thread/sleep (* sleep-duration 1000))
+        (activemq/queue-message "redeliver" message)))
+    (log/warn "Message " message " has expired. Dropping message")))

 (defn deliver-message
   [message]


Added simple foreign key example as a failing test.

--- test/blutwurst/planner_test.clj
+++ test/blutwurst/planner_test.clj
@@ -4,16 +4,30 @@

 (deftest planner-tests
   (testing "Testing the process of sequencing tables."
-    (let [spec nil
-          simple-schema {:tables '({:name "PERSON",
+    (let [simple-schema {:tables '({:name "PERSON",
                          :schema "DBO",
                          :columns
-                         ({:name "NAME", :type "VARCHAR", :length 100, :nullable true}
-                          {:name "ID", :type "INTEGER", :length 10, :nullable true})})}]
+                         [{:name "NAME", :type "VARCHAR", :length 100, :nullable true}
+                          {:name "ID", :type "INTEGER", :length 10, :nullable true}]})}]
      (is (= '({:name "PERSON",
                          :schema "DBO",
                          :columns
-                         ({:name "NAME", :type "VARCHAR", :length 100, :nullable true}
-                          {:name "ID", :type "INTEGER", :length 10, :nullable true})})
+                         [{:name "NAME", :type "VARCHAR", :length 100, :nullable true}
+                          {:name "ID", :type "INTEGER", :length 10, :nullable true}]})
           (create-data-generation-plan simple-schema)))
-    )))
+    ))
+
+  (testing "Planning should account for foreign key relationships when buidling out a plan."
+   (let [city-table-definition {:name "CITY" :schema "ASDF" :columns '({:name "STATE"})
+                                        :dependencies [
+                                          { :dependency-name "D1" :target-name "STATE"
+                                            :target-schema "ASDF" :links {"STATE" "NAME"}}
+                                        ]}
+         state-table-definition {:name "STATE" :schema "ASDF" :columns '({:name "NAME"})
+                                        :dependencies []}
+         foreign-key-schema {:tables (list city-table-definition state-table-definition)}]
+     (is (= (list state-table-definition city-table-definition)
+            (create-data-generation-plan foreign-key-schema)
+         )))
+
+  ))


fix test for 32bit java (bad arity finding)

--- test/dalap/test/cljsrc_walk.clj
+++ test/dalap/test/cljsrc_walk.clj
@@ -21,7 +21,7 @@
 (def clj-forms-to-drop #{'defmacro 'comment})
 (def cljs-core-transform-rules
   [(fn [form w] (contains? (meta form) :cljs))
-   (comp :cljs meta)
+   (fn [form w_] ((comp :cljs meta) form))
    ;;
    (fn [form w] (contains? (meta form) :clj))
    (constantly ::drop)


fix test

fix test


Fixing build failures

Fixing build failures

--- ingest-app/src/cmr/ingest/api/routes.clj
+++ ingest-app/src/cmr/ingest/api/routes.clj
@@ -73,6 +73,7 @@
    "application/iso19115+xml" :xml
    "application/iso:smap+xml" :xml
    "application/dif+xml" :xml
+   "application/dif10+xml" :xml
    "application/xml" :xml
    "application/json" :json})


Improve tests related fixture.

Improve tests related fixture.

--- test/uxbox/tests/helpers.clj
+++ test/uxbox/tests/helpers.clj
@@ -23,11 +23,18 @@
   (with-open [conn (sc/context +ds+)]
     (sc/execute conn "drop schema if exists public cascade;")
     (sc/execute conn "create schema public;"))
-  (mount/start-with {#'uxbox.config/config +config+})
+  (-> (mount/only #{#'uxbox.config/config
+                    #'uxbox.persistence/datasource
+                    #'uxbox.migrations/migrations
+                    #'uxbox.services.auth/secret})
+      (mount/swap {#'uxbox.config/config +config+
+                   #'uxbox.persistence/datasource +ds+})
+      (mount/start))
   (try
     (next)
     (finally
-      (mount/stop))))
+      (mount/stop-except #'uxbox.config/config
+                         #'uxbox.persistence/datasource))))

 (defn ex-info?
   [v]


app state for desired player state and watch it

we have a :player key in the app-state atom which can be updated by
the (forthcoming) transport UI, and a fn hooked to it with add-watch
that updates the actual HTML5 audio element attrs when it changes. Yay

Only does source and play/pause right now, seek TBA

--- src-cljs/core.cljs
+++ src-cljs/core.cljs
@@ -32,6 +32,12 @@
               }
      :player-queue []
      :tab-on-view [:search]
+     :player {:track-number 0
+              :playing false
+              :track-offset 0
+              :track-offset-when 0
+              :source nil
+              }
      }))

 (defn search-results []
@@ -307,7 +313,16 @@
                            (om/build player-view app))
                ))))

+(defn sync-transport [_ ref o n]
+  (let [desired (:player n)
+        actual (aget (.getElementsByTagName js/document "audio") 0)]
+    (if-not (= (.-src actual) (:source desired))
+      (set! (.-src actual) (:source desired)))
+    (if (= (.-paused actual) (:playing desired))
+      (set! (.-paused actual) (not (:playing desired))))))
+
 (defn init []
+  (add-watch app-state :transport sync-transport)
   (let [el (. js/document (getElementById "om-app"))
         search (chan)]
     (om/root app-view app-state


remove unused app state keys

remove unused app state keys

--- src-cljs/core.cljs
+++ src-cljs/core.cljs
@@ -25,8 +25,6 @@
   (atom
     {:results []
      :player-queue []
-     :filters {}
-     :device-type nil
      }))

 (defn search-results []


Enumerate possible layouts

Enumerate possible layouts

--- src-cljs/main.cljs
+++ src-cljs/main.cljs
@@ -4,30 +4,71 @@
    [goog.fx :as gfx]
    ; why the following cannot be imported along with goog.fx?
    [goog.fx.DragListDirection]
-   [goog.fx.DragListGroup]))
+   [goog.fx.DragListGroup]
+   [goog.fx.DragListGroup.EventType]))

 (defn column-id
   [name]
   (str "column-" name))

+(defn set-ids
+  [prefix objects]
+  (-> (reduce (fn [[n acc] object]
+                [(inc n)
+                 (->> (assoc object :id (str prefix "-" n))
+                      (conj acc))]) [0 (empty objects)] objects)
+      second))
+
+(defn get-card-deps
+  []
+  [#{"card-1" "card-3"}])
+
 (defn get-cards
   []
-  [{:name "Lemon nation!"
-    :state "In progress"
-    :description "Kill all humans"}
-   {:name "Wake up"
-    :state "Defined"
-    :description "Terminate sleep"}])
+  (let [cards [{:name "Lemon nation!"
+                :state "In progress"
+                :description "Kill all humans"}
+               {:name "Wake up"
+                :state "Defined"
+                :description "Terminate sleep"}
+               {:name "Kick a baby"
+                :state "Accepted"
+                :description "subj"}
+               {:name "Culture training"
+                :state "In progress"
+                :description "Listen hammer smashed face"}]]
+    (set-ids "card" cards)))
+
+(defn get-board
+  []
+  (gdom/getElement "board"))
+
+(defn get-cards-layout
+  []
+  (let [board (get-board)
+        columns (gdom/getElementsByClass "Column" board)]
+    (areduce columns i ret (array-map)
+      (let [column (aget columns i)
+            card-list (gdom/getElementByClass "CardList" column)
+            cards (gdom/getElementsByClass "Card" card-list)
+            column-id (aget column "id")]
+        (assoc ret
+          column-id
+          (areduce cards j card-vector (vector)
+                   (let [card (aget cards j)]
+                     (->> (aget card "id")
+                          (conj card-vector)))))))))

 (defn add-card
-  [{name :name
-    state :state
+  [{id :id
+    name :name
+    state :state
     description :description}]
   (let [column (gdom/getElement (column-id state))
         list (gdom/getElementByClass "CardList" column)]
     (gdom/appendChild
      list
-     (gdom/createDom "div" #js{:class "Card"}
+     (gdom/createDom "div" #js{:id id :class "Card"}
       (gdom/createDom "div" #js{:class "CardContent"}
        (gdom/createDom "h3" nil name)
        (gdom/createDom "p" nil description))))))
@@ -42,7 +83,7 @@

 (defn create-groups
   [columns]
-  (let [board (gdom/getElement "board")]
+  (let [board (get-board)]
     (map #(let [{name :name} %
                 list (gdom/createDom "div" #js{:class "CardList"})
                 column (gdom/createDom
@@ -54,6 +95,157 @@
             list)
          columns)))

+(defn show-layout
+  []
+  (doseq [[column-id cards] (get-cards-layout)]
+        (.log js/console column-id (count cards))))
+
+(defn apply-layout
+  [layout]
+  (doseq [[column-id card-ids] layout]
+    (let [column (gdom/getElement column-id)
+          card-list (gdom/getElementByClass "CardList" column)
+          cards (doall (map gdom/getElement card-ids))]
+      (gdom/removeChildren card-list)
+      (doseq [card cards] (gdom/appendChild card-list card)))))
+
+(defn get-layout-score
+  [layout]
+  0)
+
+(defn better-score
+  [left right]
+  "returns true if left score is better than right"
+  (< left right))
+
+(defn cartesian-product
+  [cols]
+  (if-not (< (count cols) 2)
+    (for [head (first cols)
+          tail (cartesian-product (next cols))]
+      (conj tail head))
+    (map list (first cols)))) ; TODO do something with this
+
+(defn get-group-cards
+  [group cards leftovers]
+  (reduce
+   (fn [[grouped leftovers] card]
+     (if (get group card)
+       [(conj (if grouped grouped []) card) (disj leftovers card)]
+       [grouped leftovers]))
+   [nil leftovers]
+   cards))
+
+(defn group-cards
+  [groups0 cards]
+  (let [[groupped ungroupped-set]
+        (reduce
+         (fn [[groups leftovers] group]
+           (let [[grouped new-leftovers] (get-group-cards group cards leftovers)]
+             [(if grouped
+                (conj groups grouped)
+                groups)
+              new-leftovers]))
+         [[] (into #{} cards)]
+         groups0)]
+    [groupped (filter (partial get ungroupped-set) cards)]))
+
+(defn permutations
+  [items0]
+  (if (< (count items0) 2)
+    [items0]
+    (loop [items  items0
+           rest   []
+           result []]
+      (if-not (empty? items)
+        (let [head (first items)
+              tail (next items)
+              others (into rest tail)
+              perms (map #(conj % head) (permutations others))]
+          (recur tail (conj rest head) (into result perms)))
+        result))))
+
+(defn slices-splits
+  [slices-num items-num]
+  (if (= 0 slices-num)
+    [[items-num]]
+    (for [i (range 0 (inc items-num))
+          rest (slices-splits (dec slices-num) (- items-num i))]
+         (conj rest i))))
+
+(defn slices
+  [slices-num items]
+  (let [splits (slices-splits slices-num (count items))]
+    (map
+     #(->> %
+           (reduce
+            (fn [[to-split splitted] n]
+              (let [[left right] (split-at n to-split)]
+                [right (conj splitted left)]))
+            [items []])
+           second)
+     splits)))
+
+(defn column-permutations
+  [groups column]
+  (let [[column-id cards] column
+        [grouped-cards ungrouped] (group-cards groups cards)
+        groups-num (count grouped-cards)
+        grouped-permutations (permutations grouped-cards)
+        ungrouped-slices (slices groups-num ungrouped)]
+    (map
+     (fn [[ungrouped grouped]]
+       [column-id
+        (reduce into []
+                (into
+                 (interleave ungrouped grouped)
+                 (drop (count grouped) ungrouped)))])
+     (cartesian-product [ungrouped-slices grouped-permutations]))))
+
+(defn layout-permuations
+  [layout]
+  (let [groups (get-card-deps)
+        columns-permutations (map (partial column-permutations groups) layout)]
+    (map
+     (partial into {})
+     (cartesian-product columns-permutations))))
+
+(defn optimize-layout
+  [layout]
+  (let [permutations (layout-permuations layout)]
+    (transduce
+     (map (fn [layout] [(get-layout-score layout) layout]))
+     (fn
+       ([final]
+          (second final))
+       ([best current]
+          (if best
+            (let [[best-score _] best
+                  [current-score _] current]
+              (if (better-score current-score best-score)
+                current
+                best))
+            current)))
+     nil
+     permutations)))
+
+(defn handle-layout-change
+  [layout]
+  (-> (optimize-layout layout)
+      apply-layout))
+
+(defn listen-drag
+  [drag-group cards-layout]
+  (let [layout-box #js{:layout cards-layout}]
+    (.listen drag-group
+             goog.fx.DragListGroup.EventType/DRAGEND
+             (fn [_]
+               (let [new-cards-layout (get-cards-layout)
+                     old-layout (aget layout-box "layout")]
+                 (aset layout-box "layout" new-cards-layout)
+                 (if-not (= new-cards-layout old-layout)
+                   (handle-layout-change new-cards-layout)))))))
+
 (defn load
   []
   ;(.log js/console (.getOwnPropertyDescriptor js/Object js/document "location"))
@@ -66,4 +258,6 @@
            (.addDragList drag-group list goog.fx.DragListDirection/DOWN))
     (doseq [card (get-cards)] (add-card card))
     (.init drag-group)
-    (.log js/console "done")))
+    (.log js/console (print-str (cartesian-product [[:a :b] [1 2]])))
+    (.log js/console "done")
+    (listen-drag drag-group (get-cards-layout))))


CMR-5099: Bumped version for next dev cycle.

--- project.clj
+++ project.clj
@@ -15,7 +15,7 @@
        ns
        "\u001B[35m]\u001B[33m λ\u001B[m=> "))

-(defproject gov.nasa.earthdata/cmr-opendap "1.1.1-SNAPSHOT"
+(defproject gov.nasa.earthdata/cmr-opendap "1.2.0-SNAPSHOT"
   :description "OPeNDAP Integration in the CMR"
   :url "https://github.com/cmr-exchange/cmr-opendap"
   :license {


Added elasticsearch docker component.

Added elasticsearch docker component.


re-jiggers profiles and uses dmp lib that works with minified builds

--- project.clj
+++ project.clj
@@ -11,7 +11,7 @@
                  [binaryage/devtools "0.5.2"]
                  [reagent "0.5.1"]
                  [com.taoensso/sente "1.8.1"]
-                 [akjetma/dmp-clj "0.1.2"]]
+                 [akjetma/dmp-clj "0.1.3"]]
   :plugins [[lein-cljsbuild "1.1.3"]]
   :clean-targets ^{:protect false} ["resources/public/js/swirl.js"
                                     "resources/public/js/out"
@@ -23,19 +23,20 @@
   :uberjar-name "swirl.jar"
   :cljsbuild {:builds
               {:client {:source-paths ["src"]
-                        :compiler {:main "swirl.client"
-                                   :asset-path "js/out"
-                                   :output-dir "resources/public/js/out"
-                                   :output-to "resources/public/js/swirl.js"
-                                   :optimizations :none}}
+                        :compiler {:optimizations :simple
+                                   :output-to "resources/public/js/swirl.js"}}
                :sandbox {:source-paths ["src-sandbox"]
                          :compiler {:optimizations :simple
                                     :output-to "resources/public/js/sandbox.js"}}}}

   :profiles {:dev {:plugins [[lein-figwheel "0.5.0-1"]]
                    :figwheel {:css-dirs ["resources/public/css"]}
-                   :cljsbuild {:builds {:client {:figwheel {:on-jsload "swirl.client/reload"}}
-                                        :sandbox {:figwheel {:on-jsload "swirl.client/reload"}
+                   :cljsbuild {:builds {:client {:figwheel {:on-jsload "swirl.client/reload"}
+                                                 :compiler {:optimizations :none
+                                                            :main "swirl.client"
+                                                            :asset-path "js/out"
+                                                            :output-dir "resources/public/js/out"}}
+                                        :sandbox {:figwheel {:on-jsload "sandbox.core/reload"}
                                                   :compiler {:optimizations :none
                                                              :main "sandbox.core"
                                                              :asset-path "js/out_sb"


Bump Clojure to 1.10.0

Bump Clojure to 1.10.0

--- project.clj
+++ project.clj
@@ -6,7 +6,7 @@

   :deploy-repositories [["releases" :clojars]]

-  :dependencies [[org.clojure/clojure "1.9.0-RC1"]
+  :dependencies [[org.clojure/clojure "1.10.0"]
                  [org.openrdf.sesame/sesame-runtime "2.8.9"]
                  [org.clojure/tools.logging "0.3.1"]
                  [grafter/url "0.2.5"]


Updated Clojure to 1.5.1

Updated Clojure to 1.5.1

--- project.clj
+++ project.clj
@@ -8,7 +8,7 @@
             [codox "0.6.4"]
             [lein-marginalia "0.7.1"]
             [lein-outdated "1.0.0"]]
-  :dependencies [[org.clojure/clojure "1.5.0"]
+  :dependencies [[org.clojure/clojure "1.5.1"]
                  [compojure "1.1.3"]
                  [ring/ring-core "1.1.6"]
                  [ring/ring-jetty-adapter "1.1.6"]


Bump leiningen-core

Bump leiningen-core

--- project.clj
+++ project.clj
@@ -44,7 +44,7 @@
                    :global-vars {*warn-on-reflection* true}
                    :dependencies [[org.clojure/clojurescript "1.9.946"]
                                   [cider/piggieback "0.4.1"]
-                                  [leiningen-core "2.9.0"]
+                                  [leiningen-core "2.9.5"]
                                   [commons-io/commons-io "2.6"]]
                    :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}
                    :java-source-paths ["test/java"]


Version 132-SNAPSHOT

Version 132-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojars-web "131"
+(defproject clojars-web "132-SNAPSHOT"
   :min-lein-version "2.0.0"
   :dependencies [[org.clojure/clojure "1.10.1"]
                  [org.clojure/core.memoize "0.8.2"]


Version bump

Version bump

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject fqcss "0.0.2"
+(defproject fqcss "0.0.3"
   :description "FQCSS: namespaced CSS classes"

   :url "https://github.com/JoelSanchez/fqcss"


upgrade clojurescript

upgrade clojurescript

--- project.clj
+++ project.clj
@@ -2,7 +2,7 @@
   :description "FIXME: write this!"
   :url "http://example.com/FIXME"
   :dependencies [[org.clojure/clojure "1.6.0"]
-                 [org.clojure/clojurescript "0.0-2371"]
+                 [org.clojure/clojurescript "0.0-2657"]
                  [ring "1.2.1"]
                  [om "0.7.0"]
                  [cljs-ajax "0.3.3"]


Set clj-parent=4.6.1

Set clj-parent=4.6.1

--- project.clj
+++ project.clj
@@ -27,7 +27,7 @@

   :min-lein-version "2.9.1"

-  :parent-project {:coords [puppetlabs/clj-parent "4.6.0"]
+  :parent-project {:coords [puppetlabs/clj-parent "4.6.1"]
                    :inherit [:managed-dependencies]}

   :dependencies [[org.clojure/clojure]


Update dependencies versions.

Update dependencies versions.

--- project.clj
+++ project.clj
@@ -7,7 +7,7 @@
                  [org.clojure/algo.monads "0.1.5"]
                  [ring/ring-core "1.3.1"]
                  [commons-codec/commons-codec "1.9"]
-                 [com.taoensso/nippy "2.6.3"]
+                 [com.taoensso/nippy "2.7.0"]
                  [clojurewerkz/scrypt "1.1.0"]
                  [clj-time "0.8.0"]
                  [swiss-arrows "1.0.0"]
@@ -16,7 +16,7 @@
                  [org.bouncycastle/bcpkix-jdk15on "1.50"]]
   :source-paths ["src/clojure"]
   :java-source-paths ["src/java"]
-  :plugins [[codox "0.8.9"]
+  :plugins [[codox "0.8.10"]
             [lein-cloverage "1.0.2"]]
   :codox {:output-dir "doc/api"
           :src-dir-uri "http://github.com/niwibe/buddy/blob/master/"


Fix build and update deps

Fix build and update deps

--- project.clj
+++ project.clj
@@ -3,8 +3,8 @@
   :url "https://github.com/kongeor/potoo"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :dependencies [[org.clojure/clojure "1.7.0"]
-                 [org.clojure/clojurescript "1.7.170"]
+  :dependencies [[org.clojure/clojure "1.8.0"]
+                 [org.clojure/clojurescript "1.8.34"]
                  [reagent "0.6.0-alpha"]
                  [cljs-ajax "0.5.3"]
                  [com.datomic/datomic-free "0.9.5344"]
@@ -18,14 +18,15 @@
                  [bouncer "1.0.0"]]
   :source-paths ["src/clj"]
   :test-paths ["test/clj"]
-  :main potoo.system
   :min-lein-version "2.0.0"
   :plugins [[lein-figwheel "0.5.0-1"]
             [lein-cljsbuild "1.1.3"]]
-  :clean-targets [:target-path "out"]
+  :clean-targets ^{:protect false} ["resources/public/js"
+                                    :target-path]
   :uberjar-name "potoo-standalone.jar"
-  :profiles {:uberjar {:aot :all}}
-  :prep-tasks ["compile" ["cljsbuild" "once" "min"]]
+  :profiles {:uberjar {:prep-tasks ["compile" ["cljsbuild" "once" "min"]]
+                       :aot :all}
+             :dev {:source-paths ["dev"]}}
   :cljsbuild {
               :builds [{:id "dev"
                         :source-paths ["src/cljs" "src/cljs_dev"]


heroku wrrr

heroku wrrr

--- project.clj
+++ project.clj
@@ -6,7 +6,7 @@

   :source-paths ["src/clj" "src/cljs"]

-  :dependencies [[org.clojure/clojure "1.7.0-alpha5"]
+  :dependencies [[org.clojure/clojure "1.6.0"]
                  [ring-server "0.4.0"]
                  [cljsjs/react "0.13.1-0"]
                  [reagent "0.5.0"]


updated deps and new version

updated deps and new version

--- project.clj
+++ project.clj
@@ -1,19 +1,19 @@
-(defproject corpus-utils "0.1.8"
+(defproject corpus-utils "0.2.0"
   :description "Miscellaneous utilities to parse Japanese language corpora with Clojure"
   :url "https://github.com/borh/corpus-utils.git"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :dependencies [[org.clojure/clojure "1.7.0"]
+  :dependencies [[org.clojure/clojure "1.8.0"]

-                 [clj-mecab "0.4.1.4"]
+                 [clj-mecab "0.4.6"]

                  [fast-zip "0.6.1" :exclusions [com.cemerick/austin]]
                  [org.clojure/data.csv "0.1.3"]
                  [me.raynes/fs "1.4.6"]
                  [org.apache.commons/commons-compress "1.10"]
                  [org.tukaani/xz "1.5"]
-                 [prismatic/schema "1.0.0"]
-                 [prismatic/plumbing "0.4.4"]]
+                 [prismatic/schema "1.0.5"]
+                 [prismatic/plumbing "0.5.2"]]
   :min-lein-version "2.0.0"
   :resource-paths ["data"]
   :jvm-opts ["-server"]


Bumb gatling version

Bumb gatling version

--- project.clj
+++ project.clj
@@ -14,7 +14,7 @@
                  [ring-json-response "0.2.0"]
                  [http-kit "2.1.16"]
                  [clj-time "0.8.0"]
-                 [io.gatling/gatling-charts "2.0.1"]
-                 [io.gatling.highcharts/gatling-charts-highcharts "2.0.1"]]
+                 [io.gatling/gatling-charts "2.0.3"]
+                 [io.gatling.highcharts/gatling-charts-highcharts "2.0.3"]]
   :repositories { "excilys" "http://repository.excilys.com/content/groups/public" }
   :main clj-gatling.core)


Adding an explicit lib thrift dependency.

--- project.clj
+++ project.clj
@@ -7,6 +7,7 @@
   :dependencies [[org.clojure/clojure                   "1.4.0"]
                  [org.apache.cassandra/cassandra-all    "1.2.0"]
                  [org.apache.cassandra/cassandra-thrift "1.2.0"]
+                 [org.apache.thrift/libthrift           "0.7.0"]
                  [clojurewerkz/support                  "0.10.0"]
                  [com.taoensso/nippy                    "1.0.1"]
                  [clj-time                              "0.4.4"]]


Update lein-protobuf.

Update lein-protobuf.

--- project.clj
+++ project.clj
@@ -7,7 +7,7 @@
                  [ordered-collections "0.4.0"]
                  [useful "0.8.4"]
                  [schematic "0.0.5"]]
-  :plugins [[lein-protobuf "0.2.0"]]
+  :plugins [[lein-protobuf "0.2.1"]]
   :aliases {"testall" ["with-profile" "dev,default:dev,1.3,default:dev,1.5,default" "test"]}
   :profiles {:1.3 {:dependencies [[org.clojure/clojure "1.3.0"]]}
              :1.5 {:dependencies [[org.clojure/clojure "1.5.0-master-SNAPSHOT"]]}


lein-release plugin: preparing 0.4.2 release

--- project.clj
+++ project.clj
@@ -7,7 +7,7 @@
     [http-kit "2.1.18"]
     [hiccup "1.0.5"]])

-(defproject racehub/om-bootstrap "0.4.2-SNAPSHOT"
+(defproject racehub/om-bootstrap "0.4.2"
   :description "Bootstrap meets Om."
   :url "http://github.com/racehub/om-bootstrap"
   :license {:name "MIT License"


Update buddy-core dependency and remove slingshot dependency (now is transitive from buddy-core).

--- project.clj
+++ project.clj
@@ -5,8 +5,8 @@
             :url "http://www.apache.org/licenses/LICENSE-2.0"}
   :dependencies [[org.clojure/clojure "1.6.0" :scope "provided"]
                  [com.taoensso/nippy "2.8.0"]
-                 [buddy/buddy-core "0.5.0"]
-                 [slingshot "0.12.2"]
+                 [buddy/buddy-core "0.6.0-SNAPSHOT"]
+                 ;; [slingshot "0.12.2"]
                  [cats "0.4.0"]
                  [clj-time "0.9.0"]
                  [cheshire "5.4.0"]]


Reorder convert-units; add temperature

Reorder convert-units; add temperature

Previous commits ...

This commit ...

--- src/test_utils/fracture_diagnostics.cljc
+++ src/test_utils/fracture_diagnostics.cljc
@@ -9,6 +9,7 @@
                           :pressure
                           :proppant-concentration
                           :slurry-rate
+                          :temperature
                           :volume])

 (defn rand-physical-quantity []
@@ -22,7 +23,8 @@
                             :pressure               [:psi :kPa]
                             :proppant-concentration [:lb-per-gal :lb/gal :kg-per-m3 :kg/m3]
                             :slurry-rate            [:bbl-per-min :bpm :m3-per-min :m3/min]
-                            :volume                 [:bbl :m3]}]
+                            :volume                 [:bbl :m3]
+                            :temperature            [:F :C]}]
     (fn [] (rand-nth (get quantity-units-map physical-quantity)))))

 (def rand-density-unit (rand-unit :density))
@@ -32,30 +34,33 @@
 (def rand-pressure-unit (rand-unit :pressure))
 (def rand-proppant-concentration-unit (rand-unit :proppant-concentration))
 (def rand-slurry-rate-unit (rand-unit :slurry-rate))
+(def rand-temperature-unit (rand-unit :temperature))
 (def rand-volume-unit (rand-unit :volume))

 (defn convert-units-f [from to]
-  (let [factors   {[:m :ft]                   3.28084
+  (let [factors   {[:lb-per-cu-ft :kg-per-m3] 16.0185
+                   [:m :ft]                   3.28084
                    [:kg :lb]                  2.20462262185
-                   [:m3 :bbl]                 6.28981077
                    [:psi :kPa]                6.894757293168361
                    [:lb-per-gal :kg-per-m3]   119.826
-                   [:lb-per-cu-ft :kg-per-m3] 16.0185}
-        converter {[:ft :m]                   #(/ % (factors [:m :ft]))
+                   ;; slurry rate conversion not needed (use [:bbl :m3])
+                   [:m3 :bbl]                 6.28981077}
+        converter {[:lb-per-cu-ft :kg-per-m3] #(* % (factors [:lb-per-cu-ft :kg-per-m3]))
+                   [:kg-per-m3 :lb-per-cu-ft] #(/ % (factors [:lb-per-cu-ft :kg-per-m3]))
+                   [:ft :m]                   #(/ % (factors [:m :ft]))
                    [:m :ft]                   #(* % (factors [:m :ft]))
                    [:lb :kg]                  #(/ % (factors [:kg :lb]))
                    [:kg :lb]                  #(* % (factors [:kg :lb]))
-                   [:bbl :m3]                 #(/ % (factors [:m3 :bbl]))
-                   [:m3 :bbl]                 #(* % (factors [:m3 :bbl]))
                    [:psi :kPa]                #(* % (factors [:psi :kPa]))
                    [:kPa :psi]                #(/ % (factors [:psi :kPa]))
                    [:lb-per-gal :kg-per-m3]   #(* % (factors [:lb-per-gal :kg-per-m3]))
                    [:kg-per-m3 :lb-per-gal]   #(/ % (factors [:lb-per-gal :kg-per-m3]))
                    [:m3-per-min :bbl-per-min] #(* % (factors [:m3 :bbl]))
                    [:bbl-per-min :m3-per-min] #(/ % (factors [:lb-per-gal :kg-per-m3]))
-                   [:lb-per-cu-ft :kg-per-m3] #(* % (factors [:lb-per-cu-ft :kg-per-m3]))
-                   [:kg-per-m3 :lb-per-cu-ft] #(/ % (factors [:lb-per-cu-ft :kg-per-m3]))
-                   [:C :F]                    #(+ (* % 1.8) 32)}]
+                   [:F :C]                    #(/ (- % 32) 1.8)
+                   [:C :F]                    #(+ (* % 1.8) 32)
+                   [:bbl :m3]                 #(/ % (factors [:m3 :bbl]))
+                   [:m3 :bbl]                 #(* % (factors [:m3 :bbl]))}]
     (converter [from to])))

 (defn typical-vertical-depth []


Let's try to live dangerously. Close #12.

--- project.clj
+++ project.clj
@@ -2,7 +2,7 @@
   :description "Web app for tracking library releases."
   :url "http://hatnik.com"
   :dependencies [; Clojure
-                 [org.clojure/clojure "1.6.0"]
+                 [org.clojure/clojure "1.7.0-alpha3"]
                  [ring "1.3.1"]
                  [compojure "1.2.1"]
                  [hiccup "1.0.5"]


Release version 0.7.3-beta7.

Release version 0.7.3-beta7.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.onyxplatform/onyx-sql "0.7.3-SNAPSHOT"
+(defproject org.onyxplatform/onyx-sql "0.7.3-beta7"
   :description "Onyx plugin for JDBC-backed SQL databases"
   :url "https://github.com/MichaelDrogalis/onyx-sql"
   :license {:name "Eclipse Public License"


bump storm dependency for no zmq local mode

--- project.clj
+++ project.clj
@@ -15,6 +15,6 @@
                  [com.googlecode.json-simple/json-simple "1.1"]
                  ]

-  :dev-dependencies [[storm "0.5.1"]
+  :dev-dependencies [[storm "0.5.2"]
                      ])


lein-release plugin: bumped version from 1.0.0 to 1.0.1-SNAPSHOT for next development cycle

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (def ks-version "1.0.0")

-(defproject puppetlabs/trapperkeeper "1.0.0"
+(defproject puppetlabs/trapperkeeper "1.0.1-SNAPSHOT"
   :description "A framework for configuring, composing, and running Clojure services."
   ;; Abort when version ranges or version conflicts are detected in
   ;; dependencies. Also supports :warn to simply emit warnings.


Version 3.1.0-beta2

Version 3.1.0-beta2

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject neko "3.1.0-SNAPSHOT"
+(defproject neko "3.1.0-beta2"
   :description "Neko is a toolkit designed to make Android development using Clojure easier and more fun."
   :url "https://github.com/alexander-yakushev/neko"
   :license {:name "Eclipse Public License"
@@ -8,7 +8,7 @@
   :java-source-paths ["src/java" "gen"]

   :profiles {:default [:user :dev :android-common]}
-  :plugins [[lein-droid "0.3.0-beta1"]]
+  :plugins [[lein-droid "0.3.0-beta2"]]

   :android {:library true
             :target-sdk :ics})


bump deps

bump deps

--- project.clj
+++ project.clj
@@ -23,7 +23,7 @@
   ;; it manually in the npm launcher which just installs shadow-cljs
   ;; and would be missing clojure then
   :dependencies
-  [[org.clojure/clojure "1.10.0"]
+  [[org.clojure/clojure "1.10.1"]

    [org.clojure/data.json "0.2.6"]
    [org.clojure/tools.cli "0.3.7"]
@@ -33,7 +33,7 @@
    [com.cognitect/transit-clj "0.8.313"]
    [com.cognitect/transit-cljs "0.8.256"]

-   [org.clojure/core.async "0.4.490"]
+   [org.clojure/core.async "0.4.500"]

    ;; hack to get the latest closure-compiler if CLJS doesn't have it
    [org.clojure/clojurescript "1.10.520"
@@ -43,19 +43,19 @@

    ;; [com.google.javascript/closure-compiler-unshaded "v20180319"]
    ;;  v20180506
-   [com.google.javascript/closure-compiler-unshaded "v20190325"]
+   [com.google.javascript/closure-compiler-unshaded "v20190528"]
    [org.clojure/google-closure-library "0.0-20190213-2033d5d9"]

    [thheller/shadow-util "0.7.0"]
    [thheller/shadow-client "1.3.2"]

-   [io.undertow/undertow-core "2.0.19.Final"
+   [io.undertow/undertow-core "2.0.22.Final"
     :exclusions
     [org.jboss.xnio/xnio-api
      org.jboss.xnio/xnio-nio]]

-   [org.jboss.xnio/xnio-api "3.7.0.Final"]
-   [org.jboss.xnio/xnio-nio "3.7.0.Final"
+   [org.jboss.xnio/xnio-api "3.7.2.Final"]
+   [org.jboss.xnio/xnio-nio "3.7.2.Final"
     :exlusions [org.jboss.threads/jboss-threads]]

    [org.jboss.threads/jboss-threads "2.3.2.Final"]
@@ -67,7 +67,7 @@
     [clj-time]]

    [expound "0.7.2"]
-   [fipp "0.6.17"]
+   [fipp "0.6.18"]

    [com.bhauman/cljs-test-display "0.1.1"]


Specify karma dependencies through lein-npm

--- project.clj
+++ project.clj
@@ -27,7 +27,11 @@
             [lein-kibit "0.1.2"]
             [jonase/eastwood "0.2.3"]
             [lein-cljsbuild "1.1.2"]
-            [lein-figwheel "0.5.0-1"]]
+            [lein-figwheel "0.5.0-1"]
+            [lein-npm "0.6.2"]]
+  :npm {:dependencies [[karma ""]
+                       [karma-cljs-test ""]
+                       [karma-firefox-launcher ""]]}
   :cljsbuild {:builds [{:id "dev"
                         :source-paths ["src"]
                         :figwheel true


RR: organise dependancies alphabetically

--- project.clj
+++ project.clj
@@ -8,34 +8,33 @@
   :url "https://github.com/onaio/zebra-lite"
   :license {:name "Apache 2 License"
             :url "http://www.apache.org/licenses/LICENSE-2.0"}
-  :dependencies [[onaio/milia "0.1.0-SNAPSHOT"]
-                 [prabhasp/osmtogeojson-cljs "2.2.5-SNAPSHOT"]
-                 [org.clojars.onaio/hatti "0.1.0-SNAPSHOT"]
-                 [org.omcljs/om "0.8.8"]
+  :dependencies [[clavatar "0.2.1"]
+                 [clj-time "0.7.0"]
+                 [clj-redis-session "2.1.0"]
+                 [cljsjs/moment "2.9.0-0"]
+                 [cljsjs/leaflet "0.7.3-0"]
+                 [com.keminglabs/cljx "0.6.0" :exclusions [org.clojure/clojure]]
                  [com.google.guava/guava "16.0"]
                  [compojure "1.3.2"]
+                 [environ "1.0.0"]
+                 [hiccup "1.0.5"]
+                 [inflections "0.9.7"]
+                 [onaio/milia "0.1.0-SNAPSHOT"]
+                 [org.clojars.onaio/hatti "0.1.0-SNAPSHOT"]
                  [org.clojure/clojure "1.6.0"]
                  [org.clojure/clojurescript "0.0-3196"]
                  [org.clojure/core.async "0.1.346.0-17112a-alpha"]
                  [org.clojure/tools.logging "0.2.6"]
+                 [org.omcljs/om "0.8.8"]
+                 [prabhasp/osmtogeojson-cljs "2.2.5-SNAPSHOT"]
+                 [rm-hull/ring-gzip-middleware "0.1.7"]
                  [ring.middleware.logger "0.5.0"]
                  [ring/ring-defaults "0.1.4"]
                  [ring/ring-jetty-adapter "1.3.2"]
+                 [ring/ring-json "0.3.1"]
                  [sablono "0.3.1"]
                  [secretary "1.2.3"]
-                 ;; ring middleware
-                 [ring/ring-json "0.3.1"]
-                 [hiccup "1.0.5"]
-                 [rm-hull/ring-gzip-middleware "0.1.7"]
-                 [slingshot "0.12.2"]
-                 [clj-time "0.7.0"]
-                 [inflections "0.9.7"]
-                 [clavatar "0.2.1"]
-                 [com.keminglabs/cljx "0.6.0" :exclusions [org.clojure/clojure]]
-                 [environ "1.0.0"]
-                 [clj-redis-session "2.1.0"]
-                 ;; CLSJS Dependencies
-                 [cljsjs/moment "2.9.0-0"]]
+                 [slingshot "0.12.2"]]
   :plugins [[com.keminglabs/cljx "0.6.0" :exclusions [org.clojure/clojure]]
             [lein-cljsbuild "1.0.5"]
             [lein-midje "3.1.3"]


Fix dependency compat java 11

Fix dependency compat java 11

--- project.clj
+++ project.clj
@@ -12,7 +12,8 @@
                  [org.clojure/data.xml "0.0.8"]
                  [json-path "2.0.0"]
                  [dk.ative/docjure "1.10.0"]
-                 [io.forward/yaml "1.0.9"]
+                 [io.forward/yaml "1.0.9" :exclusions [org.flatland/ordered]]
+                 [org.flatland/ordered "1.5.7"]
                  [org.clojure/core.async "0.4.490"]
                  [ch.qos.logback/logback-classic "1.2.3"]
                  [org.clojure/tools.cli "0.4.1"]


Rolled version number

Rolled version number

--- project.clj
+++ project.clj
@@ -9,7 +9,7 @@
 ; Contributors:
 ;    Peter Monks - initial implementation

-(defproject org.clojars.pmonks/bookmark-writer "0.1.0"
+(defproject org.clojars.pmonks/bookmark-writer "0.2.0-SNAPSHOT"
   :description      "A simple and dumb Clojure library that provides the ability to set the text values of bookmarks in Word 2007 (.docx) format files."
   :url              "https://github.com/pmonks/bookmark-writer"
   :license          {:name "Eclipse Public License"


(SERVER-3156) Enable sles15 builds

(SERVER-3156) Enable sles15 builds

--- project.clj
+++ project.clj
@@ -161,7 +161,7 @@
                                                [puppetlabs/jruby-utils]
                                                [puppetlabs/puppetserver ~ps-version]
                                                [puppetlabs/trapperkeeper-webserver-jetty9]]
-                      :plugins [[puppetlabs/lein-ezbake "2.3.0"]]
+                      :plugins [[puppetlabs/lein-ezbake "2.3.2"]]
                       :name "puppetserver"}
              :uberjar {:dependencies [[org.bouncycastle/bcpkix-jdk15on]
                                       [puppetlabs/trapperkeeper-webserver-jetty9]]


rm project

rm project

--- project.clj
+++ project.clj
@@ -1,18 +0,0 @@
-(defproject bardo "0.1.0"
-  :description "A clojure(script) library to assist with transitions between dimensions"
-  :url "https://github.com/pleasetrythisathome/bardo"
-  :license {:name         "Eclipse Public License - v 1.0"
-            :url          "http://www.eclipse.org/legal/epl-v10.html"
-            :distribution :repo}
-
-  :resource-paths ["target/src/cljs"]
-
-  :jar-exclusions [#"\.cljx|\.swp|\.swo|\.DS_Store"]
-
-  :dependencies [[org.clojure/clojure "1.7.0"]
-                 [org.clojure/clojurescript "0.0-2342"]
-                 [org.clojure/core.async "0.1.338.0-5c5012-alpha"]
-                 [org.clojure/core.match "0.3.0-alpha4"]
-                 [clj-time "0.8.0"]
-                 [com.andrewmcveigh/cljs-time "0.1.1"]]
-  )


update to latest jackson release, 1.8.3

update to latest jackson release, 1.8.3

--- project.clj
+++ project.clj
@@ -2,16 +2,13 @@
   :description "JSON and JSON SMILE encoding, fast."
   :url "https://github.com/dakrone/cheshire"
   :dependencies [[org.clojure/clojure "1.2.1"]
-                 [org.codehaus.jackson/jackson-core-asl "1.8.2"]
-                 [org.codehaus.jackson/jackson-smile "1.8.2"]]
+                 [org.codehaus.jackson/jackson-core-asl "1.8.3"]
+                 [org.codehaus.jackson/jackson-smile "1.8.3"]]
   :dev-dependencies [[lein-marginalia "0.6.0"]
                      [lein-multi "1.0.0"]]
   :multi-deps {"1.2.0" [[org.clojure/clojure "1.2.0"]
-                        [org.codehaus.jackson/jackson-core-asl "1.8.2"]
-                        [org.codehaus.jackson/jackson-smile "1.8.2"]]
-               "1.2.1" [[org.clojure/clojure "1.2.1"]
-                        [org.codehaus.jackson/jackson-core-asl "1.8.2"]
-                        [org.codehaus.jackson/jackson-smile "1.8.2"]]
+                        [org.codehaus.jackson/jackson-core-asl "1.8.3"]
+                        [org.codehaus.jackson/jackson-smile "1.8.3"]]
                "1.3" [[org.clojure/clojure "1.3.0-beta1"]
-                      [org.codehaus.jackson/jackson-core-asl "1.8.2"]
-                      [org.codehaus.jackson/jackson-smile "1.8.2"]]})
+                      [org.codehaus.jackson/jackson-core-asl "1.8.3"]
+                      [org.codehaus.jackson/jackson-smile "1.8.3"]]})


Upgrade to clojure 1.9

Upgrade to clojure 1.9

--- project.clj
+++ project.clj
@@ -8,7 +8,7 @@
 ;;   the terms of this license.
 ;;   You must not remove this notice, or any others, from this software.

-(defproject com.7theta/via "0.7.0"
+(defproject com.7theta/via "0.7.1"
   :description "A WebSocket abstraction"
   :url "https://github.com/7theta/via"
   :license {:name "Eclipse Public License"
@@ -18,12 +18,12 @@
                  [com.cognitect/transit-clj "0.8.300"]
                  [com.cognitect/transit-cljs "0.8.243"]

-                 [integrant "0.6.1"]
+                 [integrant "0.6.2"]
                  [clojure-future-spec "1.9.0-beta4"]]
   :profiles {:dev {:plugins [[lein-cljsbuild "1.1.7"]
                              [lein-figwheel "0.5.14" :exclusions [cider/cider-nrepl
                                                                   org.clojure/clojure]]]
-                   :dependencies [[org.clojure/clojure "1.8.0"]
+                   :dependencies [[org.clojure/clojure "1.9.0"]
                                   [org.clojure/clojurescript "1.9.946"]
                                   [org.clojure/core.async "0.3.465"]


Version 0.4.7-SNAPSHOT

Version 0.4.7-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (def ks-version "1.0.0")

-(defproject puppetlabs/jdbc-util "0.4.6"
+(defproject puppetlabs/jdbc-util "0.4.7-SNAPSHOT"
   :description "Common JDBC helpers for use in Puppet Labs projects"
   :url "https://github.com/puppetlabs/jdbc-util"


Ensure clojurescript is compiled in uberjar profile

--- project.clj
+++ project.clj
@@ -92,6 +92,8 @@

              :uberjar {:omit-source true
                        :aot :all
+                       :hooks [leiningen.cljsbuild]
+
                        :cljsbuild
                        {:builds {:client {:compiler
                                           {:main comic-reader.main


Version 2.0.3

Version 2.0.3

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject dda/dda-user-crate "2.0.3-SNAPSHOT"
+(defproject dda/dda-user-crate "2.0.3"
   :description "A crate to handle users"
   :url "https://www.domaindrivenarchitecture.org"
   :license {:name "Apache License, Version 2.0"


Update libs

Update libs

--- project.clj
+++ project.clj
@@ -19,17 +19,16 @@
   :description "Puppet-integrated catalog and fact storage"
   :dependencies [[org.clojure/clojure "1.5.1"]
                  [cheshire "5.1.1"]
-                 [org.clojure/core.incubator "0.1.0"]
+                 [org.clojure/core.incubator "0.1.2"]
                  [org.clojure/core.match "0.2.0-alpha9"]
-                 [org.clojure/core.memoize "0.5.1"]
-                 [org.clojure/math.combinatorics "0.0.2"]
-                 [org.clojure/tools.logging "0.2.3"]
+                 [org.clojure/math.combinatorics "0.0.4"]
+                 [org.clojure/tools.logging "0.2.6"]
                  [org.clojure/tools.cli "0.2.1"]
                  [org.clojure/tools.nrepl "0.2.2"]
                  [org.clojure/tools.namespace "0.1.3"]
                  [swank-clojure "1.4.3"]
                  [vimclojure/server "2.3.6" :exclusions [org.clojure/clojure]]
-                 [clj-stacktrace "0.2.4"]
+                 [clj-stacktrace "0.2.5"]
                  [metrics-clojure "0.7.0" :exclusions [org.clojure/clojure org.slf4j/slf4j-api]]
                  [clj-time "0.3.7"]
                  [org.clojure/java.jmx "0.1"]


Version 1.5.4

Version 1.5.4

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (def ks-version "2.5.2")

-(defproject puppetlabs/trapperkeeper "1.5.4-SNAPSHOT"
+(defproject puppetlabs/trapperkeeper "1.5.4"
   :description "A framework for configuring, composing, and running Clojure services."

   :license {:name "Apache License, Version 2.0"


Bump 2.2.11

Bump 2.2.11

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject com.wsscode/pathom "2.2.10"
+(defproject com.wsscode/pathom "2.2.11"
   :description "A Clojure library designed to provide a collection of helper functions to support Clojure(script) graph parsers using\nom.next graph syntax."
   :url "https://github.com/wilkerlucio/pathom"
   :license {:name "MIT"


update clj-time

update clj-time

--- project.clj
+++ project.clj
@@ -22,7 +22,7 @@
                  [org.clojure/math.combinatorics "0.1.1"]
                  [potemkin "0.4.3"]
                  [prismatic/plumbing "0.5.3"]
-                 [clj-time "0.11.0"]
+                 [clj-time "0.12.0"]
                  [cc.qbits/alia "3.1.4"]
                  [cc.qbits/alia-manifold "3.1.3"]
                  [cc.qbits/hayt "3.0.1"]


bump version

bump version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject devcards/lein-template "0.2.0-10"
+(defproject devcards/lein-template "0.2.1"
   :description "A Leinigen template for Devcards"
   :url "https://github.com/bhauman/devcards-template"
   :license {:name "Eclipse Public License"


(maint) Upgrade jffi dependency to version 1.2.9

The JRuby poms at 1.7.20 use jffi 1.2.9.

--- project.clj
+++ project.clj
@@ -20,8 +20,11 @@
                  [puppetlabs/http-client "0.4.4"]
                  [org.jruby/jruby-core "1.7.20"
                   :exclusions [com.github.jnr/jffi com.github.jnr/jnr-x86asm]]
-                 [com.github.jnr/jffi "1.2.7"]
-                 [com.github.jnr/jffi "1.2.7" :classifier "native"]
+                 ;; jffi and jnr-x86asm are explicit dependencies because,
+                 ;; in JRuby's poms, they are defined using version ranges,
+                 ;; and :pedantic? :abort won't tolerate this.
+                 [com.github.jnr/jffi "1.2.9"]
+                 [com.github.jnr/jffi "1.2.9" :classifier "native"]
                  [com.github.jnr/jnr-x86asm "1.0.2"]
                  ;; NOTE: jruby-stdlib packages some unexpected things inside
                  ;; of its jar; please read the detailed notes above the


Version 0.4.4

Version 0.4.4

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lein-droid/lein-droid "0.4.4-SNAPSHOT"
+(defproject lein-droid/lein-droid "0.4.4"
   :description "Plugin for easy Clojure/Android development and deployment"
   :url "https://github.com/clojure-android/lein-droid"
   :license {:name "Eclipse Public License"


Bump pygments to 2.5.2

Bump pygments to 2.5.2

--- project.clj
+++ project.clj
@@ -5,5 +5,5 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure          "1.8.0"]
                  [org.python/jython-standalone "2.7.1"]
-                 [org.pygments/pygments        "2.3.1"]]
+                 [org.pygments/pygments        "2.5.2"]]
   :plugins [[lein-cloverage "1.0.9"]])


Story ID: develop - new repository config

--- project.clj
+++ project.clj
@@ -12,10 +12,13 @@
                  [untangled-spec "0.2.0" :scope "test"]
                  [figwheel-sidecar "0.4.1" :scope "provided"]]

-  :repositories [["releases" {:url           "https://artifacts.buehner-fry.com/artifactory/internal-release"
-                              :sign-releases false}
-                  "snapshots" {:url           "https://artifacts.buehner-fry.com/artifactory/internal-snapshots"
-                               :sign-releases false}]]
+  :repositories [["releases" "https://artifacts.buehner-fry.com/artifactory/internal-release"]
+                 ["third-party" "https://artifacts.buehner-fry.com/artifactory/internal-3rdparty"]]
+
+  :deploy-repositories [["releases" {:url           "https://artifacts.buehner-fry.com/artifactory/internal-release"
+                                     :sign-releases false}]
+                        ["snapshots" {:url           "https://artifacts.buehner-fry.com/artifactory/internal-snapshots"
+                                      :sign-releases false}]]

   :source-paths ["src" "spec"]


lein-release plugin: bumped version from 0.63 to 0.64-SNAPSHOT for next development cycle

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject tyrant "0.63"
+(defproject tyrant "0.64-SNAPSHOT"
   :description "Tyrant service"

   :dependencies [[ch.qos.logback/logback-classic "1.1.2"]


Enable figwheel nrepl server

Enable figwheel nrepl server

--- project.clj
+++ project.clj
@@ -37,7 +37,8 @@

   :figwheel {:http-server-root "public" ;; assumes "resources"
              :css-dirs ["site/public/css"]
-             :repl false}
+             :repl true
+             :nrepl-port 27397}

   ;; No profiles and merging - just manual configuration for each build type.
   ;; For :optimization :none ClojureScript compiler will compile all


issue #2

issue #2

--- project.clj
+++ project.clj
@@ -3,5 +3,6 @@
   :url "https://github.com/ieer/power"
   :license {:name "Eclipse Public License"
             :url "https://github.com/ieer/power/blob/master/LICENSE"}
+  :repl-options {:timeout 120000}
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [clj-gpio "0.2.0"]])