|
66 | 66 |
|
67 | 67 |
|
68 | 68 | (defn- output-module-generic
|
69 |
| - [^Writer writer clj-name k v] |
70 |
| - (.write writer |
71 |
| - (format " |
| 69 | + [^Writer writer clj-name k v vv] |
| 70 | + (if (or (number? vv) |
| 71 | + (string? vv) |
| 72 | + (nil? vv)) |
| 73 | + (.write writer |
| 74 | + (format " |
| 75 | +
|
| 76 | +(def ^{:doc \"%s\"} %s %s)" |
| 77 | + (get-docs v) |
| 78 | + clj-name |
| 79 | + (if (string? vv) |
| 80 | + (format "\"%s\"" vv) |
| 81 | + vv))) |
| 82 | + (.write writer |
| 83 | + (format " |
72 | 84 |
|
73 | 85 | (def ^{:doc \"%s\"} %s (as-jvm/generic-pyobject (py-global-delay (py/get-attr @src-obj* \"%s\"))))"
|
74 |
| - (get-docs v) |
75 |
| - clj-name |
76 |
| - k))) |
| 86 | + (get-docs v) |
| 87 | + clj-name |
| 88 | + k)))) |
77 | 89 |
|
78 | 90 |
|
79 | 91 | (def ^:no-doc default-exclude
|
80 | 92 | '[+ - * / float double int long mod byte test char short take partition require
|
81 | 93 | max min identity empty mod repeat str load cast type sort conj
|
82 |
| - map range list next hash eval bytes filter compile print set format]) |
| 94 | + map range list next hash eval bytes filter compile print set format |
| 95 | + compare reduce merge]) |
| 96 | + |
| 97 | + |
| 98 | +(def ^:private invalid-symbol-names |
| 99 | + #{"__cached__" "__file__"}) |
83 | 100 |
|
84 | 101 |
|
85 | 102 | (defn write-namespace!
|
@@ -164,26 +181,19 @@ user> (doto (python/list)
|
164 | 181 | py-mod-or-cls))
|
165 | 182 | (doseq [[k v] target-metadata]
|
166 | 183 | (when (and (string? k)
|
| 184 | + (not= "__cached__" k) |
| 185 | + (not= 0 (count k)) |
167 | 186 | (map? v)
|
168 | 187 | (py/has-attr? target k))
|
169 | 188 | (let [clj-name (get symbol-name-remaps k k)]
|
170 |
| - ;;If the value is atomic |
171 |
| - (if (or (string? v) |
172 |
| - (number? v) |
173 |
| - (boolean? v)) |
174 |
| - (.write writer (format "\n\n(def ^{:doc %s} %s %s)" |
175 |
| - (escape-quotes (:doc v "No documentation")) |
176 |
| - clj-name |
177 |
| - (if (string? v) |
178 |
| - (str "\"" (escape-quotes v) "\"") |
179 |
| - v))) |
180 |
| - (case (:type v) |
181 |
| - :list (output-module-list writer clj-name k v) |
182 |
| - :tuple (output-module-tuple writer clj-name k v) |
183 |
| - :dict (output-module-dict writer clj-name k v) |
184 |
| - (if (:callable? (:flags v)) |
185 |
| - (output-module-callable writer clj-name k v) |
186 |
| - (output-module-generic writer clj-name k v)))))))) |
| 189 | + (case (:type v) |
| 190 | + :list (output-module-list writer clj-name k v) |
| 191 | + :tuple (output-module-tuple writer clj-name k v) |
| 192 | + :dict (output-module-dict writer clj-name k v) |
| 193 | + (if (:callable? (:flags v)) |
| 194 | + (output-module-callable writer clj-name k v) |
| 195 | + (output-module-generic writer clj-name k v |
| 196 | + (py/get-attr target k)))))))) |
187 | 197 | :ok))))
|
188 | 198 | ([py-mod-or-cls]
|
189 | 199 | (write-namespace! py-mod-or-cls nil)))
|
|
0 commit comments