class_docstr: A network address to be evaluated.
  
  1. An unbound address is created using `address = Address()`.
  2. An address should be assigned to exactly one node e.g. using
     `address.assign(node)`.
  2. Upon launching, Launchpad will call bind() for each address to assign the
     address builder, which constructs the actual string format address at
     runtime. Launchpad has access to the addressed used in a program because
     each node maintains an `addresses` list of the nodes he knows about (it can
     be the address(es) the node own, or addresses that sub-nodes own.
  3. At runtime, use `address.resolve()` to finally resolve it.
  
  Using an unbound address will trigger an error.
  
  Attributes:
    name: Name of this address.
class_docstr_tok: ["A","network","address","to","be","evaluated",".","1",".","An","unbound","address","is","created","using","`","address","=","Address","(",")","`",".","2",".","An","address","should","be","assigned","to","exactly","one","node","e.g",".","using","`","address.assign","(","node",")","`",".","2",".","Upon","launching",",","Launchpad","will","call","bind","(",")","for","each","address","to","assign","the","address","builder",",","which","constructs","the","actual","string","format","address","at","runtime",".","Launchpad","has","access","to","the","addressed","used","in","a","program","because","each","node","maintains","an","`","addresses","`","list","of","the","nodes","he","knows","about","(","it","can","be","the","address","(","es",")","the","node","own",",","or","addresses","that","sub-nodes","own",".","3",".","At","runtime",",","use","`","address.resolve","(",")","`","to","finally","resolve","it",".","Using","an","unbound","address","will","trigger","an","error",".","Attributes",":","name",":","Name","of","this","address","."]
docstr: Initializes an address object.
  
  Args:
    name: (Optional) Name of the address.
docstr_tok: ["Initializes","an","address","object",".","Args",":","name",":","(","Optional",")","Name","of","the","address","."]
code: def __init__(self, name: Optional[str] = None):
      """Initializes an address object.
  
      Args:
        name: (Optional) Name of the address.
      """
      if (
          name is not None
          and not _ADDRESS_NAME_VALID_PATTERN.fullmatch(name)
      ):
          raise ValueError(
              f"Wrong address name: {name} does not match "
              f"{_ADDRESS_NAME_VALID_PATTERN.pattern}."
          )
      self.name = name
      self._address_builder = None  # type: AbstractAddressBuilder
      self._owning_node = None
  
file_path: launchpad/launchpad/address.py
imports: import abc
  import os
  import re
  from typing import Optional
  from absl import logging
  import portpicker
label_desc: Use image node_id 1 to create a new Address object from inherited base classes: object with example: obj = Address(name)