Skip to content

Commit 2e49311

Browse files
committed
Override neo4j user agent when driver is injected
1 parent 4054c46 commit 2e49311

File tree

7 files changed

+24
-5
lines changed

7 files changed

+24
-5
lines changed

examples/customize/build_graph/components/writers/custom_writer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
from neo4j_graphrag.experimental.components.kg_writer import KGWriter, KGWriterModel
77
from neo4j_graphrag.experimental.components.types import LexicalGraphConfig, Neo4jGraph
88
from pydantic import validate_call
9+
from neo4j_graphrag.utils import telemetry
910

1011

1112
class MyWriter(KGWriter):
1213
def __init__(self, driver: neo4j.Driver) -> None:
13-
self.driver = driver
14+
self.driver = telemetry.override_user_agent(driver)
1415

1516
@validate_call
1617
async def run(

src/neo4j_graphrag/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,9 @@
1212
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
15+
from importlib.metadata import version, PackageNotFoundError
16+
17+
try:
18+
__version__ = version("neo4j-graphrag")
19+
except PackageNotFoundError:
20+
__version__ = "0.0.0"

src/neo4j_graphrag/experimental/components/kg_writer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
UPSERT_RELATIONSHIP_QUERY,
3535
UPSERT_RELATIONSHIP_QUERY_VARIABLE_SCOPE_CLAUSE,
3636
)
37+
from neo4j_graphrag.utils import telemetry
3738

3839
logger = logging.getLogger(__name__)
3940

@@ -113,7 +114,7 @@ def __init__(
113114
neo4j_database: Optional[str] = None,
114115
batch_size: int = 1000,
115116
):
116-
self.driver = driver
117+
self.driver = telemetry.override_user_agent(driver)
117118
self.neo4j_database = neo4j_database
118119
self.batch_size = batch_size
119120
self.is_version_5_23_or_above = self._check_if_version_5_23_or_above()

src/neo4j_graphrag/experimental/components/neo4j_reader.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
TextChunks,
2626
)
2727
from neo4j_graphrag.experimental.pipeline import Component
28+
from neo4j_graphrag.utils import telemetry
2829

2930

3031
class Neo4jChunkReader(Component):
@@ -58,7 +59,7 @@ def __init__(
5859
fetch_embeddings: bool = False,
5960
neo4j_database: Optional[str] = None,
6061
):
61-
self.driver = driver
62+
self.driver = telemetry.override_user_agent(driver)
6263
self.fetch_embeddings = fetch_embeddings
6364
self.neo4j_database = neo4j_database
6465

src/neo4j_graphrag/experimental/components/resolver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
from neo4j_graphrag.experimental.components.types import ResolutionStats
2121
from neo4j_graphrag.experimental.pipeline import Component
22+
from neo4j_graphrag.utils import telemetry
2223

2324

2425
class EntityResolver(Component, abc.ABC):
@@ -34,7 +35,7 @@ def __init__(
3435
driver: neo4j.Driver,
3536
filter_query: Optional[str] = None,
3637
) -> None:
37-
self.driver = driver
38+
self.driver = telemetry.override_user_agent(driver)
3839
self.filter_query = filter_query
3940

4041
@abc.abstractmethod

src/neo4j_graphrag/retrievers/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
from neo4j_graphrag.exceptions import Neo4jVersionError
2626
from neo4j_graphrag.types import RawSearchResult, RetrieverResult, RetrieverResultItem
27+
from neo4j_graphrag.utils import telemetry
2728

2829
T = ParamSpec("T")
2930
P = TypeVar("P")
@@ -82,7 +83,7 @@ class Retriever(ABC, metaclass=RetrieverMetaclass):
8283
VERIFY_NEO4J_VERSION = True
8384

8485
def __init__(self, driver: neo4j.Driver, neo4j_database: Optional[str] = None):
85-
self.driver = driver
86+
self.driver = telemetry.override_user_agent(driver)
8687
self.neo4j_database = neo4j_database
8788
if self.VERIFY_NEO4J_VERSION:
8889
self._verify_version()

src/neo4j_graphrag/utils/telemetry.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import neo4j
2+
from neo4j_graphrag import __version__
3+
4+
5+
# Override user-agent used by neo4j package so we can measure usage of the package by version
6+
def override_user_agent(driver: neo4j.Driver) -> neo4j.Driver:
7+
driver._pool.pool_config.user_agent = f"neo4j-graphrag-python/v{__version__}"
8+
return driver

0 commit comments

Comments
 (0)