Skip to content
Commits on Source (16)
......@@ -2,7 +2,7 @@ version: 2
jobs:
build:
docker:
- image: circleci/python:3.6.2
- image: circleci/python:3
environment:
# The github organization or username of the repository which hosts the
# project and documentation.
......
comment: off
coverage:
# number of digits after decimal point
precision: 2
# round coverage value down to `precision`
round: down
status:
# master coverage
project:
default:
# Commits pushed to master should not make the overall
# project coverage decrease by more than 1%:
# auto: use coverage from base commit
target: auto
# Allow coverage to drop by the following and still be success
threshold: 1%
# PR coverage
patch:
default:
# Be tolerant on slight code coverage diff on PRs to limit
# noisy red coverage status on github PRs.
# Note The coverage stats are still uploaded
# to codecov so that PR reviewers can see uncovered lines
# in the github diff if they install the codecov browser
# extension:
# https://github.com/codecov/browser-extension
target: auto
threshold: 1%
# Ignore these paths when calculating the coverage
ignore:
- "pydicom/tests"
- "pydicom/benchmarks"
# Pull request comments, use `comment: off` to disable
comment: off
<!-- Instructions For Filing a Bug: https://github.com/pydicom/pydicom/blob/master/CONTRIBUTING.md#filing-bugs -->
#### Description
<!-- Example: Attribute Error thrown when printing (0x0010, 0x0020) patient Id> 0-->
#### Steps/Code to Reproduce
<!--
Example:
```py
from io import BytesIO
from pydicom import dcmread
bytestream = b'\x02\x00\x02\x00\x55\x49\x16\x00\x31\x2e\x32\x2e\x38\x34\x30\x2e\x31' \
b'\x30\x30\x30\x38\x2e\x35\x2e\x31\x2e\x31\x2e\x39\x00\x02\x00\x10\x00' \
b'\x55\x49\x12\x00\x31\x2e\x32\x2e\x38\x34\x30\x2e\x31\x30\x30\x30\x38' \
b'\x2e\x31\x2e\x32\x00\x20\x20\x10\x00\x02\x00\x00\x00\x01\x00\x20\x20' \
b'\x20\x00\x06\x00\x00\x00\x4e\x4f\x52\x4d\x41\x4c'
fp = BytesIO(bytestream)
ds = dcmread(fp, force=True)
print(ds.PatientID)
```
If the code is too long, feel free to put it in a public gist and link
it in the issue: https://gist.github.com
When possible use pydicom testing examples to reproduce the errors. Otherwise, provide
an anonymous version of the data in order to replicate the errors.
-->
#### Expected Results
<!-- Please paste or describe the expected results.
Example: No error is thrown and the name of the patient is printed.-->
#### Actual Results
<!-- Please paste or specifically describe the actual output or traceback.
(Use %xmode to deactivate ipython's trace beautifier)
Example: ```AttributeError: 'FileDataset' object has no attribute 'PatientID'```
-->
#### Versions
<!--
Please run the following snippet and paste the output below.
import platform; print(platform.platform())
import sys; print("Python", sys.version)
import pydicom; print("pydicom", pydicom.__version__)
-->
<!-- Thanks for contributing! -->
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Expected behavior**
What you expected to happen (please include a reference to the DICOM standard
if relevant).
**Steps To Reproduce**
How to reproduce the issue. Please include a minimum working code sample, the
traceback (if any) and the anonymized DICOM dataset (if relevant).
**Your environment**
Please run the following and paste the output.
```bash
$ python -c "import platform; print(platform.platform())"
$ python -c "import sys; print('Python ', sys.version)"
$ python -c "import pydicom; print('pydicom ', pydicom.__version__)"
```
---
name: Documentation issue
about: For issues with the documentation, no matter how small
title: ''
labels: Documentation
assignees: ''
---
**Link to the documentation**
A link to the documentation page containing the issue, ideally from the
[development version](https://pydicom.github.io/pydicom/dev/).
**Describe the issue**
A clear and concise description of what the issue is.
---
name: Feature request
about: Suggest an enhancement for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Example: I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
---
name: Other issues
about: For all other issues (help needed, general query, discussion, etc).
title: ''
labels: question
assignees: ''
---
---
name: Pixel Data issue
about: For issues related to Pixel Data or one of the bulk data handlers
title: ''
labels: pixel-data
assignees: ''
---
**Describe the issue**
A clear and concise description of what the issue is. It is very helpful if you
can upload screenshots showing the issue.
**Expected behavior**
What you expected to happen.
**Steps To Reproduce**
How to reproduce the issue. Please include:
1. A minimum working code sample
2. The traceback (if one occurred)
3. Which of the following packages are available and their versions:
* Numpy
* Pillow
* JPEG-LS
* GDCM
4. The anonymized DICOM dataset (if possible).
**Your environment**
Please run the following and paste the output.
```bash
$ python -c "import platform; print(platform.platform())"
$ python -c "import sys; print('Python ', sys.version)"
$ python -c "import pydicom; print('pydicom ', pydicom.__version__)"
```
<!--
Thanks for contributing a pull request! Please ensure you have taken a look at
the contribution guidelines: https://github.com/pydicom/pydicom/blob/master/CONTRIBUTING.md#contributing-pull-requests
Please prefix your PR title with [WIP] for PRs that are in progress and change
to [MRG] when you consider them ready for final review.
-->
#### Reference Issue
<!-- Example: Fixes #1234 -->
#### Describe the changes
The related issue or a description of the bug or feature that this PR addresses.
#### What does this implement/fix? Explain your changes.
<!--
Please summarize the key points of the reference issue, problem or contribution
to facilitate reviewing task. Of course reviewers can always refer to the
original issue but facilitating the reviewing process is much appreciated.
-->
#### Any other comments?
<!--
-->
<!--
Please be aware that we are a loose team of volunteers so patience is
necessary; assistance handling other issues is very welcome. We value
all user contributions, no matter how minor they are. If we are slow to
review, either the pull request needs some benchmarking, tinkering,
convincing, etc. or more likely the reviewers are simply busy. In either
case, we ask for your understanding during the review process.
Thanks for contributing!
-->
#### Tasks
- [ ] Unit tests added that reproduce the issue or prove feature is working
- [ ] Fix or feature added
- [ ] Documentation updated (if relevant)
- [ ] No warnings during build
- [ ] Preview link (CircleCI -> Artifacts -> `[...]/_build/html/index.html`)
- [ ] Unit tests passing and overall coverage the same or better
......@@ -30,6 +30,9 @@ py3source
# Docs build
docs/_build/*
doc/_build/*
doc/auto_examples/*
doc/generated/*
doc/reference/generated/*
# coverage.py files
.coverage
......@@ -42,3 +45,9 @@ doc/_build/*
*.ipynb
.ipynb_checkpoints/*
tests/test_pixel.py
# mypy
pydicom/.mypy_cache/*
# vscode
.vscode/*
......@@ -23,13 +23,6 @@ matrix:
- env: DISTRIB="conda" PYTHON_VERSION="2.7" NUMPY=true PILLOW=both JPEG_LS=true GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="2.7" NUMPY=true PILLOW=both JPEG_LS=true GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.4" NUMPY=false PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.4" NUMPY=true PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.4" NUMPY=true PILLOW=false JPEG_LS=false GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.4" NUMPY=true PILLOW=both JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.4" NUMPY=true PILLOW=both JPEG_LS=true GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.4" NUMPY=true PILLOW=both JPEG_LS=true GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.5" NUMPY=false PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.5" NUMPY=true PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.5" NUMPY=true PILLOW=false JPEG_LS=false GDCM=true
......@@ -43,16 +36,24 @@ matrix:
- env: DISTRIB="conda" PYTHON_VERSION="3.6" NUMPY=true PILLOW=both JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.6" NUMPY=true PILLOW=both JPEG_LS=true GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.6" NUMPY=true PILLOW=both JPEG_LS=true GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.6" NUMPY=true PILLOW=false JPEG_LS=false GDCM=old
- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=false PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=true PILLOW=false JPEG_LS=false GDCM=false
#- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=true PILLOW=false JPEG_LS=false GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=true PILLOW=both JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=true PILLOW=both JPEG_LS=true GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.7.3" NUMPY=true PILLOW=both JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.7.3" NUMPY=true PILLOW=both JPEG_LS=true GDCM=false
#- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=true PILLOW=both JPEG_LS=true GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.8" NUMPY=false PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.8" NUMPY=true PILLOW=false JPEG_LS=false GDCM=false
# - env: DISTRIB="conda" PYTHON_VERSION="3.8" NUMPY=true PILLOW=false JPEG_LS=false GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="3.8" NUMPY=true PILLOW=both JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.8" NUMPY=true PILLOW=both JPEG_LS=true GDCM=false
# - env: DISTRIB="conda" PYTHON_VERSION="3.8" NUMPY=true PILLOW=both JPEG_LS=true GDCM=true
- env: DISTRIB="conda" PYTHON_VERSION="2.7" NUMPY=true PILLOW=jpeg JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.7" NUMPY=true PILLOW=jpeg JPEG_LS=false GDCM=false
- env: DISTRIB="conda" PYTHON_VERSION="3.7.3" NUMPY=true PILLOW=jpeg JPEG_LS=false GDCM=false
- env: DISTRIB="ubuntu" PYTHON_VERSION="2.7" NUMPY=false PILLOW=false JPEG_LS=false GDCM=false
- env: DISTRIB="ubuntu" PYTHON_VERSION="2.7" NUMPY=true PILLOW=false JPEG_LS=false GDCM=false
......@@ -63,4 +64,6 @@ script:
- py.test --cov=pydicom -r sx --pyargs pydicom
after_success:
- codecov
# curl times out sometimes, so drop the connection timeout but retry more often
- bash <(curl --connect-timeout 10 --retry 10 --retry-max-time 0 https://codecov.io/bash) ||
(sleep 30 && bash <(curl --connect-timeout 10 --retry 10 --retry-max-time 0 https://codecov.io/bash))
pydicom
*pydicom*
=======
[![Build Status](https://travis-ci.org/pydicom/pydicom.svg?branch=master)](https://travis-ci.org/pydicom/pydicom)
......@@ -7,20 +7,21 @@ pydicom
[![codecov](https://codecov.io/gh/pydicom/pydicom/branch/master/graph/badge.svg)](https://codecov.io/gh/pydicom/pydicom)
[![Python version](https://img.shields.io/pypi/pyversions/pydicom.svg)](https://img.shields.io/pypi/pyversions/pydicom.svg)
[![PyPI version](https://badge.fury.io/py/pydicom.svg)](https://badge.fury.io/py/pydicom)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1291986.svg)](https://doi.org/10.5281/zenodo.1291986)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3333768.svg)](https://doi.org/10.5281/zenodo.3333768)
[![Gitter](https://badges.gitter.im/pydicom/Lobby.svg)](https://gitter.im/pydicom/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
pydicom is a pure python package for working with [DICOM](http://medical.nema.org/) files.
*pydicom* is a pure python package for working with [DICOM](http://medical.nema.org/) files.
It was made for inspecting and modifying DICOM data in an easy "pythonic" way.
The modifications can be written again to a new file.
As a pure python package, pydicom can run anywhere python runs without any other requirements,
As a pure python package, *pydicom* can run anywhere python runs without any other requirements,
although [NumPy](http://www.numpy.org) is needed if manipulating pixel data.
pydicom is not a DICOM server, and is not primarily about viewing images.
*pydicom* is not a DICOM server, and is not primarily about viewing images.
It is designed to let you
manipulate data elements in DICOM files with python code.
Limitations -- for files with _compressed_ pixel data, pydicom can decompress
Limitations -- for files with _compressed_ pixel data, *pydicom* can decompress
it (with additional libraries installed) and allow you to manipulate the data,
but can only store changed pixel data as uncompressed. Files can always be
read and saved (including compressed pixel data that has not been modified),
......@@ -29,7 +30,7 @@ but once decompressed, modified pixel data cannot be compressed again.
Documentation
-------------
pydicom documentation is available on GitHub Pages both for the [development
*pydicom* documentation is available on GitHub Pages both for the [development
(master) version](https://pydicom.github.io/pydicom/dev) and for the
[released version](https://pydicom.github.io/pydicom/stable). The
documentation for [the previous 0.9.9 version](https://pydicom.github.io/pydicom/0.9/)
......@@ -38,8 +39,8 @@ is still there for reference.
See [Getting Started](https://pydicom.github.io/pydicom/stable/getting_started.html)
for installation and basic information, and the
[User Guide](https://pydicom.github.io/pydicom/stable/pydicom_user_guide.html)
for an overview of how to use the pydicom library.
To contribute to pydicom, read our [contribution guide](https://github.com/pydicom/pydicom/blob/master/CONTRIBUTING.md).
To contribute an example or extension of pydicom that does not belong with
for an overview of how to use the *pydicom* library.
To contribute to *pydicom*, read our [contribution guide](https://github.com/pydicom/pydicom/blob/master/CONTRIBUTING.md).
To contribute an example or extension of *pydicom* that does not belong with
the core software, see our contribution repository,
[contrib-pydicom](https://www.github.com/pydicom/contrib-pydicom).
......@@ -9,10 +9,6 @@ environment:
PYTHON_VERSION: "2.7.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Miniconda34-x64"
PYTHON_VERSION: "3.4.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Miniconda35-x64"
PYTHON_VERSION: "3.5.x"
PYTHON_ARCH: "64"
......@@ -21,19 +17,29 @@ environment:
PYTHON_VERSION: "3.6.x"
PYTHON_ARCH: "64"
- PYTHON: "C:\\Miniconda37-x64"
PYTHON_VERSION: "3.7.x"
PYTHON_ARCH: "64"
install:
# Prepend miniconda installed Python to the PATH of this build
# Add Library/bin directory to fix issue
# https://github.com/conda/conda/issues/1753
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON%\\Library\\bin;%PATH%"
# Check that we have the expected version and architecture for Python
- "python --version"
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""
# Installed prebuilt dependencies from conda
- "conda install pip numpy nose wheel pytest matplotlib -y -q"
- "conda install -y -q setuptools"
- "conda --version"
# the free channel is only needed for conda 4.7 and Python 2.7
# Miniconda 34 and 35 use an earlier version of conda (4.3)
- "IF '%PYTHON_VERSION%'=='2.7.x' conda config --set restore_free_channel true"
- "conda install pip numpy nose wheel pytest matplotlib -y -q"
- "pip install nose-timer nose-exclude"
# Install other pydicom dependencies
......
......@@ -44,7 +44,12 @@ def _linkcode_resolve(domain, info, package, url_fmt, revision):
# Python 2 only
class_name = class_name.encode('utf-8')
module = __import__(info['module'], fromlist=[class_name])
try:
obj = attrgetter(info['fullname'])(module)
except AttributeError as exc:
# For some reason DataElement.is_undefined_length causes an exception
pass
try:
fn = inspect.getsourcefile(obj)
......
......@@ -20,6 +20,8 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Slightly adapted to add support for pull requests.
"""
from docutils import nodes, utils
......@@ -34,21 +36,20 @@ def user_role(name, rawtext, text, lineno,
inliner, options=None, content=None):
"""Sphinx role for linking to a user profile. Defaults to linking to
Github profiles, but the profile URIS can be configured via the
``issues_user_uri`` config value.
``ref_user_uri`` config value.
Example: ::
:user:`sloria`
"""
options = options or {}
content = content or []
has_explicit_title, title, target = split_explicit_title(text)
target = utils.unescape(target).strip()
title = utils.unescape(title).strip()
config = inliner.document.settings.env.app.config
if config.issues_user_uri:
ref = config.issues_user_uri.format(user=target)
ref = config.ref_user_uri.format(user=target)
else:
ref = 'https://github.com/{0}'.format(target)
if has_explicit_title:
......@@ -60,54 +61,74 @@ def user_role(name, rawtext, text, lineno,
return [link], []
def _make_issue_node(issue_no, config, options=None):
def _make_ref_node(ref_type, ref_no, config, uri=None, options=None):
options = options or {}
if issue_no not in ('-', '0'):
if config.issues_uri:
ref = config.issues_uri.format(issue=issue_no)
elif config.issues_github_path:
ref = 'https://github.com/{0}/issues/{1}'.format(
config.issues_github_path, issue_no
if ref_no not in ('-', '0'):
if uri:
ref = uri.format(ref_type=ref_type, ref_no=ref_no)
elif config.ref_github_path:
ref = 'https://github.com/{0}/{1}/{2}'.format(
config.ref_github_path, ref_type, ref_no
)
issue_text = '#{0}'.format(issue_no)
link = nodes.reference(text=issue_text, refuri=ref, **options)
ref_text = '#{0}'.format(ref_no)
link = nodes.reference(text=ref_text, refuri=ref, **options)
else:
link = None
return link
def _ref_role(ref_type, text, inliner, options=None):
"""Sphinx role for linking to a pull request. Must have
`pr_uri` or `issues_github_path` configured in ``conf.py``.
"""
options = options or {}
ref_nos = [each.strip() for each in utils.unescape(text).split(',')]
config = inliner.document.settings.env.app.config
ret = []
for i, ref_no in enumerate(ref_nos):
node = _make_ref_node(ref_type, ref_no, config, options=options)
ret.append(node)
if i != len(ref_nos) - 1:
sep = nodes.raw(text=', ', format='html')
ret.append(sep)
return ret, []
def issue_role(name, rawtext, text, lineno,
inliner, options=None, content=None):
"""Sphinx role for linking to an issue. Must have
`issues_uri` or `issues_github_path` configured in ``conf.py``.
`ref_uri` or `ref_github_path` configured in ``conf.py``.
Examples: ::
:issue:`123`
:issue:`42,45`
"""
options = options or {}
content = content or []
issue_nos = [each.strip() for each in utils.unescape(text).split(',')]
config = inliner.document.settings.env.app.config
ret = []
for i, issue_no in enumerate(issue_nos):
node = _make_issue_node(issue_no, config, options=options)
ret.append(node)
if i != len(issue_nos) - 1:
sep = nodes.raw(text=', ', format='html')
ret.append(sep)
return ret, []
return _ref_role('issues', text, inliner, options)
def pull_request_role(name, rawtext, text, lineno,
inliner, options=None, content=None):
"""Sphinx role for linking to a pull request. Must have
`ref_uri` or `ref_github_path` configured in ``conf.py``.
Examples: ::
:pull_request:`123`
:pull_request:`42,45`
"""
return _ref_role('pull', text, inliner, options)
def setup(app):
# Format template for issues URI
# e.g. 'https://github.com/sloria/marshmallow/issues/{issue}
app.add_config_value('issues_uri', default=None, rebuild='html')
# Format template for issues/pull request URI
# e.g. 'https://github.com/sloria/marshmallow/{ref_type}/{ref_no}
app.add_config_value('ref_uri', default=None, rebuild='html')
# Shortcut for Github, e.g. 'sloria/marshmallow'
app.add_config_value('issues_github_path', default=None, rebuild='html')
app.add_config_value('ref_github_path', default=None, rebuild='html')
# Format template for user profile URI
# e.g. 'https://github.com/{user}'
app.add_config_value('issues_user_uri', default=None, rebuild='html')
app.add_config_value('ref_user_uri', default=None, rebuild='html')
app.add_role('issue', issue_role)
app.add_role('pull_request', pull_request_role)
app.add_role('user', user_role)
......@@ -33,6 +33,10 @@ if [[ "$DISTRIB" == "conda" ]]; then
chmod +x miniconda.sh && ./miniconda.sh -b -p $MINICONDA_PATH
export PATH=$MINICONDA_PATH/bin:$PATH
conda update --yes conda
conda --version
# the free channel is needed for Python 3.4 and can probably be skipped
# after Python 3.4 is no longer used
conda config --set restore_free_channel true
# Configure the conda environment and put it in the path using the
# provided versions
......@@ -45,12 +49,12 @@ if [[ "$DISTRIB" == "conda" ]]; then
if [[ "$PILLOW" == "both" ]]; then
conda install --yes -c conda-forge openjpeg jpeg
pip install pillow --global-option="build_ext" --global-option="--enable-jpeg2000"
python -c "from PIL import _imaging; print('JPEG plugin:', hasattr(_imaging, 'jpeg_decoder'))"
python -c "from PIL import _imaging; print('JPEG2k plugin:', hasattr(_imaging, 'jpeg2k_decoder'))"
python -c "from PIL.features import check_codec; print('JPEG plugin:', check_codec('jpg'))"
python -c "from PIL.features import check_codec; print('JPEG2k plugin:', check_codec('jpg_2000'))"
elif [[ "$PILLOW" == "jpeg" ]]; then
pip install pillow --global-option="build_ext" --global-option="--disable-jpeg2000"
python -c "from PIL import _imaging; print('JPEG plugin:', hasattr(_imaging, 'jpeg_decoder'))"
python -c "from PIL import _imaging; print('JPEG2k plugin:', hasattr(_imaging, 'jpeg2k_decoder'))"
python -c "from PIL.features import check_codec; print('JPEG plugin:', check_codec('jpg'))"
python -c "from PIL.features import check_codec; print('JPEG2k plugin:', check_codec('jpg_2000'))"
fi
if [[ "$JPEG_LS" == "true" ]]; then
conda install --yes cython
......@@ -59,9 +63,11 @@ if [[ "$DISTRIB" == "conda" ]]; then
fi
if [[ "$GDCM" == "true" ]]; then
conda install --yes -c conda-forge gdcm
elif [[ "$GDCM" == "old" ]]; then
conda install --yes -c conda-forge gdcm=2.8.4
fi
# Install nose-timer via pip
pip install nose-timer codecov
pip install nose-timer
elif [[ "$DISTRIB" == "ubuntu" ]]; then
# At the time of writing numpy 1.9.1 is included in the travis
......@@ -71,7 +77,7 @@ elif [[ "$DISTRIB" == "ubuntu" ]]; then
# Create a new virtualenv using system site packages for python, numpy
virtualenv --system-site-packages testvenv
source testvenv/bin/activate
pip install nose nose-timer pytest pytest-cov codecov setuptools
pip install nose nose-timer pytest pytest-cov setuptools
if [[ "$NUMPY" == "true" ]]; then
pip install --upgrade --force-reinstall numpy
fi
......@@ -100,9 +106,10 @@ elif [[ "$DISTRIB" == "pypy" ]]; then
# install pip
python -m ensurepip --upgrade
if [[ "$NUMPY" == "true" ]]; then
python -m pip install cython numpy
# see #794 - avoid PyPy bug with newer NumPy versions
python -m pip install cython numpy==1.15.4
fi
python -m pip install nose nose-timer pytest pytest-cov codecov setuptools
python -m pip install nose nose-timer pytest pytest-cov setuptools
fi
python --version
......
pydicom (1.4.1-1) unstable; urgency=medium
* Team upload.
* New upstream version
Closes: #948877
* Take over maintenance in Debian Med team
* Repository layout follows team defaults - so no gbp.conf needed
* debhelper-compat 10 (routine-update)
* Standards-Version: 4.5.0
* d/control: Fix formatting by `cme fix dpkg-control`
* Testsuite: autopkgtest-pkg-python (routine-update)
* Build-Depends: dh-python
* Drop Python2 support
Closes: #937427
* Fix permissions of *.dcm files
-- Andreas Tille <tille@debian.org> Wed, 22 Jan 2020 13:57:10 +0100
pydicom (1.2.1-1) unstable; urgency=medium
* New upstream release
......
Source: pydicom
Maintainer: NeuroDebian Team <team@neuro.debian.net>
Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
Uploaders: Yaroslav Halchenko <debian@onerussian.com>,
Michael Hanke <mih@debian.org>
Section: python
Testsuite: autopkgtest-pkg-python
Priority: optional
Build-Depends: debhelper (>= 9~),
python-all,
Build-Depends: debhelper-compat (= 10),
dh-python,
python3-all,
python-pytest,
python3-pytest,
python-setuptools,
python3-setuptools,
python-numpy,
python3-numpy,
python-docutils,
python-pil,
python3-docutils,
python3-pil,
python3-sphinx,
python3-sphinx-gallery,
python3-sphinx-rtd-theme,
python3-matplotlib,
python3-numpydoc,
Standards-Version: 4.1.3
Vcs-Browser: https://salsa.debian.org/neurodebian-team/pydicom
Vcs-Git: https://salsa.debian.org/neurodebian-team/pydicom.git
python3-numpydoc
Standards-Version: 4.5.0
Vcs-Browser: https://salsa.debian.org/med-team/pydicom
Vcs-Git: https://salsa.debian.org/med-team/pydicom.git
Homepage: https://pydicom.github.io
Package: python-pydicom
Architecture: all
Depends: ${python:Depends},
${misc:Depends}
Recommends: python-numpy,
python-pil,
Suggests: python-matplotlib,
python-gdcm,
Replaces: python-dicom (<< 1~)
Provides: python-dicom
Breaks: python-dicom (<< 1~)
Description: DICOM medical file reading and writing (Python 2)
pydicom is a pure Python module for parsing DICOM files. DICOM is a
standard (http://medical.nema.org) for communicating medical images
and related information such as reports and radiotherapy objects.
.
pydicom makes it easy to read DICOM files into natural pythonic
structures for easy manipulation. Modified datasets can be written
again to DICOM format files.
.
This package installs the module for Python 2.
Package: python3-pydicom
Architecture: all
Depends: ${python3:Depends},
${misc:Depends}
Recommends: python3-numpy,
python3-pil,
python3-pil
Suggests: python3-matplotlib,
python3-gdcm,
Replaces: python3-dicom (<< 1~)
Provides: python3-dicom
python3-gdcm
Breaks: python3-dicom (<< 1~)
Provides: python3-dicom
Replaces: python3-dicom (<< 1~)
Description: DICOM medical file reading and writing (Python 3)
pydicom is a pure Python module for parsing DICOM files. DICOM is a
standard (http://medical.nema.org) for communicating medical images
......@@ -75,9 +50,9 @@ Architecture: all
Section: doc
Depends: ${sphinxdoc:Depends},
${misc:Depends}
Replaces: python-dicom-doc (<< 1~)
Provides: python-dicom-doc
Breaks: python-dicom-doc (<< 1~)
Provides: python-dicom-doc
Replaces: python-dicom-doc (<< 1~)
Description: DICOM medical file reading and writing (documentation)
pydicom is a pure Python module for parsing DICOM files. DICOM is a
standard (http://medical.nema.org) for communicating medical images
......@@ -89,18 +64,10 @@ Description: DICOM medical file reading and writing (documentation)
.
This package contains the documentation.
Package: python-dicom
Depends: python-pydicom, ${misc:Depends}
Architecture: all
Priority: optional
Section: oldlibs
Description: transitional package for python-pydicom
This is a transitional package. It can safely be removed.
Package: python3-dicom
Depends: python3-pydicom, ${misc:Depends}
Architecture: all
Priority: optional
Section: oldlibs
Depends: python3-pydicom,
${misc:Depends}
Description: transitional package for python3-pydicom
This is a transitional package. It can safely be removed.
[DEFAULT]
upstream-branch = upstream
debian-branch = debian
pristine-tar = True