Hi, It's by design, as the doc of s/keys states:
In addition, the values of *all* namespace-qualified keys will be validated (and possibly destructured) by any registered specs. Note: there is no support for inline value specification, by design. So if the ns'ed key in your map is registered as a spec it will be validated. In theory you could just validate with (s/keys) in your case, specifying keys in req is useful to check presence and gen and in the case of opt just for gen. The docstring is terse but dense in meaning/information. On Wednesday, June 28, 2017 at 11:04:34 AM UTC+2, Mamun wrote: > > Hi All, > > Clojure spec keys is considering all key within namespace although it is > not defined. > > Here is an example > > (s/def :person/fname string?) > (s/def :person/lname string?) > (s/def :person/id int?) > > ;;With only fname and lname > (s/def :app/person (s/keys :req [:person/fname :person/lname])) > > ;;Success > (s/explain-str :app/person > {:person/lname "Abdullah" > :person/fname "Mamun"} ) > > ;;Success > (s/explain-str :app/person > {:person/lname "Abdullah" > :person/fname "Mamun" > :id "123"} ) > > ;;fail with namespace id > (s/explain-str :app/person > {:person/lname "Abdullah" > :person/fname "Mamun" > :person/id "1234"}) > > > Is it bug or am I doing something wrong here? > > Br, > Mamun > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.