Creating multi-modal (bi-modal) detectors / pipelines for them

I adapted Faster R-CNN to be bi-modal (colour images and an aligned second 3-channel 2D sensor data). For this I duplicated the ResNet50-backbone and use a splitted forward-function. Given input x for the function is a list of two elements. x[0] is forwarded into the first ResNet50-backbone, x[1] is forwarded into the second branch. Afterwards is fusioned by an element-wise max-operation and then continued as regular Faster R-CNN.
The model structure created looks as expected, loading an adapted checkpoint works as well, but running images through the network does not work as the pipeline is not made for two images per instance and interprets it as a batch. Adapting the first-level methods (e.g. inference_detector()) does not work as the problem is deeply rooted inside the base-code of the models. So I figured out that I have to adapt the training- and test-pipelines.
But the custom pipeline tutorial doesn't explain how  I can achieve that or at least I can't derive it from its content. During research in the issues here I came across issue #1861 where it was asked how to change backbone input from 3 to 6 channels. This seems to be a suitable solution for my problem to have [6, width, height]-shaped image tensors as input instead of [2, 3, width, height]. During the forward-function of my custom model I could then split it into 2 [3, 320, 240] tensors and use it as before and the batch-problem would not occur.
But neither in this issue nor in #6977 nor #4182 I can find a description about what to do and I haven't found the solution for creating such a custom pipeline by myself. That would be a great help. I also don't know how the img_norm_cfg get its values and how I would need to adopt this for 6 channels:
img_norm_cfg = dict(     mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
The annotations-json includes only the colour images (and annotations only refer to colour images therefore), but they are working for both modals as they are aligned and a pixel in one modal refers to the same point in the real world as the pixel at the same position in the second modal image.
Summary:
The new custom-backbone for 2 three-channel 2D-data is registered in registry and the adapted model is built by only adapting the backbone-dict in the config. Checkpoints are adapted accordingly.
Data set is a custom data set with 2 same-sized images per instance.
The reason for it not working is most likely an un-adapted pipeline config which I don't know how to customize correctly.

LoadMultiChannelImageFromFiles will load both image files and stack them.  This will likely be compatible with some pipeline functions, but not others.
There might be some functions like resize that are compatible with a [h, w, 6] shape, but not [h, w, 3, 2] so you may want to change stack to concatenate in LoadMultiChannelImageFromFiles.
Some functions like `PhotoMetricDistortion' will require a [h, w, 3] input.  If you are using function with this requirement an easy solution would be to decorate with a function that splits the 6 channel image into two 3 channel images and sends the appropriate one through the transform function then concatenates them after.

Thank you, I'll look into it and see if it works. Is there an overview of possible selections for Load-types? I only know some because of examples or model configs and following them through references, code and imports to their actual definition/implementation to find others can be a bit tedious sometimes.. ^^

Yes, that works mostly. But now I'm encountering an error with the FileClient where I can't find the reason for it (loading.py seems to be the place where the error roots, as explained further below). Base code for forwarding the two images:
from mmdet.apis import inference_detector, show_result_pyplot
from mmdet.datasets.pipelines import LoadMultiChannelImageFromFiles
import os.path as osp

instance_ = {'img_prefix': '/content/drive/MyDrive/test_data',
            'img_info': {'filename': ['filename1.png', 'filename2.png']}}
transform = LoadMultiChannelImageFromFiles()
instance_ = transform(instance_)
result = inference_detector(model, instance_)

The last line results in "FileNotFoundError: [Errno 2] No such file or directory: 'img_prefix'" via:
[<ipython-input-32-053cf46cbb3c>](https://localhost:8080/#) in inference_detector(model, imgs)
---> 50         data = test_pipeline(data)

[/content/mmdetection/mmdet/datasets/pipelines/compose.py](https://localhost:8080/#) in __call__(self, data)
---> 41             data = t(data)  # t being one in self.transforms

[/content/mmdetection/mmdet/datasets/pipelines/loading.py](https://localhost:8080/#) in __call__(self, results)
--> 176             img_bytes = self.file_client.get(name)

[/usr/local/lib/python3.7/dist-packages/mmcv/fileio/file_client.py](https://localhost:8080/#) in get(self, filepath)
-> 1014         return self.client.get(filepath)

[/usr/local/lib/python3.7/dist-packages/mmcv/fileio/file_client.py](https://localhost:8080/#) in get(self, filepath)
--> 535         with open(filepath, 'rb') as f:

So filepath seems to equal 'img_prefix'. But when extracting the loc right before the call in loading.py (lines 166-170) and executing it manually after the transform()-call in the first part of code above I get the right paths and files are shown as images when I open them with plt or similar:
instance_ = {'img_prefix': '/content/drive/MyDrive/test_data',
            'img_info': {'filename': ['filename1.png', 'filename2.png']}}
transform = LoadMultiChannelImageFromFiles()
instance_ = transform(instance_)
if instance_['img_prefix'] is not None:
            filename = [
                osp.join(instance_['img_prefix'], fname)
                for fname in ergebnis['img_info']['filename']
            ]
            print(filename)

--> ['/content/drive/MyDrive/test_data/filename1.png', '/content/drive/MyDrive/test_data/filename2.png']
The variable 'name' in loading.py is one element when iterating through the 'filename'-list. Do you have any clue how the dict-key 'img_prefix' becomes filepath when the joining of the paths is actually working?
And for the sake of completeness self.transform is only
test_pipeline = [
    dict(type='LoadMultiChannelImageFromFiles')
]

I'm not sure if this is actually necessary or if doing the transform by myself before calling the inference_detector is not the right way of handling the data.

Origin of the error is in inference.py lines 129-131
 else:
            # add information into dict
            data = dict(img_info=dict(filename=img), img_prefix=None)

img_prefix is set to None, so setting my path earlier is undone.
This leads in loading.py lines 64 ff. to go into the else block instead of the if block:
if results['img_prefix'] is not None:
            filename = osp.join(results['img_prefix'],
                                results['img_info']['filename'])
else:
            filename = results['img_info']['filename']

The actual paths could be found at result['img_info']['filename']['img_info']['filename'], if I add the full path into img_info when assembling the instance.
Therefore the dict is somehow nested too much by the firstly mentioned else-block. On the other hand, when I only take the absolute file paths as 2D-list of data I surpass it and run into a recursion error of collate (Sequence and Mapping block):
instance_ = [['/path/to/file/filename1.png', '/path/to/file/filename2.png']]
[/usr/local/lib/python3.7/dist-packages/mmcv/parallel/collate.py](https://localhost:8080/#) in collate(batch, samples_per_gpu)
     75     elif isinstance(batch[0], Sequence):
     76         transposed = zip(*batch)
---> 77         return [collate(samples, samples_per_gpu) for samples in transposed]
     78     elif isinstance(batch[0], Mapping):
     79         return {

RecursionError: maximum recursion depth exceeded while calling a Python object

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py  and transform.py 、loading.py . i relize the training and testing  for dual-resnet  with the input RGB and Depth image.

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Can you share your code with me ? Thx !

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Can you share your code with me ? Thx !

what way can i share the modified code with you

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Can you share your code with me ? Thx !
or i will share the modified code on my home page,

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Can you share your code with me ? Thx !
or i will share the modified code on my home page,

Thx！Just on your homepage.

can you give me your email,  i  sent the code for you ,
git the modified project on github is  complicated for me .

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Thx ! My email is<EMAIL_ADDRESS>.

代码已经发给你了，我做的是同时读取深度图像和RGB图像
因此在配置文件中要给定深度图的路径
同时主干网络也需要改写  给予两个输入
------------------ 原始邮件 ------------------
发件人:                                                                                "open-mmlab/mmdetection"                                                                                @.>;
发送时间: 2022年10月15日(星期六) 中午12:22
@.>;
<EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939)
can you give me your email, i sent the code for you , git the modified project on github is complicated for me .
Thx ! My email is @.*** .
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @.*** . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

感谢 ！

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Right now I'm working through the calls from test.py to the forward-calls. I worked on loading and transforms as Peter has recommended. The dataset-class itself I haven't touched yet, but I'll probably need to change it for the data_loader.
I also found some more defined multi-channel transforms here. Have you done the same?

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Right now I'm working through the calls from test.py to the forward-calls. I worked on loading and transforms as Peter has recommended. The dataset-class itself I haven't touched yet, but I'll probably need to change it for the data_loader.
I also found some more defined multi-channel transforms here. Have you done the same?

i relize the multi-modal training and testing by fixxing the mmdet.dataset.custom.py . i chose to load both depth image and RGB image, and do the same data augumentation for them. Finally, i utilize the collect  function to output these images.
and the next are the part lines in my config.py   ,   the  jet_prefix  indicate the path of the depth image(JET, 3-channels).
data = dict(
samples_per_gpu=3,
workers_per_gpu=3,
train=dict(
img_prefix='D:/wyh/grap_dataset_coco/train',
jet_prefix = 'D:/wyh/grap_dataset_coco/JET/',
classes=classes,
ann_file='D:/wyh/grap_dataset_coco/train/JPEGImages/annotations_train.json'),
val=dict(
img_prefix='D:/wyh/grap_dataset_coco/val/',
jet_prefix = 'D:/wyh/grap_dataset_coco/JET/',
classes=classes,
ann_file='D:/wyh/grap_dataset_coco/val/JPEGImages/annotations_val.json'),
test=dict(
img_prefix='D:/wyh/grap_dataset_coco/test/',
jet_prefix = 'D:/wyh/grap_dataset_coco/JET/',
classes=classes,
ann_file='D:/wyh/grap_dataset_coco/JPEGImages/annotations_test.json'))

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Hi, can you also share your code with me ? Thanks a lot!

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Can you share the code to me too ? I face the same issue,  please help me. My email is<EMAIL_ADDRESS>

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>
I have sent his code to you .

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Can you share the code to me too ? I face the same issue, please help me. My email is<EMAIL_ADDRESS>
I have sent his code to you .

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>
I have sent his code to you .

Thanks again!

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Can you share the code to me too ? I face the same issue, please help me. My email is<EMAIL_ADDRESS>
I have sent his code to you .

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @.*** . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

您好！可以共享下代码吗？万分感谢！ e-mail<EMAIL_ADDRESS>

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Can you share the code to me too ? I face the same issue, please help me. My email is<EMAIL_ADDRESS>
I have sent his code to you .

Would you please share the code with me ? Thanks a lot. My email is<EMAIL_ADDRESS>

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

This is an nice modification. Can you also share your data loading code with me as well<EMAIL_ADDRESS>

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.我在做和你一样的事情。我修改了 Class: CustomDataset 的 mmdet.dataset.custom.py 和 form.py、 loading.py。我实现了训练和测试的双重重网与输入 RGB 和深度图像。

Right now I'm working through the calls from test.py to the forward-calls. I worked on loading and transforms as Peter has recommended. The dataset-class itself I haven't touched yet, but I'll probably need to change it for the data_loader.现在我正在处理 test.py 和转发呼叫之间的通话。我按照彼得的建议进行了加载和转换。我还没有涉及到数据集类本身，但是我可能需要为 data _ loader 更改它。
I also found some more defined multi-channel transforms here. Have you done the same?我还在这里发现了一些定义更加明确的多通道变换。您也这样做了吗？

i relize the multi-modal training and testing by fixxing the mmdet.dataset.custom.py . i chose to load both depth image and RGB image, and do the same data augumentation for them. Finally, i utilize the collect function to output these images.
通过固定 mmdet.dataset.custom.py ，我体会到了多模式训练和测试。我选择加载深度图像和 RGB 图像，并为他们做相同的数据增强。最后，我利用收集函数输出这些图像。
and the next are the part lines in my config.py , the jet_prefix indicate the path of the depth image(JET, 3-channels).
接下来是 config.py 中的部分线，JET _ 前缀表示深度图像(JET，3通道)的路径。
data = dict( samples_per_gpu=3, workers_per_gpu=3, train=dict( img_prefix='D:/wyh/grap_dataset_coco/train', jet_prefix = 'D:/wyh/grap_dataset_coco/JET/', classes=classes, ann_file='D:/wyh/grap_dataset_coco/train/JPEGImages/annotations_train.json'), val=dict( img_prefix='D:/wyh/grap_dataset_coco/val/', jet_prefix = 'D:/wyh/grap_dataset_coco/JET/', classes=classes, ann_file='D:/wyh/grap_dataset_coco/val/JPEGImages/annotations_val.json'), test=dict( img_prefix='D:/wyh/grap_dataset_coco/test/', jet_prefix = 'D:/wyh/grap_dataset_coco/JET/', classes=classes, ann_file='D:/wyh/grap_dataset_coco/JPEGImages/annotations_test.json'))
Something co/test/’，JET _ prefix = ‘ D:/wyh/grap _ datet _ coco/JET/’，class = class，ann _ file = ‘ D:/wyh/grap _ datet _ coco/JPEGImages/annotions _ test. json’))

I'm also currently having problems loading multimodal data, could you please share the code for loading data with me? My email is<EMAIL_ADDRESS>Thanks a lot!

I'm also currently having problems loading multimodal data, could you please share the code for loading data with me? My email is<EMAIL_ADDRESS>Thanks a lot!

can you give me your email, i sent the code for you , git the modified project on github is complicated for me .

Hi, can you also share your code with me ? Thanks a lot! My email is<EMAIL_ADDRESS>
I have sent his code to you .

I'm also currently having problems loading multimodal data, could you please share the code for loading data with me? My email is<EMAIL_ADDRESS>Thanks a lot!

@.***
Original Email
Sender:"jinuncle"< @.*** >;
Sent Time:2023/4/18 21:50
To:"open-mmlab/mmdetection"< @.*** >;
Cc recipient:"zz"< @.*** >;"Comment"< @.*** >;
Subject:Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal)detectors / pipelines for them (Issue #8939)
can you give me your email, i sent the code for you , git the modified project on github is complicated for me .
Hi, can you also share your code with me ? Thanks a lot! My email is @.***
I have sent his code to you .
I'm also currently having problems loading multimodal data, could you please share the code for loading data with me? My email is: @.***
Thanks a lot!
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>
 		 			从QQ邮箱发来的超大附件

				 						 							mmdetection_deep.zip 							 (92.7MB, 2023年5月19日 11:50) 						 						 							进入下载页面 							：https://wx.mail.qq.com/ftn/download?func=3&k=c6c651329c2ea445f4b51a32376131647e3cff37356131641c164c46050357535c0e1904565505490b5c0d06180055570e140305010005510b010c010c582564545450574104521050565a6d5104541417435d42213895c9089ef2a53f5130d3836e15e5a991635e89&key=c6c651329c2ea445f4b51a32376131647e3cff37356131641c164c46050357535c0e1904565505490b5c0d06180055570e140305010005510b010c010c582564545450574104521050565a6d5104541417435d42213895c9089ef2a53f5130d3836e15e5a991635e89&code=99425a1d&from=

thank you so much
--------------原始邮件--------------
发件人："zz @.>;
发送时间：2023年4月19日(星期三) 中午11:51
收件人："open-mmlab/mmdetection" @.>;
抄送："侯宏锦 @.>;"Comment @.>;
主题：Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939)
@.***
Original Email
Sender:"jinuncle"< @.*** >;
Sent Time:2023/4/18 21:50
To:"open-mmlab/mmdetection"< @.*** >;
Cc recipient:"zz"< @.*** >;"Comment"< @.*** >;
Subject:Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal)detectors / pipelines for them (Issue #8939)
can you give me your email, i sent the code for you , git the modified project on github is complicated for me .
Hi, can you also share your code with me ? Thanks a lot! My email is @.***
I have sent his code to you .
I'm also currently having problems loading multimodal data, could you please share the code for loading data with me? My email is: @.***
Thanks a lot!
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>
 		 			从QQ邮箱发来的超大附件

				 						 							mmdetection_deep.zip 							 (92.7MB, 2023年5月19日 11:50) 						 						 							进入下载页面 							：https://wx.mail.qq.com/ftn/download?func=3&k=c6c651329c2ea445f4b51a32376131647e3cff37356131641c164c46050357535c0e1904565505490b5c0d06180055570e140305010005510b010c010c582564545450574104521050565a6d5104541417435d42213895c9089ef2a53f5130d3836e15e5a991635e89&key=c6c651329c2ea445f4b51a32376131647e3cff37356131641c164c46050357535c0e1904565505490b5c0d06180055570e140305010005510b010c010c582564545450574104521050565a6d5104541417435d42213895c9089ef2a53f5130d3836e15e5a991635e89&code=99425a1d&from=

—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

Right now I'm working through the calls from test.py to the forward-calls. I worked on loading and transforms as Peter has recommended. The dataset-class itself I haven't touched yet, but I'll probably need to change it for the data_loader.
I also found some more defined multi-channel transforms here. Have you done the same?

Thanks in advance

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22<EMAIL_ADDRESS>_<EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is<EMAIL_ADDRESS>. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

感谢 ！

<EMAIL_ADDRESS>

十分感谢
--------------原始邮件--------------
发件人："realkanchi @.>;
发送时间：2023年7月13日(星期四) 晚上6:08
收件人："open-mmlab/mmdetection" @.>;
抄送："侯宏锦 @.>;"Comment @.>;
主题：Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939)
代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @**.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @. . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.*>
感谢 ！
@.***
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

I also  currently having problems loading multimodal data, could you please share the code for loading data with me? My email is<EMAIL_ADDRESS>thank you

I've been quite busy recently, working on other company projects. Once I
have some free time and finish this project, I will share the code.
axel.vlaminck @.***> 于2023年9月5日周二 21:13写道：

Can you also share this code?
Or we could make a contribution to mmdetection to support
multimodal/multi-frame detections out of the box?
—
Reply to this email directly, view it on GitHub
https://github.com/open-mmlab/mmdetection/issues/8939#issuecomment-1706596651,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AC7VJLMOONVOQKPIL3XYVZDXY4QOXANCNFSM6AAAAAAQ4765KA
.
You are receiving this because you commented.Message ID:
@.***>

--
Yaming Jin
Nanjing National Laboratory of Microstructures,
Physics Department, Nanjing University,
Nanjing, 210093, P. R. China
Tel:+86-25-8359 3940, Fax:+86-25-8359 5535
Cell Phone: +86-15601588976
E-mail: @.***

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @.*** . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

<EMAIL_ADDRESS>谢谢

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @.*** . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

请问还方便分享代码吗？我的邮箱是<EMAIL_ADDRESS>

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @.*** . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

Hello! Could you please share the code with me? Thank you a lot! ANd here is em<EMAIL_ADDRESS>

代码已经发给你了，我做的是同时读取深度图像和RGB图像 因此在配置文件中要给定深度图的路径 同时主干网络也需要改写  给予两个输入
…
------------------ 原始邮件 ------------------ 发件人: "open-mmlab/mmdetection" @.>; 发送时间: 2022年10月15日(星期六) 中午12:22 @.><EMAIL_ADDRESS>主题: Re: [open-mmlab/mmdetection] Creating multi-modal (bi-modal) detectors / pipelines for them (Issue #8939) can you give me your email, i sent the code for you , git the modified project on github is complicated for me . Thx ! My email is @.*** . — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

<EMAIL_ADDRESS>

I am doing the same thing as you . I have modified the Class : CustomDataset in mmdet.dataset.custom.py and transform.py 、loading.py . i relize the training and testing for dual-resnet with the input RGB and Depth image.

<EMAIL_ADDRESS>


Youtube live and Twitch streams NOT working anymore

Hello, I've been having issues with youtube live streaming and Twitch. They don't load at all.
On Twitch, the video doesn't load at all.
On youtube live videos, it loads a couple of frames and then it enters the loading screen, where it stays forever.
Examples:
Twitch: https://www.twitch.tv/beyondthesummit
Youtube: https://www.youtube.com/watch?v=DG169aR-72Y

What are app and system versions?

Version 2.0 (20)
MacOS Sierra 10.12.4 (16E195)

Latest from mac app store for me opened twitch page

Compiled from #216 works perfectly fine

But YouTube live streams seem to be broken indeed.

I can't reproduce it anymore. Maybe youtube has changed something.
@danielcarletti, do they work for you?

Youtube worked after a reload!
Example used: https://www.youtube.com/watch?v=qIDxRqd5J6o
Thanks, I'm closing the issue now.


Kubuntu not displaying correctly

Operating system & way of installation
Kubuntu 20.10, installed FetchCord via pip
Error/issue
Im honestly not sure if this is a bug or a distro request but Fetchcord is incorrectly displaying my distro as Ubuntu even though NeoFetch displays everything correctly. I looked in the NeoFetch .conf file but it doesnt seem like there is a way to change this.
Debug info
----run_rpc----
uptime in epoch:<PHONE_NUMBER>.0
cpuid:<PHONE_NUMBER>36699178
cpuappid:<PHONE_NUMBER>19187335
termappid:<PHONE_NUMBER>76553258
KeyError: 'Host:'
2799 (dpkg), 9 (flatpak)
----out.py----
----DE/WM----
deid: Plasma
wmid: KWin
wmline item 0: KWin
----TERMINAL----
fontline: Font: N/A
termid:<PHONE_NUMBER>76553258
termline item 0: konsole
themeline: Qogir-dark
Breeze [Plasma], Orchis-dark [GTK2/3]
KeyError: 'Host:'
----GPU INFO----
gpuinfo: NVIDIA GeForce RTX 2070 Rev. A
gpuvendor: nvidia
----CPU INFO----
cpuvendor: intel
cpumodel: Intel i7
cpuinfo: Intel i7-4790K (8) @ 4.400GHz
cpuline item 0: Intel i7-4790K (8) @ 4.400GHz
memline: 5931MiB / 15949MiB
----OS INFO----
sysosline: Kubuntu 20.10
sysosid:<PHONE_NUMBER>36699178
KeyError: 'Disk'
diskline: Disk N/A
packagesline item 0: 2799 (dpkg), 9 (flatpak)
----testing.py----
----DE/WM----
deid: Plasma
wmid: KWin
----TERMINAL/SHELL----
termid:<PHONE_NUMBER>76553258
shellid: bash
----HOST INFO----
hostid:<PHONE_NUMBER>79197462
----GPU INFO----
gpuvendor: nvidia
----CPU INFO----
cpumodel: Intel i7
('DEFAULT', <Section: DEFAULT>)
('cycle_0', <Section: cycle_0>)
('cycle_1', <Section: cycle_1>)
('cycle_2', <Section: cycle_2>)
('cycle_3', <Section: cycle_3>)
KeyError: 'Host:'
Unknown motherboard, contact us on github to resolve this.
{}
cycle0 not in : True
try_connect(key="cycle0") on <pypresence.presence.Presence object at 0x7f5a7d006730>
cycle 0
try_update(key="cycle0") on <pypresence.presence.Presence object at 0x7f5a7d006730>
appid:<PHONE_NUMBER>36699178

Well that's not really a bug in itself, in a way kubuntu is ubuntu but with kde as a DE. I think it was decided by the other devs before that we don't have to it for every ubuntu variations and i think it made sense. What do you think, is it that important to replace it by a kubuntu logo ?

I can understand your point of view and it would add a lot of work. Im not sure if its currently possible but  I would personally like at least the option to change it manually somehow just so my friends know exactly what I am using when they look it up. The main reason Fetchcord appealed to me was as a way to spread the word about Linux the little ways that I can.

I can understand your point of view and it would add a lot of work. Im not sure if its currently possible but I would personally like at least the option to change it manually somehow just so my friends know exactly what I am using when they look it up. The main reason Fetchcord appealed to me was as a way to spread the word about Linux the little ways that I can.

All the rich presence info is stored on discord and only our maintainers have access to it, so it will be hard to add your own, you can change where it pulls the assets from


using both pgbouncer and pgpool buildpacks in series

hi there @sobrinho, first of all i want to say thanks so much for this buildpack! we've seen immense performance gains in our application because of your work.
i wanted to ask, is there any way to use both pgpool and pgbouncer buildpacks on the dyno?

Hi there! Thank you!
I had success doing that in a customer application but using a fork of pgbouncer buildpack to support connecting to pgpool, see https://github.com/heroku/heroku-buildpack-pgbouncer/pull/68.
All you have to do is configure pgpool to connect to the pgbouncer instead of connecting directly to the database, and keep your application connecting to the pgpool, i.e.:
app -> pgpool -> pbbouncer -> database


cleaner logging with verbose option

use gulp-util for output formatting and add a verbose option to disable logging (defaults to true, to preserve previous behavior, but false might be better...)

@dustinblackman : Any reason not to merge ?


Use drag call to drag connecting line.

This PR solves the issue to make connections when user click on connector.

Refers #319.


chore: change error messages

closes #220

@derevnjuk i cant found
Error Loading Script: Cannot accept scripts from the cloud when a local script is already loaded
Error Loading Certificate: Loaded certificate is password protected.

@cruisade we have already discussed that. Just look at RepeaterLauncher.compileScripts and HttpRequestExecutor.execute

@derevnjuk already looked, should it be new errors, i cant find exsiting

@cruisade yep, we don't have them yet


Ignore specific multi-line code

Hello there!
Is there a way to ignore specific lines with pragma directives?
eg.
// format:off
...
// format:on

Are there plans to add this kind of feature?
Thanks!

Don't think we have this / plan to have this today.
Two questions:

What's the scenario / why do you want this?
Do you know if GJF supports this? If not, it would be tough, since that's the engine we use.

GJF doesn't support that. There is a feature request for it with many arguments for and against it.


Like fllow pic,I manage multiple docker images on one repository,so how to write the context? I get the image name from git push message.

You can use multiple build stanzas.
      - name: Build and push
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: ./app
          file: ./app/Dockerfile
          target: prod
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.prep.outputs.tags }}

The context and file parameters can be pointed to your various alpine-base and alpine-full directories.

Hi,it is also doesn't work,this is my build yml:
name: Build Docker Image
on:
  push:
    branches:
        - master
jobs:
    build:
        # 命名工作
        name: Build docker image
        # 指定工作环境
        runs-on: ubuntu-latest
        if: "!contains(github.event.head_commit.message, '[skip ci]')"
        steps:
            -   name: Filter image name
                #获取提交日志中的变量并设置到env中
                run: |
                    ```Get push messages and get var```
            # QEMU
                uses: docker/setup-qemu-action@v1
            # Buildx
            -   name: Set up Docker Buildx
                id: buildx
                uses: docker/setup-buildx-action@v1
            # 登录Dockerhub
            -   name: Login to DockerHub
                uses: docker/login-action@v1
                with:
                    username: ${{ secrets.DOCKER_USERNAME }}
                    password: ${{ secrets.DOCKER_PASSWORD }}
            # 构建镜像并推送到Docker Hub
            -   name: Build and push
                if: ${{ env.IMAGE_NAME != '' }}
                id: docker_build
                uses: docker/build-push-action@v2
                with:
                    builder: ${{ steps.buildx.outputs.name }}
                    context: ./${{ env.IMAGE_NAME }}
                    file: ./${{ env.IMAGE_NAME }}/Dockerfile
                    target: prod
                    push: true
                    tags: ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.TAG_NAMES }}

And this is the build logs:

Run docker/build-push-action@v2
📣 Buildx version: 0.5.1
🏃 Starting build...
/usr/bin/docker buildx build --tag ***/alpine-base:latest --tag 5.2.1 --target prod --iidfile /tmp/docker-build-push-Oqs8WE/iidfile --file ./alpine-base/Dockerfile --builder builder-29ce8a5b-ce1c-4013-a495-32c52e8a9cf1 --push ./alpine-base
error: unable to prepare context: path "./alpine-base" not found
Error: buildx call failed with: error: unable to prepare context: path "./alpine-base" not found

I'm guessing the error is something unrelated to the action. Consider testing it with hardcoded values as a check. But here is a quick example I whipped up with two images in the same repository.
https://github.com/metcalfc/two-build-pushes/blob/main/.github/workflows/main.yml
If you're still having issues, I suggest going to the Docker Community Slack and asking in the #github_actions channel.

I'm guessing the error is something unrelated to the action. Consider testing it with hardcoded values as a check. But here is a quick example I whipped up with two images in the same repository.
https://github.com/metcalfc/two-build-pushes/blob/main/.github/workflows/main.yml
If you're still having issues, I suggest going to the Docker Community Slack and asking in the #github_actions channel.

I am a chinese,so ....the Community Slack ,I hope you can help me ,thank you very much

@metcalfc
Got same error here.
Workflow yaml file (hardcoded context path):
- name: Build and push
      id: build_php_fpm
      uses: docker/build-push-action@v2
      with:
        builder: ${{ steps.buildx.outputs.name }}
        context: ./php-fpm
        file: ./php-fpm/Dockerfile
        platforms: linux/amd64,linux/armhf
        push: true
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/php-fpm

Error message:
buildx failed with: error: unable to prepare context: path "./php-fpm" not found

Figured out.
The checkout part was missing.
- name: Checkout
      uses: actions/checkout@v2

@HiColinn Same as your workflow file.


Can we setup restful api proxy in front of our existing soap apis?

Can we setup restful api proxy in front of our existing soap apis?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 21fbb610-abd2-8836-7d65-d2c880fc7cd9
Version Independent ID: 33502c62-7ecf-67a9-f687-ae1bea3c9fb4
Content: Feature-based comparison of the Azure API Management tiers
Content Source: articles/api-management/api-management-features.md
Service: api-management
GitHub Login: @vladvino
Microsoft Alias: apimpm

@vijay-gowda APIM supports this feature out of the box. You can import your SOAP API and convert it to REST.

@vijay-gowda Just following up here... Hope my previous comment clears things up.

@vijay-gowda Hope my previous comment clears things up.
Since we haven't heard back from you, we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


The evaluation setting of the full scene rendering.

Hi, thanks for the nice paper and code!
I have one question about the evaluation setting of the full scene rendering (novel view synthesis). In Table.1 of the paper, quantitative metrics are compared. Are these metrics computed only on the test set, I mean, the frames listed in datasets/split/xxx/test.txt?
Thanks in advance!

object_nerf_evaluation.zip
Hi, W-Ted,
I have uploaded the rendered file for comparison. We use a subset of the test file for evaluation (as the test split file in the uploaded zip file).

Hi, Bangbang. Thank you very much for your reply!


Proposal: Add REQUEST syntax for Dockerfile

REQUEST requests some elevated privilage from the daemon for the very
next RUN command (and only the next RUN).
One might do REQUEST CAP SYS_ADMIN in order to have the SYS_ADMIN cap
for the next RUN instruction.
REQUEST's are granted when invoking docker build, e.g. docker build --cap-add SYS_ADMIN.
If the build command specifies a grant like this and nothing there is no
REQUEST in the Dockerfile that uses it, the REQUEST will not be used.
When a REQUEST is made for something that has not been granted, the
build will error out.

I'm sure there are some other items that could be REQUESTed as well that are not included in the docs, but I wanted to get the discussion going.

If we did this I would prefer to make it a parameter on the RUN itself (see https://github.com/docker/docker/pull/9934):
RUN --request=cap:sysadmin do-something-cool

or something like that.  Then its scope nicely and very clear what it applies to.

Ooo +1 I like that.

yeah, I was expecting REQUEST be like PORT - a request for that cap to be set when the user docker runs - which would also be useful.

If we did this I would prefer to make it a parameter on the RUN itself (see #9934):

+1 on that. The syntax on that still needs to be finalised, but once it's agreed upon, I suggest to use that syntax to have consistent UX.

Reviewing with @crosbymichael: we're -1 on design.

We don't really like that the instruction applies solely to the next RUN command (that's not very intuitive, and potentially fragile if you reorder your instructions).
We think build time capabilities would be better handled the same way you did with resources in #11410 (although the use case here is much less obvious, and opens a door for non-portable build results).


Release Google.Cloud.ServiceHealth.V1 version 1.0.0

Changes in this release:
No API surface changes; just promotion to GA.

Created release for Google.Cloud.ServiceHealth.V1-1.0.0


[Request]Modify entity/character render distance

I was wondering if it's possible to overwrite the distance at which entities begin to appear in your field of view? In a map with high numbers of players, sometimes the range at which they appear in your FoV becomes very limited even though the map has a much higher render distance. For example, when dueling someone west of Dunbarton, if you are far enough apart from one another, they could disappear from your FoV after landing a magnum.

Unfortunately, the server determines when you are able to see someone. When the server decides two players are close enough to view each other, the server sends the information about the other to them (this information includes what they look like, what they're wearing, what skills they currently have loaded, what direction they are facing, etc). When the server decides those two players are far enough apart to no longer be visible to one another, it sends information telling the client to stop drawing them and stops sending updates about that player.

Ah I see, thanks for the info.


Fix for #9 by adding Node.js 6.9.3/NPM 3.10.10

This PR resolves #9 by ensuring the Node.js 6.9.3 and NPM 3.10.10 are downloaded, installed and set as the default Node.js versions for Kudu.

@nickwalkmsft Feel free to close this if the PR is complete rubbish. I've been chatting with Nazim/AJ about our team beginning to help maintain the Node stack moving forward, so I was mostly just keen to identify the holistic set of changes needed to add a new version (beyond creating a new Docker image in the Node repo).

Not at all - I mostly would just like @naziml to take a quick look as well as he's more familiar with Node than I am  😃

Node 6.9.3 uses npm 3.10.10, so you will need to up that version as well.

@naziml Isn't this PR already associating NPM 3.10.10 with Node 6.9.3?

Sorry, you are right, I was looking at the preview and didn't notice the entire change.


Empty tracks and albums after accepting permission to read external storage

When starting the app and permission to read/write external storage has not been granted yet:

Accept the permission request,
The list of tracks and albums are still empty. Artists load fine.

I have the same problem
After a restart traks are displayed


factor Mesh.load to read files or meshio.Meshes

This fixes #46 and demonstrates that by using the proposed new classmethod Mesh.from_meshio in examples/ex13.py.

I wasn't able to specify the type of meshdata in classmethod Mesh.from_meshio since it's meshio.Mesh but meshio is only imported inside the classmethod.

Fantastic. I'm merging this.


Adopt a pull request peer review policy

+1 - I read the new proposed text. Seems helpful to clarify the policy.


Specifiy the difference between a verifier and sequencer in overview.md

Is your feature request related to a problem? Please describe.
It's currently confusing that in https://github.com/ethereum-optimism/optimistic-specs/blob/main/overview.md#components there is no mention of how the sequencer software is different from the verifier. This should be clarified.
Describe the solution you'd like
Split out the diagram into multiple agents.

I'm closing this in the spirit of the repo reboot. I don't think we'll forget to do this. Feel free to reopen if you disagree and think this should stay as an open issue.


Support exclude filtering by tag

Would be nice if report could total all the activity excluding some with specific tag(s), e.g.:
9:00 - 9:30 #project1 do some work
9:30 - 10:00 #break
10:00 - 10:30 #project2 some other work

and then doing something like
$ klog report --tags=-break

Oh my, this is fun one to do using json. Not super readable, but doable:
  klog json --today | jq '.records[-1].total_mins as $total |
    (.records[-1].entries | map(select(.tags[] | contains("home") or contains("break"))) |
    [.[].total_mins] | add) as $personal |
    ($total - $personal) as $time |
    "\($time / 60 | floor)h\($time % 60)m"
  '

It would be nice if was natively supported, but this is ok too.

Thanks for your thoughts, and cool that you were able to work around via klog json for now.
I think this is a broader topic, so I’ve created https://github.com/jotaen/klog/discussions/190 for a place to discuss ideas and approaches.

Thanks @jotaen!
Here is more readable version of my script:
# Prints how much work time happened today.
work() {
  klog json "$@" |
    jq '
      def fmt_time($mins): "\($mins / 60 | floor)h\($mins % 60)m";
      def with_tags: map(select(.tags[] | contains("home") or contains("break")));
      .records[] |
      {
        date: .date,
        total: .total_mins,
        personal: .entries | with_tags | [.[].total_mins] | add
      } |
        "\(.date): \(fmt_time(.total - .personal))"
  '
}

it's not too bad, just not well integrated.


Mention that the OONI API should not be used for bulk transfer

We should mention somewhere in the OONI API docs that it should not be used for bulk transfers.
Suggested by @anadahz

I believe this is already done in a few places, but I should double check that and if not update these pages.


Auro Select: the select dropdown position is not anchored to the opener / trigger in Safari and Firefox browsers

Describe the bug
When opening an auro-select the dropdown position is not anchored to the opener / trigger, and is vertically off by 64px in Safari and Firefox browsers. The dropdown is positioned as expected in Chrome and Edge browsers.
To Reproduce
Steps to reproduce the behavior:

Go here in a Safari or Firefox browser
Click on any select menu.
See error

Expected behavior
The dropdown should be anchored to the opener / trigger.
Screenshots

Desktop (please complete the following information):

OS: Windows and macOS
Browser: Safari and Firefox
Version: all

Smartphone (please complete the following information):

Device: iPhone and iPad
OS: all
Browser: stock browser, Safari, native app embedded web view
Version: all

Additional context
This affects alaskaair.com production website and native web app (embedded web view). On small viewports / mobile devices, this prevents users from selecting the "MVP Gold 100k" and "MVP Gold Guest" options from the "Upgrade Type" select.
Repo: https://github.com/Alaska-ECommerce/flightsearch-lem-svelte/

Please note, this is impacting more than just Gold Guest upgrades. Several iPhone 16 users are now reporting that Gold 100k is unavailable as well.

:tada: This issue has been resolved in version 3.3.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


IndexError when training the model with modified dataset

Hi, @amandakonet. I wonder if you still remember some details when you fine-tune the model with your modified version of climate_fever.
Basically I was following your notebook and everything was fine until the last step in 1-climate-bert.ipynb, where an IndexError: index out of range in self was raised when I actually tried to train the model train(model, train_loader, val_loader, optimizer).
I wonder if you've encountered a similar roadblocker like that and how you get past it. Thanks!

Hi @rexarski,
At the time of writing this, I didn't encounter any such issue. It's possible that this issue is due to changes to the transformers library. Unfortunately, I don't have capacity to address this right now. However, if you (or anyone else) figures this out, I'd be more than happy to merge in a pull request!

Thanks @amandakonet, I'll keep you updated if I've made some progress. Cheers!


The queries are not working correctly for multiple tags

Welcome to Ghost's GitHub repo! 👋🎉
Issue Summary
SQL statements not correctly generated for tags. When a post has multiple tags or you're querying for multiple tags the resulting sql will not be correct. My Issue #9916 got closed but this is not working correctly as far as I can see.
To Reproduce
I have this routing:
routes:
  /units/:
    controller: channel
    filter: tags:unit
    template: units
    order: slug

collections:
  /unit/:
    permalink: /unit/{slug}/
    filter: tags:unit
    type: custom
    frontPageTemplate: units
    template:
      - unit

  /:
    permalink: /{slug}/
    filter: tags:-[article,unit,activity]
    template:
      - index

taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/

The SQL being generated is:
select `posts`.*
from `posts`
	left outer join `posts_tags` on `posts_tags`.`post_id` = `posts`.`id`
	left outer join `tags` on `posts_tags`.`tag_id` = `tags`.`id`
where (`posts`.`status` = 'published'
	and `posts`.`page` = false)
	and (`tags`.`slug` not in ('article', 'unit', 'activity'))
group by `posts`.`id`
order by CASE WHEN posts.status = 'scheduled' THEN 1 WHEN posts.status = 'draft' THEN 2 ELSE 3 END ASC,
	CASE WHEN posts.status != 'draft' THEN posts.published_at END DESC,
        posts.updated_at DESC,
	posts.id DESC

Some of the sample posts have the following tags:
Post 1: unit-special, unit
Post 2: activity-unit-special, activity
Post 3: article-unit-special, article
Post 4:
I tried this with single special tags but that didn't work either. Basically the join should be multiple or an inner sub query rather than doing a group by to stitch it back together. Using the group by will consider each tag in turn and cannot do an AND or NOT OR across the different rows in the group by.
Technical details:
When going to the home page all 4 articles are considered and then filtered out. In the actual system I have about 2300 posts and the filter will filter out the first 50 and display no posts on my home page.

Ghost Version: 2.1.4
Node Version: 8.12
Browser/OS: chrome mac
Database: jawsdb mysql

Hey again!
https://docs.ghost.org/docs/dynamic-routing#section-filter
Can you pls read this section and adapt your routes.yaml? Currently, you have to use 100% inverse filters when using multiple collections.

That's precisely what I am trying to do. The inverse filter tags:-[tag1,tag2,tag3] does not generate the correct SQL for posts that have multiple tags themselves since it uses a join and a group by. It would need to use a sub-select across tags for it to work.

Yeah can confirm. The actual SQL query is not correct when the post has multiple tags.

I'll close this issue in favor of #9950. It's the same report. I've left a comment and linked your report.
Ghost uses GQL since years and GQL generates the SQL queries for Ghost. These queries are broken for relations, tracked e.g. here.
Dynamic Routing uses NQL only to match JSON objects, but not to generate the SQL queries. That's why you are running into this bug, which is tracked since 2016.
We have to finish up the NQL implementation and replace GQL with NQL in Ghost (in the model layer).
NQL will take care of the challenge to generate the correct SQL queries for relations.
Thanks for your report 👋

This bug was fixed in Ghost 2.8.0.


[json] support meta-schema features

Issue Type: Bug
So basically I have a VS Code extension that provides JSON file validation based on the built in JSON validator. The schema that I'm validating against (OpenAPI 3.1.x) uses meta-schema features, i.e. $dynamicRef, which I also need to use, since I reference the OpenAPI schema.
When defining a custom schema like the following, I get a warning stating that the validator doesn't support meta-schema features yet. Needless to say, validation does really not work. When using normal $ref, most of the schema work but not properties that use $dynamicRef. So I'm forced to reference the schema by $dynamicRef as well.
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "OpenApiPathObject",
  "type": "object",
  "additionalProperties": {
    "$dynamicRef": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json#/$defs/path-item-or-reference"
  }
}

The schema uses meta-schema features ($dynamicRef) that are not yet supported by the validator.

I'm using VS Code 1.69.0 and changed the required engine of my extension to ^1.68.0, which should include support for schema verion Draft 2020-12 as stated in the May 2022 release notes. What are my options here and how can I come around this warning?
Here's an excerpt of the extension package.json
...
"engines": {
    "vscode": "^1.68.0"
},
...

 It looks like you may be using an old version of VS Code, the latest stable release is 1.69.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

As explained in the release notes we don't yet have support for meta-schema.

Thanks for your clarification. You are absolutely right and somehow I missed that. Is this feature on the roadmap or far ahead?

It's not on the plan for now as other work has higher priority. Please add your vote on the issue so give this more weight. Or, if you want to give it a try, PR are very welcome. The implementation is in https://github.com/microsoft/vscode-json-languageservice

I know this is not on the roadmap, but Is there any known alternative?
Is there any way for us to use VSCode for JSON Schema authoring, with all the benefits of autocomplete, etc?

Curiously, I just opened a folder and configured .vscode/settings.json as such, and VSCode understood that some of my .schema.json files were JSON schemas, and gave me autocompletion:
{
  "json.schemas": [
    {
      "fileMatch": ["*.schema.json"],
      "url": "https://json-schema.org/draft/2019-09/schema"
    }
  ]
}

Unfortunately, the .schema.json file MUST NOT have that very same URL, otherwise all the validation and autocompletion functionalities are lost.
Summarizing. Once you properly configure your workspace, this works:
{
  "$id": "https://schemas.pdd.b3.com.br/pdd/core/table-migration-config/v1",
  // ...
}

But this breaks, even though it's the very same Schema URL:
{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "https://schemas.pdd.b3.com.br/pdd/core/table-migration-config/v1",
  // ...
}

Whi is the behaviour different?
I imagine those default JSON-Schema URLs are ubiquitous enough to receive a special treatment, so they may be internally resolved to a dereferenced schema object/string in VSCode, somehow -- especially given that the language service has no support for meta-schemas, so it must be dealt with outside the language service itself.
Considering that, would it be possible to interpret the "$schema" in the JSON file the same way the workspace settings URL is dealt with?

I'm getting a false positive warning that I am using dynamicref when I am not on this schema, should this be a separate issue?

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/JustinGrote/AzurePolicySchema/main/policyParameters.schema.json",
  "title": "Azure Policy Parameters",
  "description": "Azure Policy Parameters: https://docs.microsoft.com/en-us/azure/governance/policy/concepts/definition-structure",
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "description": "Input parameter definitions",
    "additionalProperties": false,
    "properties": {
      "name": {
        "type": "string",
        "description": "The name of your parameter. Used by the parameters deployment function within the policy rule. For more information, see https://docs.microsoft.com/en-us/azure/governance/policy/concepts/definition-structure#using-a-parameter-value."
      },
      "type": {
        "type": "string",
        "description": "Type of input parameter",
        "enum": [
          "string",
          "securestring",
          "int",
          "bool",
          "object",
          "secureObject",
          "array"
        ]
      },
      "defaultValue": {
        "type": [
          "string",
          "boolean",
          "integer",
          "number",
          "object",
          "array",
          "null"
        ],
        "description": "Default value to be used if one is not provided"
      },
      "allowedValues": {
        "type": "array",
        "description": "Value can only be one of these values"
      },
      "metadata": {
        "type": "object",
        "description": "Metadata for the parameter, can be any valid JSON object but there are some well known properties that influence the Azure Portal",
        "properties": {
          "displayName": {
            "type": "string",
            "description": "The friendly name shown in the portal for the parameter."
          },
          "description": {
            "type": "string",
            "description": "The explanation of what the parameter is used for. Can be used to provide examples of acceptable values."
          },
          "strongType": {
            "type": "string",
            "description": "Used when assigning the policy definition through the portal. Provides a context aware list. For more information, see strongTy"
          },
          "assignPermissions": {
            "type": "boolean",
            "description": "Set as true to have Azure portal create role assignments during policy assignment. This property is useful in case you wish to assign permissions outside the assignment scope. There's one role assignment per role definition in the policy (or per role definition in all of the policies in the initiative). The parameter value must be a valid resource or scope."
          }
        }
      },
      "schema": {
        "type": "string",
        "description": "Provides validation of parameter inputs during assignment using a self-defined JSON schema. This property is only supported for object-type parameters and follows the Json.NET Schema 2019-09 implementation. You can learn more about using schemas at https://json-schema.org/ and test draft schemas at https://www.jsonschemavalidator.net/."
      }
    },
    "required": [
      "type"
    ]
  }
}

The https://json-schema.org/draft/2020-12/schema schema uses $dynamicRef... :crying_cat_face:

@aeschli oh, fair point, maybe filter these notices when you're referencing the actual schema spec? :)

@JustinGrote Using the spec, which uses $dynamicRef, could lead to unintended behaviour or not work at all, so suppressing the warning wouldn't be a good idea imho.

@aeschli any news on this?

It maybe fix this
.vscode/settings.json
{
    "yaml.schemas": {
      "https://json-schema.org/draft/2020-12/schema": ["my.schema.json"]
    }
}

I think that #98724 is related to this.

Would love to see this get in.

Would highly appreciate this beeing implemented.

Would love support for newer schemas too...

whats the status on this?

Hi, does anyone have more information about https://json-schema.org/draft/2020-12/schema and validation on vscode?

What information do you need?

I wanted to find out if VSCode will soon support validation for https://json-schema.org/draft/2020-12/schema, or if there is an alternative solution?

@Necrelox that's tracked here: https://github.com/microsoft/vscode/issues/165219

Thanks you !! @JustinGrote


feature: Implict receivers

Pull Request Test Coverage Report for Build #75
Details

105 of 105 (100.0%)  changed or added relevant lines in 16 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build #74:
0.0%

Covered Lines:
257

Relevant Lines:
257

💛  - Coveralls


Add optional message de-duplication

As discussed in #240, parallel data links have some special needs. One of which is de-duplication of incoming messages.
This implementation has been used for some time and works just fine. I just needed to make some changes to make it compatible with the latest master, squashed some of Julian's commits and added some comments on the behavior.

The comments I mentioned above can be handled on top since they are just documentation.


[Auto-generated] Check & update dependencies (pyproject.toml)

Update dependencies (pyproject.toml)
Automatically created PR based on the 'CI - Check pyproject.toml dependencies' workflow in SINTEF/ci-cd.

Codecov Report

Merging #94 (71fd3d5) into ci/dependency-updates (a96171c) will not change coverage.
The diff coverage is n/a.

@@                  Coverage Diff                   @@
##           ci/dependency-updates      #94   +/-   ##
======================================================
  Coverage                  53.69%   53.69%
======================================================
  Files                          3        3
  Lines                        311      311
======================================================
  Hits                         167      167
  Misses                       144      144

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Teamviewer cannot be linked to an account

Issue description
While the software installs correctly and starts, it always sais "Not ready, please check your connectivity", and doesn't allow be to link it with my TeamViewer account.
Steps to reproduce
nix run nixpkgs.teamviewer -c teamviewer
Technical details
Please run nix-shell -p nix-info --run "nix-info -m" and paste the
results.

system: "x86_64-linux"
host os: Linux 4.19.34, NixOS, 19.03.172361.cf3e277dd0b (Koi)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.2.2
channels(root): "nixos-19.03.172361.cf3e277dd0b"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Yes, it doesn't work. It should be marked as broken.

The service declaration seems to work,
the following works as expected:
services.teamviewer.enable = true;


Toolchain download on alpine fails in indecipherable way

Current Behavior
Attempting to use a Java 21 toolchain on alpine without Java 21 installs fails, but in an indecipherable way.
If you use an alpine based Docker image to run a gradle build that requires a toolchain download it fails - which is fine, except that the failure is totally obscured by a further exception thrown when trying to instantiate the actual exception.
Stacktrace:
org.gradle.internal.nativeintegration.NativeIntegrationUnavailableException: Service 'SystemInfo' is not available (os=Linux 6.10.4-linuxkit aarch64, enabled=false).
   at org.gradle.internal.nativeintegration.services.NativeServices$BrokenService.invoke(NativeServices.java:573)
   at jdk.proxy1/jdk.proxy1.$Proxy86.getArchitecture(Unknown Source)
   at org.gradle.platform.internal.DefaultBuildPlatform.getArchitecture(DefaultBuildPlatform.java:52)
   at org.gradle.platform.internal.DefaultBuildPlatform.lambda$new$0(DefaultBuildPlatform.java:37)
   at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:181)
   at org.gradle.platform.internal.DefaultBuildPlatform.getArchitecture(DefaultBuildPlatform.java:43)
   at org.gradle.platform.internal.DefaultBuildPlatform_Decorated.getArchitecture(Unknown Source)
   at org.gradle.jvm.toolchain.internal.NoToolchainAvailableException.<init>(NoToolchainAvailableException.java:37)
   at org.gradle.jvm.toolchain.internal.JavaToolchainQueryService.downloadToolchain(JavaToolchainQueryService.java:227)

As you can see, gradle is trying to instantiate a NoToolchainAvailableException, which is expected, but in the process it calls getArchitecture() on a proxy implementing net.rubygrapefruit.platform.SystemInfo, which itself throws an exception.
This causes the original ToolchainDownloadFailedException that would have been included as the cause of the NoToolchainAvailableException to be lost.
Expected Behavior
The NoToolchainAvailableException is successfully instantiated with the ToolchainDownloadFailedException as its cause and printed out by gradle as the actual problem, despite Service 'SystemInfo' not being available.
Context (optional)
No response
Self-contained Reproducer Project
https://github.com/Mahoney-bug-examples/gradle-alpine-arm-toolchain-bug
Gradle version
8.10.2
Build scan URL (optional)
No response
Your Environment (optional)
Docker image eclipse-temurin:23_37-jdk-alpine on both ARM & AMD64

The issue is in the backlog of the relevant team and is prioritized by them.

This is caused by lack of support of some native integration on Alpine/musl.
But indeed, the failure to query the architecture should not hide the toolchain exception. Gradle should report an unknown architecture - which is probably also the root cause of being unable to download a toolchain.
Relates to:

#30885


Vaadin 14.1.x has missing theme

Vaadin-Vertx-Flow is not working with Vaadin 14.1.x. The theming is missing completely. If I change the version back to 14.0.x everything works. I've tested it with different projects, also with the vertx-flow-example project.

Thanks for reporting, I'll take a look at this as soon as possible

Ok the problem was on the set of annotated classes supplied to DevModeInitializer; vertx-vaadin was scanning for too few annotation.
Just published a snapshot version (14.1.0-SNAPSHOT) on https://oss.jfrog.org/artifactory/oss-snapshot-local if you want to give it a try

I've tried it with vertx-vaadin-samples and an additional project. It worked immediately! So I think it should work with any other project too. Great job and thanks for the fast response! 👍

Thanks for feedback. I will complete work on #33 and the cut a release


feat(linter): support vitest/no-disabled-tests

#3717  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @mysteryven and the rest of your teammates on  Graphite


MAPILogonEx failure

@stephenegriffin  In our product, we sometimes encounter MAPILogonEx failure problems.
The calling is
FLAGS flFlags = MAPI_NEW_SESSION | MAPI_EXTENDED | MAPI_TIMEOUT_SHORT | MAPI_EXPLICIT_PROFILE|MAPI_UNICODE;
HRESULT hResult = MAPILogonEx(0, /*strDefaultProfile.GetBuffer(0)*/ "Outlook", NULL, flFlags, &m_lpSession);

The error is:
Mapi logon failed, hr=0x80004005
If try it again, it will succeed. Is MAPILogonEx unstable? Do you know the reason why MAPILogonEx fails sometimes?

this is not an mfcmapi issue


currentUserData not available after refresh

Not sure whether there's an easy way to fix this, but here it goes. I have a user system that has all users in a single table, but they still can have specific roles. Like "admin" or "regular". Since I simply have this as a field in the database, I cannot use the built in Multiple User Types. I can however just let the backend return this field to the frontend.
So when I have a page guarded by canActivate, I could have something like this:
canActivate() {
    return this._tokenService && this._tokenService.currentUserData && this._tokenService.currentUserData['role'] === 'admin';
}

and call this in the routing.
Now here's the problem. When you sign in and click to the guarded page, it works fine. However, when you directly go to the guarded page's URL (or refresh), the canActivate checks the currentUserData before the validate_token succeeds. So when canActivate() is called, currentUserData is undefined.
Steps to reproduce:

Sign in
Go to authorized canActivate page using code above
Refresh

Any idea on if or how to properly solve this?

A quick fix would be to subscribe to .validateToken(). It returns an observable, so you can be sure that currentUserData is set.

the UI looks flaky , it shows UI for logged out first and then shows up for logged in. Anything to sort out that ?


Failure installing readthedocs-sphinx-ext 0.5.4

We bring in recommonmark as part of the rtd extension, seems it isn't installed as a dependency possibly.
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages/sphinx/cmdline.py", line 244, in main
    opts.warningiserror, opts.tags, opts.verbosity, opts.jobs)
  File "/home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages/sphinx/application.py", line 126, in __init__
    confoverrides or {}, self.tags)
  File "/home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages/sphinx/config.py", line 277, in __init__
    execfile_(filename, config)
  File "/home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages/sphinx/util/pycompat.py", line 128, in execfile_
    exec_(code, _globals)
  File "conf.py", line 300, in <module>
    from recommonmark.parser import CommonMarkParser
ImportError: No module named 'recommonmark'

Exception occurred:
  File "conf.py", line 300, in <module>
    from recommonmark.parser import CommonMarkParser
ImportError: No module named 'recommonmark'

Noticed this as part of JuliaLang/julia#11527

Actually, I should have continued looking at the build errors. Seems this is just a side effect of requirements installation failures:
Requirement already up-to-date: sphinx==1.3.1 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages
Requirement already up-to-date: Pygments==2.0.2 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages
Collecting virtualenv==1.10.1
Collecting setuptools==1.1
Collecting docutils==0.11
Collecting mkdocs==0.13.3
  Using cached mkdocs-0.13.3-py2.py3-none-any.whl
Collecting mock==1.0.1
Collecting pillow==2.6.1
Collecting readthedocs-sphinx-ext==0.5.3
  Using cached readthedocs_sphinx_ext-0.5.3-py2.py3-none-any.whl
Collecting sphinx-rtd-theme==0.1.8
  Using cached sphinx_rtd_theme-0.1.8-py2.py3-none-any.whl
Collecting recommonmark==0.1.1
  Using cached recommonmark-0.1.1-py2.py3-none-any.whl
Requirement already up-to-date: alabaster<0.8,>=0.7 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: snowballstemmer>=1.1 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: Jinja2>=2.3 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: babel>=1.3 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: six>=1.4 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Collecting PyYAML>=3.10 (from mkdocs==0.13.3)
Collecting click>=4.0 (from mkdocs==0.13.3)
  Using cached click-4.0-py2.py3-none-any.whl
Collecting livereload>=2.3.2 (from mkdocs==0.13.3)
  Using cached livereload-2.4.0-py2.py3-none-any.whl
Collecting tornado>=4.1 (from mkdocs==0.13.3)
Collecting Markdown>=2.3.1 (from mkdocs==0.13.3)
  Using cached Markdown-2.6.2-py2.py3-none-any.whl
Collecting ghp-import>=0.4.1 (from mkdocs==0.13.3)
Collecting nilsimsa (from readthedocs-sphinx-ext==0.5.3)
  Using cached nilsimsa-0.3.6.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "/tmp/pip-build-d5ecjt_7/nilsimsa/setup.py", line 5, in <module>
        from version import get_git_version
      File "/tmp/pip-build-d5ecjt_7/nilsimsa/version.py", line 78
        except Exception, exc:
                        ^
    SyntaxError: invalid syntax

    ----------------------------------------

Confirmed the server that ran this is using a new sphinx-rtd-extension (0.5.3), versus the other servers which use 0.4.4. This seems to possibly be triggered by import of the nilsimsa package via the extension.

I believe this is probably a bug where we don't stop building after
requirements fail. We should just not try and build docs in that case,
which is likely what the real issue is.
On Thu, Jun 11, 2015 at 12:39 PM, Anthony<EMAIL_ADDRESS>wrote:

Actually, I should have continued looking at the build errors. Seems this
is just a side effect of requirements installation failures:
Requirement already up-to-date: sphinx==1.3.1 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages
Requirement already up-to-date: Pygments==2.0.2 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages
Collecting virtualenv==1.10.1
Collecting setuptools==1.1
Collecting docutils==0.11
Collecting mkdocs==0.13.3
Using cached mkdocs-0.13.3-py2.py3-none-any.whl
Collecting mock==1.0.1
Collecting pillow==2.6.1
Collecting readthedocs-sphinx-ext==0.5.3
Using cached readthedocs_sphinx_ext-0.5.3-py2.py3-none-any.whl
Collecting sphinx-rtd-theme==0.1.8
Using cached sphinx_rtd_theme-0.1.8-py2.py3-none-any.whl
Collecting recommonmark==0.1.1
Using cached recommonmark-0.1.1-py2.py3-none-any.whl
Requirement already up-to-date: alabaster<0.8,>=0.7 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: snowballstemmer>=1.1 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: Jinja2>=2.3 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: babel>=1.3 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: six>=1.4 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Collecting PyYAML>=3.10 (from mkdocs==0.13.3)
Collecting click>=4.0 (from mkdocs==0.13.3)
Using cached click-4.0-py2.py3-none-any.whl
Collecting livereload>=2.3.2 (from mkdocs==0.13.3)
Using cached livereload-2.4.0-py2.py3-none-any.whl
Collecting tornado>=4.1 (from mkdocs==0.13.3)
Collecting Markdown>=2.3.1 (from mkdocs==0.13.3)
Using cached Markdown-2.6.2-py2.py3-none-any.whl
Collecting ghp-import>=0.4.1 (from mkdocs==0.13.3)
Collecting nilsimsa (from readthedocs-sphinx-ext==0.5.3)
Using cached nilsimsa-0.3.6.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 20, in
File "/tmp/pip-build-d5ecjt_7/nilsimsa/setup.py", line 5, in
from version import get_git_version
File "/tmp/pip-build-d5ecjt_7/nilsimsa/version.py", line 78
except Exception, exc:
^
SyntaxError: invalid syntax
----------------------------------------

Confirmed the server that ran this is using a new sphinx-rtd-extension (
0.5.3), versus the other servers which use 0.4.4. This seems to possibly
be triggered by import of the nilsimsa package via the extension.
—
Reply to this email directly or view it on GitHub
https://github.com/rtfd/readthedocs.org/issues/1337#issuecomment-111255787
.

--
Eric Holscher
Maker of the internet residing in Portland, Oregon
http://ericholscher.com

Ah, wonder if that's a py3 issue.
On Thu, Jun 11, 2015 at 12:40 PM, Eric Holscher<EMAIL_ADDRESS>wrote:

I believe this is probably a bug where we don't stop building after
requirements fail. We should just not try and build docs in that case,
which is likely what the real issue is.
On Thu, Jun 11, 2015 at 12:39 PM, Anthony<EMAIL_ADDRESS>wrote:

Actually, I should have continued looking at the build errors. Seems this
is just a side effect of requirements installation failures:
Requirement already up-to-date: sphinx==1.3.1 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages
Requirement already up-to-date: Pygments==2.0.2 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages
Collecting virtualenv==1.10.1
Collecting setuptools==1.1
Collecting docutils==0.11
Collecting mkdocs==0.13.3
Using cached mkdocs-0.13.3-py2.py3-none-any.whl
Collecting mock==1.0.1
Collecting pillow==2.6.1
Collecting readthedocs-sphinx-ext==0.5.3
Using cached readthedocs_sphinx_ext-0.5.3-py2.py3-none-any.whl
Collecting sphinx-rtd-theme==0.1.8
Using cached sphinx_rtd_theme-0.1.8-py2.py3-none-any.whl
Collecting recommonmark==0.1.1
Using cached recommonmark-0.1.1-py2.py3-none-any.whl
Requirement already up-to-date: alabaster<0.8,>=0.7 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: snowballstemmer>=1.1 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: Jinja2>=2.3 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: babel>=1.3 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Requirement already up-to-date: six>=1.4 in /home/docs/checkouts/readthedocs.org/user_builds/julia/envs/latest/lib/python3.4/site-packages (from sphinx==1.3.1)
Collecting PyYAML>=3.10 (from mkdocs==0.13.3)
Collecting click>=4.0 (from mkdocs==0.13.3)
Using cached click-4.0-py2.py3-none-any.whl
Collecting livereload>=2.3.2 (from mkdocs==0.13.3)
Using cached livereload-2.4.0-py2.py3-none-any.whl
Collecting tornado>=4.1 (from mkdocs==0.13.3)
Collecting Markdown>=2.3.1 (from mkdocs==0.13.3)
Using cached Markdown-2.6.2-py2.py3-none-any.whl
Collecting ghp-import>=0.4.1 (from mkdocs==0.13.3)
Collecting nilsimsa (from readthedocs-sphinx-ext==0.5.3)
Using cached nilsimsa-0.3.6.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 20, in
File "/tmp/pip-build-d5ecjt_7/nilsimsa/setup.py", line 5, in
from version import get_git_version
File "/tmp/pip-build-d5ecjt_7/nilsimsa/version.py", line 78
except Exception, exc:
^
SyntaxError: invalid syntax
----------------------------------------

Confirmed the server that ran this is using a new sphinx-rtd-extension (
0.5.3), versus the other servers which use 0.4.4. This seems to possibly
be triggered by import of the nilsimsa package via the extension.
—
Reply to this email directly or view it on GitHub
https://github.com/rtfd/readthedocs.org/issues/1337#issuecomment-111255787
.

--
Eric Holscher
Maker of the internet residing in Portland, Oregon
http://ericholscher.com

--
Eric Holscher
Maker of the internet residing in Portland, Oregon
http://ericholscher.com

It is, on the nilsimsa package, they are working on py3 support still. Opened rtfd/readthedocs-sphinx-ext#8

Test hack patch now, should have a PR up soon to address this temporarily.

Confirmed the server that ran this is using a new readthedocs-sphinx-ext (0.5.3), versus the other servers which use 0.4.4.

I was wondering why only about half of the builds had failures.

The trouble module was patched earlier, waiting on a release of readthedocs-sphinx-ext 0.5.4 with more py3 fixes.


fix: Reset _completeCompleter in ticker

Description

I was running this code:
void attack() async {
  print('Attack started');
  current = PlayerState.attack;

  final attackTicker = animationTicker!;
  await attackTicker.completed;
  print('Attack ticker completed');

  attackTicker.reset();
  current = PlayerState.idle;
}

and attackTicker.completed would get stuck as permanently completed after the first completion.
Checklist

[X] I have followed the Contributor Guide when preparing my PR.
[x] I have updated/added tests for ALL new/updated/fixed functionality.
[-] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[-] I have updated/added relevant examples in examples or docs.

Breaking Change?

[-] Yes, this PR is a breaking change.
[X] No, this PR is not a breaking change.

Related Issues

The closest issue I can find is https://github.com/flame-engine/flame/issues/2584 which uses the ticker.onComplete function and ran into a problem because of creating a new ticker. This PR concerns the ticker.completed future.

Ah, and this test also fails:
  ● SpriteAnimationWidget onComplete callback is called when the animation is finished packages/flame/test/widgets/sprite_animation_widget_test.dart:123:5


Please invite @asahina820 to this repository

Subject Says It All, please invite @asahina820 to this repository to notice to weekly meeting and other GitHub Issues

Sure! I sent an invite to @asahina820.

Welcome @asahina820 as an Maintainer of this repository!
The next weekly meeting is #392.


Cohabitation of ng2 webapp with NativeScript app

From @zackarychapple on November 22, 2016 16:17
Tell us about the problem
I have an angular-cli generated angular2 app and its structure differs from the tns generated structure.  I have been trying to figure out how can I change where tns looks for the main.ts to bootstrap the application. The goal is to have the web and native app living in the same repo and control switching between them via which main.ts is bootstrapped.
Which platform(s) does your issue occur on?
Both
Please provide the following version numbers that your issue occurs with:

CLI: 2.4.0 with --ng flag

Copied from original issue: NativeScript/NativeScript#3151

From @bradmartin on November 23, 2016 3:48
@zackarychapple - does this seed project help any? https://github.com/NathanWalker/angular-seed-advanced there is another seed too, just don't recall the repo right now.

@zackarychapple here is another great x-platform seed project:
https://github.com/shripalsoni04/nativescript-angular-web-starter

Hey there, @zackarychapple! Great idea for having separate entry points for native and web ng2 app.  You can change the main file for nativescript-angular from the package.json in the app folder. Simply change the following line:
"main": "main.js",

to something like:
"main": "main.tns.js",

or whatever you named your entry point.

Closing due to inactivity.
Please, reopen if needed.


[settings] add option to store settings in volatile storage

---enable-settings-ram configure option to use RAM-backed storage instead of flash.
Updated settings.h as flash implementation (and now also RAM-backed implementation) can return OT_ERROR_NO_BUFS from otPlatSettingsAdd() and otPlatSettingsSet()

@josephn123 I think Thread requires these settings to persist after power cycle. Can RAM meet this requirement?

@bukepo Agree it's non-standard. This was to address something specific to our use case. Let me know your thoughts including:
a) a standards-breaking feature should be made available to the community
b) if anyone may find this useful

@josephn123 I think Thread certification requires settings be persisted. @librasungirl could you please add more details?

@bukepo @librasungirl, please refer to #3750 for more context. Yes, Thread requires devices to maintain non-volatile storage. As @josephn123 noted, this feature is known to be non-standard.


Can't specify just Min constraint for sequence named options

Maybe this feature was thought in this way: if you specify a Min constraint you should also specify Max.
Internally are set to -1 and -1 that means: don't perform any check.
Anyway, now I'd like to specify just this, assuming I only want to check for minimum. (And should be the same for max).
cc/ @nemec @gimmemoore @mizipzor
What do you think? OK this way (no constraint or both) or more flexibility?

I'm going to check if Max as same problems and I'll open proper issue only if necessary.
This one as now could be thought as fixed.
cc/ @nemec @mizipzor @gimmemoore


Deliveries 9.0 and higher no longer work with PopClip

Since updating to the latest version of Deliveries, I can no longer select a tracking number and add to the app via the PopClip extension. I get the following error:
"PopClip can’t find Deliveries on this computer. You probably need to install it."

I dug around a bit and found the solution - for me at least. Maybe this will help others.
Open Deliveries.popclipext in PlistEdit Pro, open Config.plist, drill down Root > Apps > 0 > Bundle Identifier. Change from com.junecloud.mac.Deliveries to just com.junecloud.deliveries. Save changes and quit.
Restart PopClip and all should work.

Thanks for the report.

Now updated: https://pilotmoon.com/popclip/extensions/page/Deliveries

Thanks for the report and investigation!

No problem! And thank you for the quick turnaround/fix 🙌 .

Closing - please comment if this is still an issuse.


[2.0] Extract "operation" classes

This is my biggest one yet, and the last major step of refactoring. This was fun. :smile:
Some notes first:

I haven't yet rebased on your latest changes, as that will cause some merge conflicts. I wanted to give you the chance to review first.
I noticed at some place in the middle of this refactoring that I automatically switched to PSR-2 code style, sorry about that. I will fix that once we have the features sorted.
There are currently three failing tests. This is intended and explained further below.

Now, for the description of the actual changes:

Most importantly, I separated the configuration from the actual application of new headers, safe mode etc., as proposed in the initial discussion that led to v2.0. Things now work like this:
a. The user configures security headers by using the SecureHeaders facade class, and the known methods (e.g. csp, safeMode etc.).
b. When calling done (or later, apply with an adapter), the configuration is turned into a sequence of operations - things like "add a header, if it wasn't sent yet", "add flags to all cookies that match certain names" etc.
c. apply retrieves the currently sent headers (in a HeaderBag) from the adapter, applies all operations, and then instructs the adapter to replace all headers with the ones from the now-modified HeaderBag.

I propose removing the addHeader and header methods. They make things more complicated than necessary (because their replace/add behavior is different than for headers added implicity, e.g. by configuring CSP directives). Also, it makes the whole architecture simpler because headers can just be sent the standard way (header() method for the global adapter, modifying the response for the PSR-7 adapter), and things like "safe mode" etc. will still be applied to them, without needing to store them internally in the first place. That's why there are currently three failing tests - I simply propose to remove these tests.

Testing is really comfortable now. The operations can be tested one-by-one, which lets us specify very clearly the edge cases that all operations need to be able to handle (case sensitivity, spacing, behavior with existing headers etc.). I have started on some of them, but would like to ask you to either add some tests, or specify what other behavior needs to be tested - you simply know more about the intended feature set than I do.

All in all, this makes the architecture much simpler: Configure, apply the changes, and send the headers. This makes it more clear when to do things like parsing attributes. Existing headers are simply ignored - but still sent - (without having to be inspected), as long as they are not in any way relevant to the security features.

I am sure that some things are still broken, but let's specify them through unit tests first.

Woah, this is a big one – going to take some time to review!
Liking the changes overall so far though! 😄

I am sure that some things are still broken, but let's specify them through unit tests first.

Agreed 👍

Okay, so provided you're not already working on more changes? I can just add in the new features I added previously on top of your changes (we can then just prefer the changes in this PR to resolve the conflicts).
That's it from me tonight though, I'll take a look at adding in those new features tomorrow

I've fixed the header validation now.
Can you comment on these two questions:

Is it okay to remove addHeader() and header() methods?
Can we get rid of PHP 5.3 support for v2.0? If I am not mistaken, I have used some 5.4-only features like $this in callbacks.

Is it okay to remove addHeader() and header() methods?

Yup, that's fine :)

Can we get rid of PHP 5.3 support for v2.0? If I am not mistaken, I have used some 5.4-only features like $this in callbacks.

I think that'll be okay, if it's going to cause lots of code changes. Can always refer to the 1.x versions if people need this on PHP5.3

Okay, I've removed the addHeader() stuff and upped the PHP requirement to v5.4.
The methods like importHSPS() and importHPKP() are now unused - do you want to make them public as an alternative for importing directives? Else, they should be removed.
Also, behavior of CompileCSP and similar operations needs to be tested for cases when the header has already been sent another way.

For importHSTS and importHPKP, I think these are probably not so useful (they're relatively simple directives) so we can probably just get rid of these.
I'd still like to keep the behaviour with importCSP though, I've added some changes to the CompileCSP operation that should support either merging all headers with appropriate names or sending the headers side by side (can make this configurable through SecureHeaders via a setter at some point).
This should address what CompileCSP should do when encountering other headers (it definitely shouldn't remove them IMO).

If I remember correctly, the previous behavior was that the configured directives were simply ignored when the header was already sent from somewhere else...

the previous behavior was that the configured directives were simply ignored when the header was already sent from somewhere else

Really? Is this in the current 2.0 branch, or in latest stable? That's a bug if that's happening (https://github.com/aidantwoods/SecureHeaders/wiki/csp#behaviour-when-a-csp-header-has-already-been-set)

Looks like that was just my bad memory then. ;)

Okay, so that should add SameSite cookies and the new header that we're setting be default

I'm a little conscious that AUTO_ALL probably wasn't the best name for the default in auto (in case that we want to add new settings that aren't on by default). So I'll probably change it to AUTO_DEFAULT before 2.0 goes out (something I realised while adding SameSite)

Okay, so with those last commits I've just copy pasted the current versions of the files to resolve the conflicts ;-) (mind doing a sanity check on that?) (don't worry about the regex that changed at the bottom, just want to make sure I didn't remove anything you've added by accident aha)

Looks like PHP 5.4 isn't too happy with arrays being set as constants, I guess we can change it to a static (I think that should be marginally less memory expensive than swapping it for just a regular variable?)

Looks very good! :)
Should we remove the removeHeader() method now as well? That feature doesn't really interact with the rest at all, or does it?

Should we remove the removeHeader() method now as well? That feature doesn't really interact with the rest at all, or does it?

Isn't that still working, looks like it's part of the pipeline function to me?

Yes, but it's not really relevant to the responsibility of this class, which is to configure security headers. I am proposing to remove the removeHeader() method as well as the corresponding pipeline operation.

Okay, yeah I see what you're saying. I guess the use-case is to implement a header blacklist (but this is nothing the equivalent adapter header_remove function couldn't do), so I suppose you're right: it's probably not needed anymore.

Okay, just reverted that push – looks like I forgot about the automatically added header removal use case 😉

e.g.
$headers->removeHeader('X-XSS-Protection');

Ah true, good point.

I can't really see any value in restricting its use to the automatically added headers either, so might as well allow it remove anything by keeping it as is

I guess the notices safe mode produces are on the TODO list?

Okay, I've added an InjectStrictDynamic operation, needed to be injected after the CSP is compiled (and merged), so that a true check of the outgoing CSP can be performed to decide on whether it is injectable.

Looks good from a quick glance.
The only thing I dislike is the decorator magic for the header classes. A HeaderInterface and a factory (method) that returns the correct instance for a given header type would be cleaner IMO.

Yeah, it does always feel a bit dirty using magic methods for everything ;p
Header is now the interface name, and have added HeaderFactory for generating instances

Right, so I think what's left to do is: warnings generated by operations, and more tests (though that'll probably be an ongoing goal).

Great! Do you still want to do that as part of this PR or can we get it merged?
Asking because I still want to do two things (in separate PRs):

final cleanup (e.g. replace done with apply($adapter))
PSR-7 adapter

I'll leave the tests for you. You're the domain expert. Though you might want to write them for the master branch first, and then cherry-pick them onto 2.0 when you're done, so that we can see whether bugs are regressions.

I'd probably like to get the warnings/notices done here (just so we're not losing anything on merge). Tests can wait though :) Writing them for master is probably a good idea 👍

RE the warnings/notices, ideally these would be output after the headers have been passed off to the HttpAdapter (and headers have actually been sent by PHP).
To that end, I wonder whether the Operation implementation should require a collectErrors method that SecureHeaders can use to collect any output generated by the modify method.
Once everything is stored in SecureHeaders, its then a case of deciding how to best make sure errors are output after headers have been sent. Perhaps this role can be delegated to the HttpAdapter, since that is responsible for interacting with a framework (if any).

Two thoughts:

If at all possible, I would prefer to keep the warnings out of the operation classes, to keep these responsibilities separate. I remember you moved one of the warnings into one of them - was that a warning because of the existing headers'  contents, because of the faulty configuration (using the SecureHeaders facade), or a combination of the two? For the latter two cases, it should be easy to move the check back to SecureHeaders. Even for the third, it could be checked for based on the initial HeaderBag that's passed to the apply method.
How about returning a Response or Result object from the apply method - this could either be a successful response or one with warnings (the latter could even have methods to turn itself into a string or to pretty-print itself).

I think it may end up being appropriate to have deciding which errors to output (as a result of the operation) be the responsibility of the Operation. In some cases (like with ApplySafeMode) it may be easy to extrapolate whether a warning is necessary based on whether certain header values changed, but what if later a single header being changed requires one of two notices?
For the case of InjectStrictDynamic, it'll only output a warning if it could not inject 'strict-dynamic' as a result of a missing nonce or hash in the CSP. But it will also leave the header unchanged if the directive already contains 'strict-dynamic', or contains the 'none' keyword. (To differentiate between these cases externally, you'd have to re-implement all the checks the operation has already done to decide why it took a particular action, and whether a warning is necessary).
I suppose we can make having an error collection method optional with a method_exists check though – to reduce clutter in operations that don't need to output anything.

I like this idea as a feature 👍 my only concern would be that it would mean that errors would essentially be off by default (devs now have to look for them). Having SecureHeaders be noisy by default means that you can teach devs something when they don't know they should configure something/they configure something badly.

So I think we can probably put a pin in rethinking how errors are reported (just wanted to make sure notices/warnings weren't lost in this PR).
I'm happy to merge this now :) (unless you have any comments on my changes?)

Not much to add, other than I would slightly prefer an interface for OperationWithErrors rather than an abstract base class, but that's not too important...

Hmm, we can finalise the specifics when we address errors later – though if it was an interface, it would require implementations to implement pretty much identical methods. Whereas with an abstract base, extensions can accept the default, or optionally specify a non default implementation – but an implementation is required (so no loss from an interface's requirements).

Thanks for merging! We're making real progress... 🎉
I was more concerned about depending on an interface, rather than some abstract base class, that is just more flexible for the consumer of the interface in the future (because different implementations will be possible, with no changes to existing code necessary). That that abstract base class happens to implement two more trivial methods is not as important. As duplication is far cheaper than the wrong abstraction.
But yeah, it's not the biggest of issues. ;)

Thanks for merging! We're making real progress... 🎉

No worries! Thanks for all the great PRs! 😄

I was more concerned about depending on an interface, rather than some abstract base class...

We can address this when we revisit the errors 😉 if we name the interface OperationWithErrors and just have an abstract base class which implements this named something like OperationWithNormalErrors having final inheritable methods then we can probably address both our concerns :-)