PY2NEO兼容层

py2neo-compat的Python项目详细描述


Py2Neo_兼容

https://img.shields.io/pypi/v/py2neo_compat.svg

说明

创建跨版本兼容层的尝试(可能失败) py2neo

目的

py2neo的每一个主要版本都从根本上(而且似乎是无偿的) 更改了api:package/module organization,数据库连接的名称 类,用于处理节点和关系的工具-更不用说 更复杂的功能,如与模式交互。

这里实现的是大量的猴子补丁和其他黑客 在v1.6和v2之间运行。

背景

在工作中,我继承了一个围绕py2neo v1.6开发的代码库,以及数据访问 与商业逻辑有着错综复杂的联系。 测试是稀缺的,存在的测试是系统测试,而不是 解决错误、边界条件等,因此更新py2neo的每次使用 因为一个新版本将是非常危险的。 (更不用说我只是在学习py2neo&neo4j。)

我最初的计划是升级到py2neo v2(当时是最新的) 通过monkey补丁和重命名以增量方式使v1.6能够用作 如果是v2,当代码全部更改为使用v2时,请升级到 PY2ONE V2。 一路上我有机会开发一个新的,独立的 所以我开始为应用程序创建一个新的dist 开发一些可以与遗留系统共享的库,因此 为共享库创建了单独的dist。 我不想用旧的v1.6开发新的应用程序,所以 库需要同时支持v1.6和v2。 我还启动了一个名为gryaml的单独项目,从 yaml文件,它还需要支持多个版本才能 作为测试夹具运行。

功能

  • 独立于实现的名称,可选地修补到 py2neo 调用时的命名空间和类 py2neo_compat.monkey_patch_py2neo
    • 图形
    • 图形.创建唯一的 (仅单路径)
    • graph.cypher.stream
    • graph.cypher.execute执行
    • 图形.全部删除
    • 图表。查找一个
    • graph.legacy.delete_index
    • graph.legacy.获取索引*
    • 图形资源
    • graph.uri
  • 节点
  • node.labels 属性(仅获取)
  • node.pull 方法(在v1中别名为 refresh
  • node.push 方法(在v1中别名为refresh
  • 关系
  • relationship.push 方法(在v1中别名为refresh)
  • relationship.pull 方法(在v1中别名为refresh)
  • 记录
  • 节点
  • rel
  • 服务器错误
  • clienterror
  • uri
  • 资源
  • py2neo.legacywritebatch
  • py2neo.legacy.index
  • py2neo.batch.writebatch
  • 自定义包装函数,这些函数不是猴子补丁:
    • py2neo_compat
      • 图形元数据
      • 创建节点
      • py2neo_entity_to_dict aka to_dict :转储 节点或关系为a dict
    • 模式:
    • 模式onstraints -为 所有约束(不仅仅是使用中的约束)。
    • 模式索引 -生成 all的模式索引元组 索引(不只是使用中的索引)。
    • 删除模式
    • 删除约束
    • 删除索引
    • 创建模式
  • 已知限制:
    • py2neo v1.6不会创建带有抽象节点的标签。
    • 在创建节点后没有通用的方法来修改标签;v1使用 操作标签的特殊方法,而v2使用子类 设置。简单的方法是将v1方法添加到v2,但是 我试图避免传播v1 api;更难的方法是 为v1实现一个类似set的类,但要做的工作要多得多。另一 另一种选择是一个兼容性函数,它最终成为另一个 应用程序编程接口。我不需要在创建后操纵标签。
  • 免费软件:apache软件许可证2.0
  • 未来

    对于未来的发展,我正在考虑几个选择:

    非猴子修补的方法:

    • 代替猴子修补,子类或包装适当的类 并重新实现不同的位。客户端将直接从 py2neo_compat 包,而不是导入,调用monkey补丁 函数,然后从 py2neo
    • 导入
    • 采用基于函数的方法,其中接收器是一个显式参数 而不是有方法。这可能是多余的,因为 主接收器最终嵌入到名称中。

    对于节点和关系以及基本的 图形功能不支持模式、批处理和旧索引。

    学分

    这个包是用cookiecutter和项目模板创建的。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java在AlertDialog builder标题右侧放置图标   安装weblogic server12时发生java获取错误。1在windows 10上   java无法导入:安卓。支持v7。小装置。Android Studio中的RecyclerView   java Android应用程序等待通知奇怪行为   java如何比较ArrayList中的整数元素?   java Quartz属性不会触发Quartz作业   java轻松地将许多JavaFX属性绑定到UINode   Maven插件管理器导致java错误消息的原因是什么?   JAXB解组错误后java文件被阻止   java如何在spark kafka流中创建消费者组并将消费者分配给消费者组   java Gps lat&long随机显示非常不准确的结果   java使用assest文件夹文件在Android上执行shell命令   java如何在客户端使用javascript提取文本   java扩展描述的distincts之和   java重写默认Spring数据REST配置   java SQL未命名参数语法   二进制搜索任务的java真实解决方案   java在一个多模块多数据源项目中,用什么正确的方式来指示将哪个数据源注入我的DAOs?