配置转换

本文档描述了中配置系统中的更改 astropy 以及如何更新代码以使用它。

为用户

配置文件

如果尚未在中编辑配置文件 ~/.astropy/config/astropy.cfg ,你没什么可做的。第一次导入时 astropy 0.4,它将自动替换为的配置文件模板 astropy 0.4。

如果您编辑了配置文件,它将保持不变。但是,的模板 astropy 0.4将安装为 ~/.astropy/config/astropy.0.4.cfg . 您可以手动比较对此文件所做的更改,以确定应该带来哪些自定义项。

储蓄

已从Python配置中完全删除保存项。相反,必须直接编辑配置文件。

更名

配置参数的位置已经简化,因此它们总是出现在 astropy ,而不是使用低级文件名(这实际上是一个不应该向用户公开的实现细节)。在Python端,配置项总是通过 conf 对象位于子包的根目录。

一些影响科学计算结果的配置项已作为配置参数一起删除,并转换为必须从Python代码更改的科学状态对象。

下表列出了所有的移动(按原始配置文件位置的字母顺序排列)。旧名称将继续在Python和配置文件中使用 astropy 0.4释放周期,并将在 astropy 0.5.

重命名的配置参数

旧配置文件位置

旧Python位置

新配置文件位置

新Python位置

[] unicode_output

UNICODE_OUTPUT

不变

conf.unicode_output

[coordinates.name_resolve] name_resolve_timeout

coordinates.name_resolve.NAME_RESOLVE_TIMEOUT

[astropy.utils.data] remote_timeout

astropy.utils.data.conf.remote_timeout

[coordinates.name_resolve] sesame_url

coordinates.name_resolve.SESAME_URL

远离的

coordinates.name_resolve.sesame_url.get/set

[coordinates.name_resolve] sesame_database

coordinates.name_resolve.SESAME_DATABASE

远离的

coordinates.name_resolve.sesame_database.get/set

[cosmology.core] default_cosmology

cosmology.core.DEFAULT_COSMOLOGY

远离的

cosmology.default_cosmology.get/set

[io.fits] enable_record_valued_keyword_cards

io.fits.ENABLE_RECORD_VALUED_KEYWORD_CARDS

不变

io.fits.conf.enable_record_valued_keyword_cards

[io.fits] extension_name_case_sensitive

io.fits.EXTENSION_NAME_CASE_SENSITIVE

不变

io.fits.conf.extension_name_case_sensitive

[io.fits] strip_header_whitespace

io.fits.STRIP_HEADER_WHITESPACE

不变

io.fits.conf.strip_header_whitespace

[io.fits] use_memmap

io.fits.USE_MEMMAP

不变

io.fits.conf.use_memmap

[io.votable.table] pedantic

io.votable.table.PEDANTIC

[io.votable] pedantic

io.votable.conf.pedantic

[logger] log_exceptions

logger.LOG_EXCEPTIONS

不变

logger.conf.log_exceptions

[logger] log_file_format

logger.LOG_FILE_FORMAT

不变

logger.conf.log_file_format

[logger] log_file_level

logger.LOG_FILE_LEVEL

不变

logger.conf.log_file_level

[logger] log_file_path

logger.LOG_FILE_PATH

不变

logger.conf.log_file_path

[logger] log_level

logger.LOG_LEVEL

不变

logger.conf.log_level

[logger] log_to_file

logger.LOG_TO_FILE

不变

logger.conf.log_to_file

[logger] log_warnings

logger.LOG_WARNINGS

不变

logger.conf.log_warnings

[logger] use_color

logger.USE_COLOR

[] use_color

conf.use_color

[nddata.nddata] warn_unsupported_correlated

nddata.nddata.WARN_UNSUPPORTED_CORRELATED

[nddata] warn_unsupported_correlated

nddata.conf.warn_unsupported_correlated

[table.column] auto_colname

table.column.AUTO_COLNAME

[table] auto_colname

table.conf.auto_colname

[table.jsviewer] jquery_url

table.jsviewer.JQUERY_URL

不变

table.jsviewer.conf.jquery_url

[table.jsviewer] datatables_url

table.jsviewer.DATATABLES_URL

不变

table.jsviewer.conf.datatables_url

[table.pprint] max_lines

table.pprint.MAX_LINES

[] max_lines

conf.max_lines

[table.pprint] max_width

table.pprint.MAX_WIDTH

[] max_width

conf.max_width

[utils.console] use_color

utils.console.USE_COLOR

[] use_color

conf.use_color

[utils.data] compute_hash_block_size

astropy.utils.data.COMPUTE_HASH_BLOCK_SIZE

不变

astropy.utils.data.conf.compute_hash_block_size

[utils.data] dataurl

astropy.utils.data.DATAURL

不变

astropy.utils.data.conf.dataurl

[utils.data] delete_temporary_downloads_at_exit

astropy.utils.data.DELETE_TEMPORARY_DOWNLOADS_AT_EXIT

不变

astropy.utils.data.conf.delete_temporary_downloads_at_exit

[utils.data] download_cache_block_size

astropy.utils.data.DOWNLOAD_CACHE_BLOCK_SIZE

不变

