Skip to content

Commit

Permalink
Update pre-commit hook config and fix styles (open-mmlab#2182)
Browse files Browse the repository at this point in the history
* update pre-commit hook config

* fix styles conflicting with pre-commit hooks
  • Loading branch information
hellock authored Mar 1, 2020
1 parent 3839478 commit 1b5c991
Show file tree
Hide file tree
Showing 34 changed files with 78 additions and 83 deletions.
2 changes: 0 additions & 2 deletions .github/ISSUE_TEMPLATE/general_questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,3 @@ labels: ''
assignees: ''

---


44 changes: 25 additions & 19 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
repos:
- repo: https://github.com/asottile/seed-isort-config
rev: v1.9.3
hooks:
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.9
hooks:
- id: flake8
- repo: https://github.com/asottile/seed-isort-config
rev: v2.1.0
hooks:
- id: seed-isort-config
- repo: https://github.com/pre-commit/mirrors-isort
rev: v4.3.21
hooks:
- id: isort
- repo: https://github.com/pre-commit/mirrors-yapf
rev: v0.29.0
hooks:
- id: yapf
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: flake8
- id: trailing-whitespace
- id: check-yaml
- id: end-of-file-fixer
- id: requirements-txt-fixer
- repo: https://github.com/timothycrosley/isort
rev: 4.3.21
hooks:
- id: isort
- repo: https://github.com/pre-commit/mirrors-yapf
rev: v0.29.0
hooks:
- id: yapf
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: trailing-whitespace
- id: check-yaml
- id: end-of-file-fixer
- id: requirements-txt-fixer
- id: double-quote-string-fixer
- id: fix-encoding-pragma
args: ["--remove"]
3 changes: 1 addition & 2 deletions configs/cityscapes/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Common settings

- All baselines were trained using 8 GPU with a batch size of 8 (1 images per GPU) using the [linear scaling rule](https://arxiv.org/abs/1706.02677) to scale the learning rate.
- All baselines were trained using 8 GPU with a batch size of 8 (1 images per GPU) using the [linear scaling rule](https://arxiv.org/abs/1706.02677) to scale the learning rate.
- All models were trained on `cityscapes_train`, and tested on `cityscapes_val`.
- 1x training schedule indicates 64 epochs which corresponds to slightly less than the 24k iterations reported in the original schedule from the [Mask R-CNN paper](https://arxiv.org/abs/1703.06870)
- All pytorch-style pretrained backbones on ImageNet are from PyTorch model zoo.
Expand All @@ -25,4 +25,3 @@ Download links and more models with different backbones and training schemes wil

**Notes:**
- In the original paper, the mask AP of Mask R-CNN R-50-FPN is 31.5.

2 changes: 1 addition & 1 deletion configs/dcn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@
- `dconv` and `mdconv` denote (modulated) deformable convolution, `c3-c5` means adding dconv in resnet stage 3 to 5. `dpool` and `mdpool` denote (modulated) deformable roi pooling.
- The dcn ops are modified from https://github.com/chengdazhi/Deformable-Convolution-V2-PyTorch, which should be more memory efficient and slightly faster.
- (*) For R-50-FPN (dg=4), dg is short for deformable_group. This model is trained and tested on Amazon EC2 p3dn.24xlarge instance.
- **Memory, Train/Inf time is outdated.**
- **Memory, Train/Inf time is outdated.**
1 change: 0 additions & 1 deletion configs/empirical_attention/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,3 @@
| R-50 | 0010 | N | 1x | 38.2 | - |
| R-50 | 1111 | Y | 1x | 41.0 | - |
| R-50 | 0010 | Y | 1x | 40.8 | - |

4 changes: 2 additions & 2 deletions configs/foveabox/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ FoveaBox is an accurate, flexible and completely anchor-free object detection sy
Different from previous anchor-based methods, FoveaBox directly learns the object existing possibility and the bounding box coordinates without anchor reference. This is achieved by: (a) predicting category-sensitive semantic maps for the object existing possibility, and (b) producing category-agnostic bounding box for each position that potentially contains an object.

## Main Results
### Results on R50/101-FPN
### Results on R50/101-FPN

| Backbone | Style | align | ms-train| Lr schd | Mem (GB) | Train time (s/iter) | Inf time (fps) | box AP | Download |
|:---------:|:-------:|:-------:|:-------:|:-------:|:--------:|:-------------------:|:--------------:|:------:|:--------:|
Expand Down Expand Up @@ -33,4 +33,4 @@ Please consider citing our paper in your publications if the project helps your
journal={arXiv preprint arXiv:1904.03797},
year={2019}
}
```
```
1 change: 0 additions & 1 deletion configs/gcnet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,3 @@ The results on COCO 2017val are shown in the below table.
- `GC` denotes Global Context (GC) block is inserted after 1x1 conv of backbone.
- `DCN` denotes replace 3x3 conv with 3x3 Deformable Convolution in `c3-c5` stages of backbone.
- `r4` and `r16` denote ratio 4 and ratio 16 in GC block respectively.

2 changes: 1 addition & 1 deletion configs/ghm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@
| R-50-FPN | pytorch | 1x | 3.9 | 0.500 | 9.4 | 36.9 | [model](https://open-mmlab.s3.ap-northeast-2.amazonaws.com/mmdetection/models/ghm/retinanet_ghm_r50_fpn_1x_20190608-b9aa5862.pth) |
| R-101-FPN | pytorch | 1x | 5.8 | 0.625 | 8.5 | 39.0 | [model](https://open-mmlab.s3.ap-northeast-2.amazonaws.com/mmdetection/models/ghm/retinanet_ghm_r101_fpn_1x_20190608-b885b74a.pth) |
| X-101-32x4d-FPN | pytorch | 1x | 7.0 | 0.818 | 7.6 | 40.5 | [model](https://open-mmlab.s3.ap-northeast-2.amazonaws.com/mmdetection/models/ghm/retinanet_ghm_x101_32x4d_fpn_1x_20190608-ed295d22.pth) |
| X-101-64x4d-FPN | pytorch | 1x | 9.9 | 1.191 | 6.1 | 41.6 | [model](https://open-mmlab.s3.ap-northeast-2.amazonaws.com/mmdetection/models/ghm/retinanet_ghm_x101_64x4d_fpn_1x_20190608-7f2037ce.pth) |
| X-101-64x4d-FPN | pytorch | 1x | 9.9 | 1.191 | 6.1 | 41.6 | [model](https://open-mmlab.s3.ap-northeast-2.amazonaws.com/mmdetection/models/ghm/retinanet_ghm_x101_64x4d_fpn_1x_20190608-7f2037ce.pth) |
2 changes: 1 addition & 1 deletion configs/gn+ws/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ Note:

- GN+WS requires about 5% more memory than GN, and it is only 5% slower than GN.
- In the paper, a 20-23-24e lr schedule is used instead of 2x.
- The X-50-GN and X-101-GN pretrained models are also shared by the authors.
- The X-50-GN and X-101-GN pretrained models are also shared by the authors.
2 changes: 1 addition & 1 deletion configs/gn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@
**Notes:**
- (d) means pretrained model converted from Detectron, and (c) means the contributed model pretrained by [@thangvubk](https://github.com/thangvubk).
- The `3x` schedule is epoch [28, 34, 36].
- **Memory, Train/Inf time is outdated.**
- **Memory, Train/Inf time is outdated.**
2 changes: 1 addition & 1 deletion configs/guided_anchoring/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,4 @@ The results on COCO 2017 val is shown in the below table. (results on test-dev a



- In the Guided Anchoring paper, `score_thr` is set to 0.001 in Fast/Faster RCNN and 0.05 in RetinaNet for both baselines and Guided Anchoring.
- In the Guided Anchoring paper, `score_thr` is set to 0.001 in Fast/Faster RCNN and 0.05 in RetinaNet for both baselines and Guided Anchoring.
2 changes: 1 addition & 1 deletion configs/hrnet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
@article{SunZJCXLMWLW19,
title={High-Resolution Representations for Labeling Pixels and Regions},
author={Ke Sun and Yang Zhao and Borui Jiang and Tianheng Cheng and Bin Xiao
author={Ke Sun and Yang Zhao and Borui Jiang and Tianheng Cheng and Bin Xiao
and Dong Liu and Yadong Mu and Xinggang Wang and Wenyu Liu and Jingdong Wang},
journal = {CoRR},
volume = {abs/1904.04514},
Expand Down
2 changes: 1 addition & 1 deletion configs/pascal_voc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
| Backbone | Size | Style | Lr schd | Mem (GB) | Train time (s/iter) | Inf time (fps) | box AP | Download |
| :------: | :---: | :---: | :-----: | :------: | :-----------------: | :------------: | :----: | :------------------------------------------------------------------------------------------------------------------------------: |
| VGG16 | 300 | caffe | 240e | 2.5 | 0.159 | 35.7 / 53.6 | 77.5 | [model](https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/ssd300_voc_vgg16_caffe_240e_20190501-7160d09a.pth) |
| VGG16 | 512 | caffe | 240e | 4.3 | 0.214 | 27.5 / 35.9 | 80.0 | [model](https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/ssd512_voc_vgg16_caffe_240e_20190501-ff194be1.pth) |
| VGG16 | 512 | caffe | 240e | 4.3 | 0.214 | 27.5 / 35.9 | 80.0 | [model](https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/ssd512_voc_vgg16_caffe_240e_20190501-ff194be1.pth) |
6 changes: 3 additions & 3 deletions configs/reppoints/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
By [Ze Yang](https://yangze.tech/), [Shaohui Liu](http://b1ueber2y.me/), and [Han Hu](https://ancientmooner.github.io/).

We provide code support and configuration files to reproduce the results in the paper for
["RepPoints: Point Set Representation for Object Detection"](https://arxiv.org/abs/1904.11490) on COCO object detection.
["RepPoints: Point Set Representation for Object Detection"](https://arxiv.org/abs/1904.11490) on COCO object detection.

## Introduction

Expand Down Expand Up @@ -55,9 +55,9 @@ The results on COCO 2017val are shown in the table below.

**Notes:**

- `R-xx`, `X-xx` denote the ResNet and ResNeXt architectures, respectively.
- `R-xx`, `X-xx` denote the ResNet and ResNeXt architectures, respectively.
- `DCN` denotes replacing 3x3 conv with the 3x3 deformable convolution in `c3-c5` stages of backbone.
- `none` in the `anchor` column means 2-d `center point` (x,y) is used to represent the initial object hypothesis. `single` denotes one 4-d anchor box (x,y,w,h) with IoU based label assign criterion is adopted.
- `none` in the `anchor` column means 2-d `center point` (x,y) is used to represent the initial object hypothesis. `single` denotes one 4-d anchor box (x,y,w,h) with IoU based label assign criterion is adopted.
- `moment`, `partial MinMax`, `MinMax` in the `convert func` column are three functions to convert a point set to a pseudo box.
- `ms` denotes multi-scale training or multi-scale test.
- Note the results here are slightly different from those reported in the paper, due to framework change. While the original paper uses an [MXNet](https://mxnet.apache.org/) implementation, we re-implement the method in [PyTorch](https://pytorch.org/) based on mmdetection.
2 changes: 1 addition & 1 deletion configs/scratch/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@
| Mask R-CNN | R-50-FPN | pytorch | 6x | 41.0 | 37.4 | [model](https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/scratch/scratch_mask_rcnn_r50_fpn_gn_6x_20190515-96743f5e.pth) |

Note:
- The above models are trained with 16 GPUs.
- The above models are trained with 16 GPUs.
15 changes: 7 additions & 8 deletions docs/ROBUSTNESS_BENCHMARKING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ This page provides basic tutorials how to use the benchmark.

```
@article{michaelis2019winter,
title={Benchmarking Robustness in Object Detection:
title={Benchmarking Robustness in Object Detection:
Autonomous Driving when Winter is Coming},
author={Michaelis, Claudio and Mitzkus, Benjamin and
Geirhos, Robert and Rusak, Evgenia and
Bringmann, Oliver and Ecker, Alexander S. and
author={Michaelis, Claudio and Mitzkus, Benjamin and
Geirhos, Robert and Rusak, Evgenia and
Bringmann, Oliver and Ecker, Alexander S. and
Bethge, Matthias and Brendel, Wieland},
journal={arXiv:1907.07484},
year={2019}
Expand All @@ -25,7 +25,7 @@ This page provides basic tutorials how to use the benchmark.
To submit results to the benchmark please visit the [benchmark homepage](https://github.com/bethgelab/robust-detection-benchmark)

The benchmark is modelled after the [imagenet-c benchmark](https://github.com/hendrycks/robustness) which was originally
published in [Benchmarking Neural Network Robustness to Common Corruptions and Perturbations](https://arxiv.org/abs/1903.12261) (ICLR 2019) by Dan Hendrycks and Thomas Dietterich.
published in [Benchmarking Neural Network Robustness to Common Corruptions and Perturbations](https://arxiv.org/abs/1903.12261) (ICLR 2019) by Dan Hendrycks and Thomas Dietterich.

The image corruption functions are included in this library but can be installed separately using:

Expand All @@ -34,7 +34,7 @@ pip install imagecorruptions
```

Compared to imagenet-c a few changes had to be made to handle images of arbitrary size and greyscale images.
We also modfied the 'motion blur' and 'snow' corruptions to remove dependency from a linux specific library,
We also modfied the 'motion blur' and 'snow' corruptions to remove dependency from a linux specific library,
which would have to be installed separately otherwise. For details please refer to the [imagecorruptions repository](https://github.com/bethgelab/imagecorruptions).

## Inference with pretrained models
Expand Down Expand Up @@ -106,5 +106,4 @@ Cascade Mask R-CNN | R-50-FPN | pytorch | 1x| 41.2 | 20.7 | 50.2 | 3
RetinaNet | R-50-FPN | pytorch | 1x | 35.6 | 17.8 | 50.1 | - | - | - |
Hybrid Task Cascade | X-101-64x4d-FPN-DCN | pytorch | 1x | 50.6 | 32.7 | 64.7 | 43.8 | 28.1 | 64.0 |

Results may vary slightly due to the stochastic application of the corruptions.

Results may vary slightly due to the stochastic application of the corruptions.
4 changes: 2 additions & 2 deletions mmdet/datasets/pipelines/transforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@ def albu_builder(self, cfg):
Returns:
obj: The constructed object.
"""
assert isinstance(cfg, dict) and "type" in cfg
assert isinstance(cfg, dict) and 'type' in cfg
args = cfg.copy()

obj_type = args.pop("type")
obj_type = args.pop('type')
if mmcv.is_str(obj_type):
if albumentations is None:
raise RuntimeError('albumentations is not installed')
Expand Down
4 changes: 2 additions & 2 deletions mmdet/models/anchor_heads/reppoints_head.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,9 @@ def __init__(self,
self.dcn_kernel = int(np.sqrt(num_points))
self.dcn_pad = int((self.dcn_kernel - 1) / 2)
assert self.dcn_kernel * self.dcn_kernel == num_points, \
"The points number should be a square number."
'The points number should be a square number.'
assert self.dcn_kernel % 2 == 1, \
"The points number should be an odd square number."
'The points number should be an odd square number.'
dcn_base = np.arange(-self.dcn_pad,
self.dcn_pad + 1).astype(np.float64)
dcn_base_y = np.repeat(dcn_base, self.dcn_kernel)
Expand Down
6 changes: 3 additions & 3 deletions mmdet/models/backbones/resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ def __init__(self,
gcb=None,
gen_attention=None):
super(BasicBlock, self).__init__()
assert dcn is None, "Not implemented yet."
assert gen_attention is None, "Not implemented yet."
assert gcb is None, "Not implemented yet."
assert dcn is None, 'Not implemented yet.'
assert gen_attention is None, 'Not implemented yet.'
assert gcb is None, 'Not implemented yet.'

self.norm1_name, norm1 = build_norm_layer(norm_cfg, planes, postfix=1)
self.norm2_name, norm2 = build_norm_layer(norm_cfg, planes, postfix=2)
Expand Down
2 changes: 1 addition & 1 deletion mmdet/models/detectors/grid_rcnn.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ def forward_train(self,

def simple_test(self, img, img_meta, proposals=None, rescale=False):
"""Test without augmentation."""
assert self.with_bbox, "Bbox head must be implemented."
assert self.with_bbox, 'Bbox head must be implemented.'

x = self.extract_feat(img)

Expand Down
10 changes: 5 additions & 5 deletions mmdet/models/detectors/test_mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class RPNTestMixin(object):
if sys.version_info >= (3, 7):

async def async_test_rpn(self, x, img_meta, rpn_test_cfg):
sleep_interval = rpn_test_cfg.pop("async_sleep_interval", 0.025)
sleep_interval = rpn_test_cfg.pop('async_sleep_interval', 0.025)
async with completed(
__name__, "rpn_head_forward",
__name__, 'rpn_head_forward',
sleep_interval=sleep_interval):
rpn_outs = self.rpn_head(x)

Expand Down Expand Up @@ -75,10 +75,10 @@ async def async_test_bboxes(self,
x[:len(self.bbox_roi_extractor.featmap_strides)], rois)
if self.with_shared_head:
roi_feats = self.shared_head(roi_feats)
sleep_interval = rcnn_test_cfg.get("async_sleep_interval", 0.017)
sleep_interval = rcnn_test_cfg.get('async_sleep_interval', 0.017)

async with completed(
__name__, "bbox_head_forward",
__name__, 'bbox_head_forward',
sleep_interval=sleep_interval):
cls_score, bbox_pred = self.bbox_head(roi_feats)

Expand Down Expand Up @@ -191,7 +191,7 @@ async def async_test_mask(self,
sleep_interval = 0.035
async with completed(
__name__,
"mask_head_forward",
'mask_head_forward',
sleep_interval=sleep_interval):
mask_pred = self.mask_head(mask_feats)
segm_result = self.mask_head.get_seg_masks(
Expand Down
4 changes: 2 additions & 2 deletions mmdet/models/detectors/two_stage.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ async def async_simple_test(self,
proposals=None,
rescale=False):
"""Async test without augmentation."""
assert self.with_bbox, "Bbox head must be implemented."
assert self.with_bbox, 'Bbox head must be implemented.'
x = self.extract_feat(img)

if proposals is None:
Expand Down Expand Up @@ -294,7 +294,7 @@ async def async_simple_test(self,

def simple_test(self, img, img_meta, proposals=None, rescale=False):
"""Test without augmentation."""
assert self.with_bbox, "Bbox head must be implemented."
assert self.with_bbox, 'Bbox head must be implemented.'

x = self.extract_feat(img)

Expand Down
6 changes: 3 additions & 3 deletions mmdet/ops/dcn/src/deform_conv_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ int deform_conv_forward_cuda(at::Tensor input, at::Tensor weight,
shape_check(input, offset, NULL, weight, kH, kW, dH, dW, padH, padW,
dilationH, dilationW, group, deformable_group);
at::DeviceGuard guard(input.device());

input = input.contiguous();
offset = offset.contiguous();
weight = weight.contiguous();
Expand Down Expand Up @@ -386,7 +386,7 @@ int deform_conv_backward_parameters_cuda(
shape_check(input, offset, &gradOutput, gradWeight, kH, kW, dH, dW, padH,
padW, dilationH, dilationW, group, deformable_group);
at::DeviceGuard guard(input.device());

input = input.contiguous();
offset = offset.contiguous();
gradOutput = gradOutput.contiguous();
Expand Down Expand Up @@ -497,7 +497,7 @@ void modulated_deform_conv_cuda_forward(
AT_CHECK(input.is_contiguous(), "input tensor has to be contiguous");
AT_CHECK(weight.is_contiguous(), "weight tensor has to be contiguous");
at::DeviceGuard guard(input.device());

const int batch = input.size(0);
const int channels = input.size(1);
const int height = input.size(2);
Expand Down
2 changes: 1 addition & 1 deletion mmdet/ops/masked_conv/src/masked_conv2d_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,4 @@ PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
"masked_im2col forward (CUDA)");
m.def("masked_col2im_forward", &masked_col2im_forward_cuda,
"masked_col2im forward (CUDA)");
}
}
2 changes: 1 addition & 1 deletion mmdet/ops/nms/src/nms_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ at::Tensor nms(const at::Tensor& dets, const float threshold) {

PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
m.def("nms", &nms, "non-maximum suppression");
}
}
2 changes: 1 addition & 1 deletion mmdet/utils/collect_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ def collect_env():
return env_info


if __name__ == "__main__":
if __name__ == '__main__':
for name, val in collect_env().items():
print('{}: {}'.format(name, val))
1 change: 0 additions & 1 deletion mmdet/utils/contextmanagers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# coding: utf-8
import asyncio
import contextlib
import logging
Expand Down
4 changes: 2 additions & 2 deletions mmdet/utils/profiling.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def profile_time(trace_name,
end.synchronize()
cpu_time = (cpu_end - cpu_start) * 1000
gpu_time = start.elapsed_time(end)
msg = "{} {} cpu_time {:.2f} ms ".format(trace_name, name,
msg = '{} {} cpu_time {:.2f} ms '.format(trace_name, name,
cpu_time)
msg += "gpu_time {:.2f} ms stream {}".format(gpu_time, stream)
msg += 'gpu_time {:.2f} ms stream {}'.format(gpu_time, stream)
print(msg, end_stream)
1 change: 0 additions & 1 deletion mmdet/utils/util_mixins.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
"""
This module defines the :class:`NiceRepr` mixin class, which defines a
``__repr__`` and ``__str__`` method that only depend on a custom ``__nice__``
Expand Down
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
-r requirements/runtime.txt
-r requirements/build.txt
-r requirements/optional.txt
-r requirements/runtime.txt
-r requirements/tests.txt
-r requirements/build.txt
Loading

0 comments on commit 1b5c991

Please sign in to comment.