class_docstr: Requirements on tags.
  
  A ``TagReq`` may or may not be "satisfied" by a set of tags.
  
  A ``Tag`` is itself a ``TagReq`` that is satisfied by itself::
  
      t1.satisfied({t1})  # True
      t1.satisfied({t2})  # False
  
  A ``TagReq`` can be inverted by the ``~`` operator::
  
      (~t1).satisfied({t2})  # True
      (~t1).satisfied({t1})  # False
  
  You can take the disjunction of two ``TagReq`` with the ``&`` operator::
  
      (t1 & t2).satisfied({t1, t2})  # True
      (t1 & t2).satisfied({t1})  # False
  
  You can take the union of two ``TagReq`` with the ``|`` operator::
  
      (t1 | t2).satisfied({t1})  # True
      (t1 | t2).satisfied({t3})  # False
  
  Finally there's a special ``TagReq`` called ``NO_REQ`` that always is satisfied:
  
      NO_REQ.satisfied({})  # True
class_docstr_tok: ["Requirements","on","tags",".","A","``","TagReq","``","may","or","may","not","be","``","satisfied","''","by","a","set","of","tags",".","A","``","Tag","``","is","itself","a","``","TagReq","``","that","is","satisfied","by","itself",":",":","t1.satisfied","(","{","t1","}",")","#","True","t1.satisfied","(","{","t2","}",")","#","False","A","``","TagReq","``","can","be","inverted","by","the","``","~","``","operator",":",":","(","~t1",")",".satisfied","(","{","t2","}",")","#","True","(","~t1",")",".satisfied","(","{","t1","}",")","#","False","You","can","take","the","disjunction","of","two","``","TagReq","``","with","the","``","&","``","operator",":",":","(","t1","&","t2",")",".satisfied","(","{","t1",",","t2","}",")","#","True","(","t1","&","t2",")",".satisfied","(","{","t1","}",")","#","False","You","can","take","the","union","of","two","``","TagReq","``","with","the","``","|","``","operator",":",":","(","t1","|","t2",")",".satisfied","(","{","t1","}",")","#","True","(","t1","|","t2",")",".satisfied","(","{","t3","}",")","#","False","Finally","there","'s","a","special","``","TagReq","``","called","``","NO_REQ","``","that","always","is","satisfied",":","NO_REQ.satisfied","(","{","}",")","#","True"]
docstr: Do a pretty ``repr`` of a wrapped child requirement.
  
  Basically wraps the child in ``()`` if it is "complicated".
docstr_tok: ["Do","a","pretty","``","repr","``","of","a","wrapped","child","requirement",".","Basically","wraps","the","child","in","``","(",")","``","if","it","is","``","complicated","''","."]
code: def child_repr(self) -> str:
      """
      Do a pretty ``repr`` of a wrapped child requirement.
  
      Basically wraps the child in ``()`` if it is "complicated".
      """
      if isinstance(self, (Tag, NoTagReq)):
          return repr(self)
      return "(" + repr(self) + ")"
  
imports: from abc import ABC, abstractmethod
  from typing import Any, Callable, Collection, Generic, Iterable, List, TypeVar
label_desc: Use image node_id 2 for calling the TagReq obj's underlying member method code with example usage: obj.child_repr() and returns: unknown, repr