import requests
from py2neo import Graph, authenticate


class Neo4j:

    def __init__(self, host, port, username=None, password=None):
        self.host = host
        self.port = port
        self.username = username
        self.password = password

        self.host_port = "{host}:{port}".format(host=host, port=port)
        self.url = "http://{host_port}/db/data/".format(host_port=self.host_port)

    def connection(self):
        if self.username and self.password:
            authenticate(self.host_port, self.username, self.password)

        graph = Graph(self.url)
        return graph

    def cypher(self, query):
        tx = self.connection().cypher.begin()

        try:
            tx.append(query)
            results = tx.process()
            tx.commit()
        except Exception as e:
            results = e
        except KeyboardInterrupt:
            tx.rollback()
            results = ""

        return results

    def labels(self):
        return sorted(list(self.connection().node_labels))

    def relationship_types(self):
        return sorted(list(self.connection().relationship_types))

    def properties(self):
        url = self.url + "propertykeys"
        r = requests.get(url, auth=(self.username, self.password))
        props = r.json()
        return sorted(props)

import requests
from py2neo import Graph, authenticate


class Neo4j:

    def __init__(self, host, port, username=None, password=None):
        self.username = username
        self.password = password

        self.host_port = "{host}:{port}".format(host=host, port=port)
        self.url = "http://{host_port}/db/data/".format(host_port=self.host_port)

    def connection(self):
        if self.username and self.password:
            authenticate(self.host_port, self.username, self.password)

        graph = Graph(self.url)
        return graph

    def cypher(self, query):
        tx = self.connection().cypher.begin()

        try:
            tx.append(query)
            results = tx.process()
            tx.commit()
        except Exception as e:
            results = e
        except KeyboardInterrupt:
            tx.rollback()
            results = ""

        return results

    def labels(self):
        return sorted(list(self.connection().node_labels))

    def relationship_types(self):
        return sorted(list(self.connection().relationship_types))

    def properties(self):
        url = self.url + "propertykeys"
        r = requests.get(url, auth=(self.username, self.password))
        props = r.json()
        return sorted(props)

Remove host and port attributes from Neo4j
Remove host and port attributes from Neo4j

  import requests
  from py2neo import Graph, authenticate
  
  
  class Neo4j:
  
      def __init__(self, host, port, username=None, password=None):
-         self.host = host
-         self.port = port
          self.username = username
          self.password = password
  
          self.host_port = "{host}:{port}".format(host=host, port=port)
          self.url = "http://{host_port}/db/data/".format(host_port=self.host_port)
  
      def connection(self):
          if self.username and self.password:
              authenticate(self.host_port, self.username, self.password)
  
          graph = Graph(self.url)
          return graph
  
      def cypher(self, query):
          tx = self.connection().cypher.begin()
  
          try:
              tx.append(query)
              results = tx.process()
              tx.commit()
          except Exception as e:
              results = e
          except KeyboardInterrupt:
              tx.rollback()
              results = ""
  
          return results
  
      def labels(self):
          return sorted(list(self.connection().node_labels))
  
      def relationship_types(self):
          return sorted(list(self.connection().relationship_types))
  
      def properties(self):
          url = self.url + "propertykeys"
          r = requests.get(url, auth=(self.username, self.password))
          props = r.json()
          return sorted(props)
  
Remove host and port attributes from Neo4j
## Code Before:
import requests
from py2neo import Graph, authenticate


class Neo4j:

    def __init__(self, host, port, username=None, password=None):
        self.host = host
        self.port = port
        self.username = username
        self.password = password

        self.host_port = "{host}:{port}".format(host=host, port=port)
        self.url = "http://{host_port}/db/data/".format(host_port=self.host_port)

    def connection(self):
        if self.username and self.password:
            authenticate(self.host_port, self.username, self.password)

        graph = Graph(self.url)
        return graph

    def cypher(self, query):
        tx = self.connection().cypher.begin()

        try:
            tx.append(query)
            results = tx.process()
            tx.commit()
        except Exception as e:
            results = e
        except KeyboardInterrupt:
            tx.rollback()
            results = ""

        return results

    def labels(self):
        return sorted(list(self.connection().node_labels))

    def relationship_types(self):
        return sorted(list(self.connection().relationship_types))

    def properties(self):
        url = self.url + "propertykeys"
        r = requests.get(url, auth=(self.username, self.password))
        props = r.json()
        return sorted(props)

## Instruction:
Remove host and port attributes from Neo4j
## Code After:
import requests
from py2neo import Graph, authenticate


class Neo4j:

    def __init__(self, host, port, username=None, password=None):
        self.username = username
        self.password = password

        self.host_port = "{host}:{port}".format(host=host, port=port)
        self.url = "http://{host_port}/db/data/".format(host_port=self.host_port)

    def connection(self):
        if self.username and self.password:
            authenticate(self.host_port, self.username, self.password)

        graph = Graph(self.url)
        return graph

    def cypher(self, query):
        tx = self.connection().cypher.begin()

        try:
            tx.append(query)
            results = tx.process()
            tx.commit()
        except Exception as e:
            results = e
        except KeyboardInterrupt:
            tx.rollback()
            results = ""

        return results

    def labels(self):
        return sorted(list(self.connection().node_labels))

    def relationship_types(self):
        return sorted(list(self.connection().relationship_types))

    def properties(self):
        url = self.url + "propertykeys"
        r = requests.get(url, auth=(self.username, self.password))
        props = r.json()
        return sorted(props)
