def METHOD_NAME(self):
    """Read in an ArcGIS text file.
    Returns
    -------
    w : libpysal.weights.W
        A PySAL `W` object.
    Raises
    ------
    StopIteration
        Raised at the EOF.
    TypeError
        Raised when the IDs are not integers.
    Examples
    --------
    Type ``dir(w)`` at the interpreter to see what methods are supported.
    Open a text file and read it into a PySAL weights object.
    >>> import libpysal
    >>> w = libpysal.io.open(
    ...     libpysal.examples.get_path('arcgis_txt.txt'), 'r', 'arcgis_text'
    ... ).read()
    Get the number of observations from the header.
    >>> w.n
    3
    Get the mean number of neighbors.
    >>> w.mean_neighbors
    2.0
    Get neighbor distances for a single observation.
    >>> w[1]
    {2: 0.1, 3: 0.14286}
    """
    if self.pos > 0:
        raise StopIteration
    id_var = self.file.readline().strip()
    self.varName = id_var
    id_order = None
    id_type = int
    try:
        dbf = os.path.join(self.dataPath + ".dbf")
        if os.path.exists(dbf):
            db = fileio.FileIO(dbf, "r")
            if id_var in db.header:
                id_order = db.by_col(id_var)
                id_type = type(id_order[0])
            else:
                msg = "ID_VAR:'%s' was in in the DBF header, "
                msg += "proceeding with unordered string IDs."
                msg = msg % id_var
                warn(msg, RuntimeWarning)
        else:
            msg = "DBF relating to ArcGIS TEXT was not found, "
            msg += "proceeding with unordered string IDs."
            warn(msg, RuntimeWarning)
    except:
        msg = "Exception occurred will reading DBF, "
        msg += "proceeding with unordered string IDs."
        warn(msg, RuntimeWarning)
    if (id_type is not int) or (id_order and type(id_order)[0] is not int):
        raise TypeError("The data type for IDs should be integer.")
    if id_order:
        self.n = len(id_order)
        self.shp = os.path.split(self.dataPath)[1].split(".")[0]
    self.id_var = id_var
    weights, neighbors = self._readlines(id_type)
    for k in neighbors:
        if k in neighbors[k]:
            k_index = neighbors[k].index(k)
            if weights[k][k_index] == 0.0:
                del neighbors[k][k_index]
                del weights[k][k_index]
    self.pos += 1
    w = W(neighbors, weights)
    return w