astropy.utils.data.conf.download_cache_block_size

[utils.data] download_cache_lock_attempts

astropy.utils.data.download_cache_lock_attempts

不变

astropy.utils.data.conf.download_cache_lock_attempts

[utils.data] remote_timeout

astropy.utils.data.REMOTE_TIMEOUT

不变

astropy.utils.data.conf.remote_timeout

[vo.client.conesearch] conesearch_dbname

vo.client.conesearch.CONESEARCH_DBNAME

[vo] conesearch_dbname

vo.conf.conesearch_dbname

[vo.client.vos_catalog] vos_baseurl

vo.client.vos_catalog.BASEURL

[vo] vos_baseurl

vo.conf.vos_baseurl

[vo.samp.utils] use_internet

vo.samp.utils.ALLOW_INTERNET

[vo.samp] use_internet

vo.samp.conf.use_internet

[vo.validator.validate] cs_mstr_list

vo.validator.validate.CS_MSTR_LIST

[vo.validator] conesearch_master_list

vo.validator.conf.conesearch_master_list

[vo.validator.validate] cs_urls

vo.validator.validate.CS_URLS

[vo.validator] conesearch_urls

vo.validator.conf.conesearch_urls

[vo.validator.validate] noncrit_warnings

vo.validator.validate.noncrit_warnings

[vo.validator] noncritical_warnings

vo.validator.conf.noncritical_warnings

对于附属软件包作者

一个附属的一揽子计划来支持两者 astropy 0.3和0.4,遵循 astropy 0.3配置指令应继续工作。请注意,配置项的保存已从中完全删除 astropy 0.4没有弃用循环,因此如果以编程方式保存配置对包很重要,则可能需要考虑另一种方法来保存该状态。

但是,通过释放 astropy 0.5 astropy 0.3配置API将不再工作。下面描述如何转换为 astropy 0.3支持 astropy 0.4及更高版本。不可能支持 astropy 同时为0.3、0.4和0.5。下面 pkgname 是你的附属软件包的名称。

从中自动生成配置文件 ConfigurationItem 它找到的对象已被删除。相反,项目应该在中包含一个硬编码的“模板”配置文件 pkgname/pkgname.cfg . 按照惯例,为了方便最终用户的升级,所有的值都应该被注释掉。例如:

[nddata]

## Whether to issue a warning if NDData arithmetic is performed with
## uncertainties and the uncertainties do not support the propagation of
## correlated uncertainties.
# warn_unsupported_correlated = True

附属软件包应过渡到使用 astropy.config.ConfigItem 对象作为成员 astropy.config.ConfigNamespace 子类。

例如,下面是 astropy 0.3及更早版本定义配置项的方法:

from astropy.config import ConfigurationItem

ENABLE_RECORD_VALUED_KEYWORD_CARDS = ConfigurationItem(
    'enabled_record_valued_keyword_cards', True,
    'If True, enable support for record-valued keywords as described by '
    'the FITS WCS distortion paper. Otherwise they are treated as normal '
    'keywords.')

EXTENSION_NAME_CASE_SENSITIVE = ConfigurationItem(
    'extension_name_case_sensitive', False,
    'If True, extension names (i.e. the EXTNAME keyword) should be '
   'treated as case-sensitive.')

上面的转换为新方法的内容如下:

from astropy import config as _config

class Conf(_config.ConfigNamespace):
    """
    Configuration parameters for `astropy.io.fits`.
    """

    enable_record_valued_keyword_cards = _config.ConfigItem(
        True,
        'If True, enable support for record-valued keywords as described by '
        'the FITS WCS distortion paper. Otherwise they are treated as normal '
        'keywords.',
        aliases=['astropy.io.fits.enabled_record_valued_keyword_cards'])

    extension_name_case_sensitive = _config.ConfigItem(
        False,
        'If True, extension names (i.e. the ``EXTNAME`` keyword) should be '
        'treated as case-sensitive.')
conf = Conf()

在Python中移动/重命名配置项

ConfigAlias 当配置项从 astropy 0.3样式 ConfigurationItemastropy 0.4样式 ConfigItem 内部 ConfigNamespace .

在上面的示例中,下面添加了向后兼容的钩子,这样配置项的旧Python位置将继续从用户代码中工作:

ENABLE_RECORD_VALUED_KEYWORD_CARDS = _config.ConfigAlias(
    '0.4', 'ENABLE_RECORD_VALUED_KEYWORD_CARDS',
    'enable_record_valued_keyword_cards')

移动/重命名配置文件中的配置项

如果在配置文件中移动或重命名配置项,则 aliases 克瓦格 ConfigItem 可以使用,以便旧位置将继续用作备用。例如,如果项目的旧位置是:

[coordinates.name_resolve]
sesame_url = http://somewhere.com

您可能想放弃这是在模块中实现的事实 name_resolve 只需将配置存储在 coordinates

[coordinates]
sesame_url = http://somewhere.com

当定义 ConfigItem 为了这个条目 aliases kwarg可以列出配置项的旧位置:

sesame_url = _config.ConfigItem(
    ["http://somewhere.com"],
    """Docstring""",
    aliases=['astropy.coordinates.name_resolve.sesame_url'])