Ipython: 路径库,路径库无处不在。

创建于 2020-08-28  ·  22评论  ·  资料来源: ipython/ipython

我们可以在许多地方使用Pathlib。

查找使用with open(...)任何地方并问自己:

  • 参数是字符串吗?
  • 将其设为Path()会有意义吗?
  • 我可以在代码的上游进行多远的访问?

不要试图咬超过您可以咀嚼的东西(或超过我可以评论的东西),尝试一次固定一个地方。

Hacktoberfest good first issue help wanted

最有用的评论

大家好,我正在尝试查看所有PR,有很多解决此问题的方法,请小心,有些人正在发送已打开其他PR的更改。

所有22条评论

大家好

大家好

当然可以。 谢谢。

嗨,我想在core / interactiveshell.py上工作,并在那里增加对Pathlib的使用。
我可以帮忙吗?

@Carreau我可以接受testing / iptestcontroller.py和core / magics / execution.py吗?

可能还会有用: https: //docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

除了with open() ,还有许多其他地方可能使用pathlib处理:

-    conda_history = os.path.join(sys.prefix, 'conda-meta', 'history')
-    return os.path.exists(conda_history)
+    return Path(sys.prefix, 'conda-meta', 'history').exists()

那是个很好的观点。

2020年10月10日星期六,晚上8:33 Blazej Michalik [email protected]
写道:

可能也有用:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

除了open()之外,还有许多其他地方可能使用pathlib
治疗:

  • conda_history = os.path.join(sys.prefix,'conda-meta','history')-返回os.path.exists(conda_history)+ return Path(sys.prefix,'conda-meta','history') .exists()

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653
或退订
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q

可能还会有用: https: //docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

除了with open() ,还有许多其他地方可能使用pathlib处理:

尽管...其中有些可能不太琐碎,但更容易出错,尤其是在将它们解释为文本时。 例如,当返回PosixPath对象时,它会在上面的范围内中断代码,因为它是' '.join() -ed与其他shell参数。

还有什么地方可以解决这个问题? 看起来很多人都在为此工作。
编辑:发现一些,没关系

还有什么地方可以解决这个问题? 看起来很多人都在为此工作。

我正在慢慢检查PR并将它们合并,我不确定是否还有其他地方。

还有其他可以尝试的方法; 查找所有使用cast_unicode / cast_bytes的位置,并查看它们是否可移动。 其中许多是由于旧的Python 2兼容性所致。

例如有

def find_file(obj) -> str:
  ...
    fname = None
    try:
        fname = inspect.getabsfile(obj)
    except TypeError:
        # For an instance, the file that matters is where its class was
        # declared.
        if hasattr(obj, '__class__'):
            try:
                fname = inspect.getabsfile(obj.__class__)
            except TypeError:
                # Can happen for builtins
                pass
    except:
        pass
    return cast_unicode(fname)

如果可以证明inspect.getabsfil始终返回str而不返回字节,则cast_unicode是不必要的。 要做更多的工作,但这将清除bt代码库。

我在整个项目中搜索了功能,然后发现了许多功能。 我应该考虑用Pathlib替代项替换所有这些替代项,还是应该考虑不替换其中的功能的文件?

对不起,如果我不能让你明白我想说的话。

我正在paths.py并在以下几个函数中找到了以下行:

assert isinstance(ipdir, str)

其中一个断言给出一条消息,指示"all path manipulation should be str(unicode), but are not."

我应该删除这样的行,以便移至path​​lib吗?

我正在paths.py并在以下几个函数中找到了以下行:

assert isinstance(ipdir, str)

其中一个断言给出一条消息,指示"all path manipulation should be str(unicode), but are not."

我应该删除这样的行,以便移至path​​lib吗?

是的,因此某些地方无法使用。

大家好,我正在尝试查看所有PR,有很多解决此问题的方法,请小心,有些人正在发送已打开其他PR的更改。

为什么现在关闭?

@meeseeksdev打开

噢,对不起,ashwinvis,您似乎未被允许这样做,请咨询存储库维护者。

我是新来的开源贡献者,很乐意致力于这个问题。 完成更改后,在创建PR之前测试代码的最简单方法是什么?

我是新来的开源贡献者,很乐意致力于这个问题。 完成更改后,在创建PR之前测试代码的最简单方法是什么?

你好@squarebat
你应该做这个:

  • 通过在仓库的根目录中运行以下命令来安装测试依赖项:
$ pip3 install -e .[test]
  • 然后执行测试
$ iptest

我想处理test_run.py文件。 但是,我在解决该文件中的某些错误时遇到了麻烦。 两个主要错误是

  • undefined variable get_ipython (此问题通过添加导入来解决,但这似乎是错误的)

  • undefined variable _ip :在某些函数中, _ip初始化为_ip = get_ipython()从而定义了它,但在其他函数中却未初始化,因此导致了错误。

我已经使用pip install .设置了我的环境
我只是想知道设置环境时是否出错,或者test_run.py文件中是否有错误。

我已经使用pip install设置了环境

您必须使用pip install -e .[test]

-e表示您以可编辑模式安装它。

你好! 这是我第一次为开源项目做贡献,我想研究这个问题。
我可以被分配吗?

此页面是否有帮助?
0 / 5 - 0 等级