From 2a5c9877de72fc6d7156ca6ed064d6b80b6164c6 Mon Sep 17 00:00:00 2001
From: Jason Carver <ut96caarrs@snkmail.com>
Date: Mon, 22 Oct 2018 10:10:15 -0700
Subject: [PATCH] Add default trinity locations to IPC path guesser

---
 web3/providers/ipc.py | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/web3/providers/ipc.py b/web3/providers/ipc.py
index 886f73f719..00935898ce 100644
--- a/web3/providers/ipc.py
+++ b/web3/providers/ipc.py
@@ -1,6 +1,8 @@
 import logging
 import os
-import pathlib
+from pathlib import (
+    Path,
+)
 import socket
 import sys
 import threading
@@ -91,6 +93,12 @@ def get_default_ipc_path(testnet=False):
         if os.path.exists(ipc_path):
             return ipc_path
 
+        base_trinity_path = Path('~').expanduser() / '.local' / 'share' / 'trinity'
+        if not testnet:
+            ipc_path = base_trinity_path / 'mainnet' / 'jsonrpc.ipc'
+            if ipc_path.exists():
+                return str(ipc_path)
+
     elif sys.platform.startswith('linux') or sys.platform.startswith('freebsd'):
         ipc_path = os.path.expanduser(os.path.join(
             "~",
@@ -111,6 +119,12 @@ def get_default_ipc_path(testnet=False):
         if os.path.exists(ipc_path):
             return ipc_path
 
+        base_trinity_path = Path('~').expanduser() / '.local' / 'share' / 'trinity'
+        if not testnet:
+            ipc_path = base_trinity_path / 'mainnet' / 'jsonrpc.ipc'
+            if ipc_path.exists():
+                return str(ipc_path)
+
     elif sys.platform == 'win32':
         ipc_path = os.path.join(
             "\\\\",
@@ -188,8 +202,8 @@ class IPCProvider(JSONBaseProvider):
     def __init__(self, ipc_path=None, testnet=False, timeout=10, *args, **kwargs):
         if ipc_path is None:
             self.ipc_path = get_default_ipc_path(testnet)
-        elif isinstance(ipc_path, str) or isinstance(ipc_path, pathlib.Path):
-            self.ipc_path = str(pathlib.Path(ipc_path).expanduser().resolve())
+        elif isinstance(ipc_path, str) or isinstance(ipc_path, Path):
+            self.ipc_path = str(Path(ipc_path).expanduser().resolve())
         else:
             raise TypeError("ipc_path must be of type string or pathlib.Path")