About the GFlops on the ADE20K dataset.

Hi, I can not find the reported GFlops on the paper about the model Vit-Adapter-L (Mask2former/Beit v2/crop size 896), can you tell me the relevant data or the method to calculate it. Thanks a lot!

Hi, I just upload the get_flops.py for calculating GFLOPs, you can try it.

I run the following command under the directory /ViT-Adapter/segmentation:
python get_flops.py configs/ade20k/upernet_deit_adapter_tiny_512_160k_ade20k.py
but got an error:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/mmcv/utils/registry.py", line 52, in build_from_cfg
return obj_cls(**args)
File "/usr/local/lib/python3.6/dist-packages/mmseg/models/segmentors/encoder_decoder.py", line 36, in init
self.backbone = builder.build_backbone(backbone)
File "/usr/local/lib/python3.6/dist-packages/mmseg/models/builder.py", line 20, in build_backbone
return BACKBONES.build(cfg)
File "/usr/local/lib/python3.6/dist-packages/mmcv/utils/registry.py", line 212, in build
return self.build_func(*args, **kwargs, registry=self)
File "/usr/local/lib/python3.6/dist-packages/mmcv/cnn/builder.py", line 27, in build_model_from_cfg
return build_from_cfg(cfg, registry, default_args)
File "/usr/local/lib/python3.6/dist-packages/mmcv/utils/registry.py", line 45, in build_from_cfg
f'{obj_type} is not in the {registry.name} registry')
KeyError: 'ViTAdapter is not in the models registry'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "get_flops.py", line 100, in
test_cfg=cfg.get('test_cfg'))
File "/usr/local/lib/python3.6/dist-packages/mmseg/models/builder.py", line 49, in build_segmentor
cfg, default_args=dict(train_cfg=train_cfg, test_cfg=test_cfg))
File "/usr/local/lib/python3.6/dist-packages/mmcv/utils/registry.py", line 212, in build
return self.build_func(*args, **kwargs, registry=self)
File "/usr/local/lib/python3.6/dist-packages/mmcv/cnn/builder.py", line 27, in build_model_from_cfg
return build_from_cfg(cfg, registry, default_args)
File "/usr/local/lib/python3.6/dist-packages/mmcv/utils/registry.py", line 55, in build_from_cfg
raise type(e)(f'{obj_cls.name}: {e}')
KeyError: "EncoderDecoder: 'ViTAdapter is not in the models registry'"
I need some help. Thank you very much!

oh, you should import mmcv_custom and mmseg_custom at the begining of this code

Thanks for your attention. I have imported mmcv_custom and mmseg_custom at the begining of this code, but still got this error. Need some help!


⚠ Bofrost.de has degraded performance

In d3fd35f, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1661 ms

Resolved: Bofrost.de performance has improved in 3a4c29a after 6 minutes.


Fix/update images to use cuda driver 550

Description
This PR adds compatibility with the new NVIDIA Driver installed (550.54.15)
Motivation and Context

After partitioning with MIG, we installed the newest version that was shipped along with the gpu-operator (550.90.17) But this version was causing compatibility version issues between CUDA libraries and the Driver version. We have pinned the driver version to 550.54.15 and this PR installs and links the right libraries in the old images and provides a new CUDA 12.4.1 image whose libraries are compatible with the new Driver version
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Other changes (ci configuration, documentation or any other kind of changes)

Checklist:

[x] I have created tests for my code changes, and the tests are passing.
[x] I have executed the pre-commit hooks locally.
[ ] My change requires a change to the documentation (create a new issue if the documentation has not been updated).
[x] I have updated the documentation accordingly.

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.2.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Resolve workflow deprecation notice

This PR resolves an issue where https://github.com/corona-warn-app/cwa-documentation/actions/workflows/checks.yml shows the deprecation notice:
"Build
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: actions/checkout, actions/setup-node, actions/setup-node, actions/checkout"
by updating
cwa-documentation/actions as follows:

actions/checkout@v2 to v3
actions/setup-node@v2 to v3

@MikeMcC399 Thanks!


Clean up docs and tests for PR 75

Codecov Report

Merging #76 into master will not change coverage.
The diff coverage is 100%.

@@            Coverage Diff            @@
##             master      #76   +/-   ##
=========================================
  Coverage     99.35%   99.35%
  Complexity      660      660
=========================================
  Files            49       49
  Lines          1539     1539
  Branches        166      166
=========================================
  Hits           1529     1529
  Misses            4        4
  Partials          6        6

Impacted Files
Coverage Δ
Complexity Δ

...ips/zipkin2/WingtipsToZipkinLifecycleListener.java
100% <100%> (ø)
9 <0> (ø)
:arrow_down:

...in2/WingtipsWithZipkinSpringBootConfiguration.java
100% <100%> (ø)
7 <0> (ø)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update fceb881...1a77ce4. Read the comment docs.


Socks5 proxy rejected connection - NotAllowed

Hello, I started to receive such error when calling any api endpoint.  My code, which configurates proxy, below:
import * as shttps from 'socks-proxy-agent'
...
this.request.defaults.agentClass = shttps
this.request.defaults.agentOptions = {
    host:proxy.ip,
    port:proxy.port,
    //@ts-ignore
    userId:proxy.username,
    password:proxy.password
}

It was working two days ago, but how can I solve it now?
Error occurs on version 1.43.3 and 1.44.0

Solved as below
import { SocksProxyAgent } from 'socks-proxy-agent'
...
this.request.defaults.agent = new SocksProxyAgent({
host:proxy.ip,
port:proxy.port,
userId:proxy.username,
password:proxy.password
})

Your solutions will not give you an error but it's not working. It's sending
request from your IP not from the proxy
You just need to specify socks type in your code
import shttps from 'socks-proxy-agent'
...
this.request.defaults.agentClass = shttps
this.request.defaults.agentOptions = {
host:proxy.ip,
port:proxy.port,
protocol: 'socks5',
userId:proxy.username,
password:proxy.password
}

There is a feeling that it now just works without a proxy.


Installing xarray[accel] uv fails

Hi,
When installing xarray with the optional "accel" dependencies, this fails with a uv-generated venv. With a venv created with a python install I had on my system (from homebrew in this case) I was able to pip install ok.
Both were python version 3.12.6.

This runs without issue for me:
❯ uv pip install "xarray[accel]"
Resolved 17 packages in 176ms
Prepared 8 packages in 2.12s
Installed 17 packages in 99ms
 + bottleneck==1.4.1
 + flox==0.9.10
 + llvmlite==0.43.0
 + numba==0.60.0
 + numbagg==0.8.2
 + numpy==2.0.2
 + numpy-groupies==0.11.2
 + opt-einsum==3.4.0
 + packaging==24.1
 + pandas==2.2.3
 + python-dateutil==2.9.0.post0
 + pytz==2024.2
 + scipy==1.13.1
 + six==1.16.0
 + toolz==1.0.0
 + tzdata==2024.2
 + xarray==2024.7.0

We'd need a reproduction in order to help out here.

Thanks for getting back to me on this.
This is with macOS 15.0.1 (24A348)
I tried with uv-generated venvs using python versions:

3.12.7 (I have it on my system via Homebrew so uv used that)
3.11.9 (uv downloaded)
3.10.15 (uv downloaded)
All of which failed as they tried to use numba==0.53.1 which caused:

RuntimeError: Cannot install on Python version 3.10.15; only versions >=3.6,<3.10 are supported.

When I created the venv just using the Homebrew-installed python3.12 directly, it used numba==0.60.0 and worked.
❯ python3.12 -m venv venv
❯ source venv/bin/activate
❯ pip install "xarray[accel]"
Collecting xarray[accel]
  Using cached xarray-2024.9.0-py3-none-any.whl.metadata (11 kB)
Collecting numpy>=1.24 (from xarray[accel])
  Downloading numpy-2.1.2-cp312-cp312-macosx_14_0_arm64.whl.metadata (60 kB)
Collecting packaging>=23.1 (from xarray[accel])
  Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting pandas>=2.1 (from xarray[accel])
  Using cached pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl.metadata (89 kB)
Collecting scipy (from xarray[accel])
  Using cached scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl.metadata (60 kB)
Collecting bottleneck (from xarray[accel])
  Downloading Bottleneck-1.4.1-cp312-cp312-macosx_11_0_arm64.whl.metadata (7.9 kB)
Collecting numbagg (from xarray[accel])
  Using cached numbagg-0.8.2-py3-none-any.whl.metadata (47 kB)
Collecting flox (from xarray[accel])
  Using cached flox-0.9.13-py3-none-any.whl.metadata (17 kB)
Collecting opt-einsum (from xarray[accel])
  Using cached opt_einsum-3.4.0-py3-none-any.whl.metadata (6.3 kB)
Collecting python-dateutil>=2.8.2 (from pandas>=2.1->xarray[accel])
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting pytz>=2020.1 (from pandas>=2.1->xarray[accel])
  Using cached pytz-2024.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas>=2.1->xarray[accel])
  Using cached tzdata-2024.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting numpy-groupies>=0.9.19 (from flox->xarray[accel])
  Using cached numpy_groupies-0.11.2-py3-none-any.whl.metadata (18 kB)
Collecting toolz (from flox->xarray[accel])
  Downloading toolz-1.0.0-py3-none-any.whl.metadata (5.1 kB)
Collecting numba (from numbagg->xarray[accel])
  Using cached numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (2.7 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas>=2.1->xarray[accel])
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting llvmlite<0.44,>=0.43.0dev0 (from numba->numbagg->xarray[accel])
  Using cached llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (4.8 kB)
Collecting numpy>=1.24 (from xarray[accel])
  Using cached numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl.metadata (60 kB)
Using cached packaging-24.1-py3-none-any.whl (53 kB)
Using cached pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl (11.4 MB)
Downloading Bottleneck-1.4.1-cp312-cp312-macosx_11_0_arm64.whl (98 kB)
Using cached flox-0.9.13-py3-none-any.whl (70 kB)
Using cached scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl (23.1 MB)
Using cached numbagg-0.8.2-py3-none-any.whl (49 kB)
Using cached opt_einsum-3.4.0-py3-none-any.whl (71 kB)
Using cached xarray-2024.9.0-py3-none-any.whl (1.2 MB)
Using cached numpy_groupies-0.11.2-py3-none-any.whl (40 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached pytz-2024.2-py2.py3-none-any.whl (508 kB)
Using cached tzdata-2024.2-py2.py3-none-any.whl (346 kB)
Using cached numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB)
Using cached numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl (5.0 MB)
Downloading toolz-1.0.0-py3-none-any.whl (56 kB)
Using cached llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl (28.8 MB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: pytz, tzdata, toolz, six, packaging, opt-einsum, numpy, llvmlite, scipy, python-dateutil, numpy-groupies, numba, bottleneck, pandas, numbagg, xarray, flox
Successfully installed bottleneck-1.4.1 flox-0.9.13 llvmlite-0.43.0 numba-0.60.0 numbagg-0.8.2 numpy-2.0.2 numpy-groupies-0.11.2 opt-einsum-3.4.0 packaging-24.1 pandas-2.2.3 python-dateutil-2.9.0.post0 pytz-2024.2 scipy-1.14.1 six-1.16.0 toolz-1.0.0 tzdata-2024.2 xarray-2024.9.0

Is there any more information I can provide?

I think this is specific to numba and numpy -- there's a thorough write-up of the problem here: https://github.com/astral-sh/uv/issues/8157. The issue is that Numba sets an upper-bound that excludes the latest NumPy, so if we solve for the latest NumPy, we give you an old version of Numba. It's a completely valid install, but fails at runtime.
I'd suggest adding numba>=0.60.0 as a constraint the install for now, though we're working on heuristics to get solves that are more intuitive here.

(Or numpy<2.1.)

I'm going to close this as a case of https://github.com/astral-sh/uv/issues/8157, but I do want to fix that soon. Let me know if you have follow-up questions about the workaround I suggested here.

❯ uv pip install "xarray[accel]" "numba>=0.60.0"
Resolved 17 packages in 360ms
Prepared 5 packages in 5.41s
Installed 17 packages in 461ms
 + bottleneck==1.4.1
 + flox==0.9.13
 + llvmlite==0.43.0
 + numba==0.60.0
 + numbagg==0.8.2
 + numpy==2.0.2
 + numpy-groupies==0.11.2
 + opt-einsum==3.4.0
 + packaging==24.1
 + pandas==2.2.3
 + python-dateutil==2.9.0.post0
 + pytz==2024.2
 + scipy==1.14.1
 + six==1.16.0
 + toolz==1.0.0
 + tzdata==2024.2
 + xarray==2024.9.0

Thank you @charliermarsh , leaving the explicit solution here for future googlers. uv is excellent btw and has made things a lot easier!

Thank you so much! Sorry about this specific pain point. It's been bothering me a lot 😅 But we have a plan to fix it.


Add templates for issues

What would you like to share?
Issue templates are very helpful for a collaboration repo. When users identify a bug or want to add a new feature, you can provide templates so you can collect all the pertinent information you need to fix a bug or add a new feature.
We recommend creating a “Report Bug” and “Feature Request” issue template.
you can refer this: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository
Some suggested prompts/questions you can add to a “Report Bug” template are:
Briefly describe the bug
What is the expected behavior?
Please provide step by step instructions on how to reproduce the bug
Some suggested prompts/questions you can add to a “Feature Request” issue template are:
Briefly describe your feature request
What problem is this feature trying to solve?
How do we know when the feature is complete?
Reference: https://github.com/Recode-Hive/Stackoverflow-Analysis/issues/new/choose
Click on Get Started button and copy the template to your
Additional information
No response

I would like to work on this issue. Please assign it to me.


Prevent AWS credentials refresh from stopping on exception

If aws_credentials() fails due to an unstable network or other issues, it throws an exception. This stops timer_execute() from repeating its block, preventing OpenSearchOutput from updating @_aws_credentials. As a result, @_aws_credentials will expire.
This commit catches the exception and prevents it from propagating to timer_execute(), ensuring continuous credential updates.

This will fix https://github.com/fluent/fluent-plugin-opensearch/issues/129
It looks like there is no test case for @_aws_credentials and aws_credentials(). I don't create a testcase for the exception. Sorry.

@aYukiSekiguchi san, I really appreciate the PR. Could you please check and fix the failing test cases? I kind of waiting for this to be merged.

@akhil31415
I'm not very familiar with GitHub Actions, so I might be mistaken.
Ruby 3.2 Unit Testing on ubuntu-latest

Failed Job Logs

The job failed with the following error:The installation path is insecure. Bundler cannot continue.
/opt/hostedtoolcache/Ruby/3.2.5/x64/lib/ruby/gems/3.2.0/gems is world-writable (without sticky bit).
Bundler cannot safely replace gems in world-writable directories due to potential vulnerabilities.
Please change the permissions of this directory or choose a different install path.
Error: Process completed with exit code 38.

It seems there is an issue with the GitHub Action settings.
This might be resolved by re-running the action, but it appears I don't have the permissions to do so.

Coverage/Coveralls

As mentioned in my previous comment, there is no test for @_aws_credentials.
Since I added begin / rescue to the @_aws_credentials code, this has decreased the branch coverage.
I'm unsure if this project allows for a decrease in coverage.
If decreasing coverage is not acceptable, I will try to write the necessary tests when I have some free time.

Sorry for our less activity in this plugin.
We are queuing this as our next task, will tackle on it next week.

Thank you for retrying. It looks like there is a bug in .github/workflows/linux.yml. I have submitted a PR to fix the issue: PR #143.

Hi, I merged you fixing Linux workflow PR. Could you rebase off master?

Sorry to rush, but is there any ETA on merging/releasing this change?
Thanks!

@ashie @kenhys @daipom Could y'all take over this PR?

Sorry for any confusion.
I'm waiting for the committer to decide whether the Coveralls failure, which decreased coverage, is acceptable. Some recent commits to the main branch also failed Coveralls, so I think this is sometimes acceptable.

It seems that PR itself is reasonable but it might be better to add test case for it in assured.
I'll look into it.

MEMO: it is enough that mock aws_credentials and raise RuntimeError in second call, then assert existence of error log message.


Add function generate_sig

https://instagram.com/developer/secure-api-requests/

Thanks for your contribution! Could you reformat this commit to only show what you've added? Currently big chunks of the class has reformatted syntax.

Tested your fork. Not working for me.
Follow function returns error.
[code] => 403
[error_type] => OAuthForbiddenException
[error_message] => Invalid header: X-Insta-Forwarded-For is required for this operation
Please. Test your code. And as mentioned, do not format whole file.


Define CloudWatch Alarm Payload structure

Issue
Tries to solve an issue similar to #51 for CloudWatch Alarm Payload in a SNSEvent. If this this merged, can do another PR to resolve #51
Description of changes
TL;DR
Added struct for CloudWatch Alarm payload.
Details

CloudWatch Alarm information lands up in SNSEntity.
This payload is a valid json string in the SNSEntity.Message containing information about the alarm that changed state and published to SNS topic triggering the lambda function.
CloudWatch Alarm payload can contain either:

Metrics: A list inside the Trigger section of the payload.

Metrics contains the list of metrics alarm is based off.

Metric: Details of the single metric that the alarm is based off.

A sample event containing Metrics can be found here.
A sample event containing single Metric information can be found here.

Structs Details

The CloudWatchAlarmSnsPayload struct refers to first level in the JSON containing information.
The CloudWatchAlarmTrigger struct refers to the trigger information.
The CloudWatchMetricDataQuery struct refers to the list of Metrics inside Trigger.
The CloudWatchMetricStat struct refers to the MetricStat key inside the Metric Data Query.
The CloudWatchMetric struct refers to the Metric information inside MetricStat.
The CloudWatchDimension struct refers to Dimensions of the metric inside CloudWatchMetric.

Why so many structs?

All the structs defined except CloudWatchAlarmSnsPayload are already defined in the CloudWatch module in the AWS GO SDK.
However, the structs in the CloudWatch module don't have any json definitions and hence to be in sync with how SNS related structs are defined, these have to defined again.
Finally, all structs can be defined as nested ones in a single CloudWatchAlarmSnsPaylaod but for better readability nested structs are defined separately.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Codecov Report

Merging #296 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #296   +/-   ##
=======================================
  Coverage   74.60%   74.60%
=======================================
  Files          13       13
  Lines         638      638
=======================================
  Hits          476      476
  Misses        123      123
  Partials       39       39

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 26aa364...027ec34. Read the comment docs.

Thanks!


ENH: Index optional pivot

Closes #3962.

Addressed comments.

Failures look unrelated?

lgtm. can you add a release note refing the original issue. squash, then ping when green.

Done

can you update the doc-strings of both pd.pivot and DataFrame.pivot (saying index is optional/can be None).
can you add a test using pd.pivot?

Are there any tests for pd.pivot? It's just a pass-through.

looks pd.pivot_table == DataFrame.pivot_table. While pd.pivot == DataFrame.pivot.
So ok on .pivot. Maybe have a look at .pivot_table?

It appears to work.
In [8]: df
Out[8]:
     A    B      C  D
0  foo  one  small  1
1  foo  one  large  2
2  foo  one  large  2
3  foo  two  small  3
4  foo  two  small  3
5  bar  one  large  4
6  bar  one  small  5
7  bar  two  small  6
8  bar  two  large  7

In [9]: pd.pivot_table(df, values='D', index=None, columns=['C'], aggfunc=np.sum)
Out[9]:
C
large    15
small    18
Name: D, dtype: int64

In [10]: pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum)
Out[10]:
C        large  small
A   B
bar one      4      5
    two      7      6
foo one      4      1
    two    NaN      6

ok gr8. test pretty pretty pls.

It's tested. https://github.com/pydata/pandas/blob/master/pandas/tools/tests/test_pivot.py#L60

ic, I guess that already accepted None then, ok.

ok, just fix the doc-string and push again.

Done.

ok cool. ping when green.

thank you sir!


feat(bug): resolve dtm init prompt error during first download

Signed-off-by: zhaozhenhang<EMAIL_ADDRESS>Related Issues
close #654

Thank you for your Contribution very much! I will review this PR soon. @azhsmesos

btw, to make your first contribution easier and happier, there are some suggestions that may be useful for you. @azhsmesos

You be you have noticed that the CI failed because of "DCO".  You can check this Chinese doc about sign-off.  Also, you can use Goland to help you do that.

You may be bothered by some small commits. I guess you really want to make them into one commit. You can use git rebase to do that. Or you can use Goland to do it and it is easier. https://blog.csdn.net/weixin_43753680/article/details/117363518

Here is  the suggested workflow:

Change the code under the guide of review.
Do not forget to Sign Off on each commit.
rebase commits.
execute git push origin -f to force push codes to here.

In addition, feat means a new feature.
So feat(bug) may not suitable.
I think you could write commit message in this way:
fix: xxx
or
fix(pluginmanager):xxx
Hope that I don't bother you.
Please feel free tk ask me for any help. :heart:

话说DCO这个，我不太清楚该怎么弄

Are you convenient to add my WeChat? just search aFlyBird0

话说DCO这个，我不太清楚该怎么弄

Are you convenient to add my WeChat? just search aFlyBird0

Already added

@azhsmesos Hi,
Thanks for your contribution!
Please join our Slack here. Feel free to reach out and request to join the contributor channel! We are also in CNCF now; please also consider joining this channel in CNCF Slack.
In the meantime, feel free to check out our new contributor guide. We have quite a few pieces of documentation explaining the basic concepts and how to work on DevStream. Read them in the "Developer Guide" section of the documentation.
If you are searching for something else to work on, please do check out the "find an issue" section. The "help wanted" label is an excellent place to continue. If you are not completely confident yet, maybe you can warm yourself up by solving another "good first issue".


Import exclusions

Until recently I had non-importable items in the repository, so "Import All" if failed on loading, but ddin't bring anything undesired.
But right now I want to put a few actual Studio projects as examples of containers, and I do not want to get them imported by "Import All" (but rather they will be used/loaded/unloaded as part of unit-testing scenarios). Like here https://github.com/intersystems-ru/CPM/tree/package_xml/t/simple/simple.xml
Could you please provide exclude patterns functionality?

starting with ef61d4c921a87ece98a8f4a15a81dcca2d89cc74 cache-tort-git only imports items that are tracked by source-control


don't override cmake variables when they are already set from outside (fixes #22125)

see the discussion in #22125
@nicolasnoble
@Dlougach
@jtattermusch

@veblush  please add another googler's LGTM.

Recreated the PR without typo in https://github.com/grpc/grpc/pull/22976


What is Xcode version for Flutter v2.0.4?

Hello! What is the best Xcode version for Flutter v2.0.4? I am asking because I had problems after I upgraded to Xcode 12.5 a few days ago, which did not let me run/debug my project. Thanks!

Hi @Alvaro-99
Xcode 12.5 shouldn't have any issue with Flutter 2.0.4, Xcode 12 is supported in Flutter 2
Please upgrade your Flutter to the latest stable and try again
When opening an issue, please try to provide all or some of the information indicated in the template.

Issue Template
If you are looking for support, please check out our documentation
or consider asking a question on Stack Overflow:
- https://flutter.dev/
- https://api.flutter.dev/
- https://stackoverflow.com/questions/tagged/flutter?sort=frequent

If you have found a bug or if our documentation doesn't have an answer
to what you're looking for, then fill our the template below. Please read
our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports

Steps to Reproduce

Please tell us exactly how to reproduce the problem you are running into.

Please attach a small application (ideally just one main.dart file) that
reproduces the problem. You could use https://gist.github.com/ for this.

If the problem is with your application's rendering, then please attach
a screenshot and explain what the problem is.

1. ...
2. ...
3. ...

Please tell us which target platform(s) the problem occurs (Android / iOS / Web / macOS / Linux / Windows)
Which target OS version, for Web, browser, is the test system running?
Does the problem occur on emulator/simulator as well as on physical devices?

Target Platform:
Target OS version/browser:
Devices:

Run your application with `flutter run --verbose` and attach all the
log output below between the lines with the backticks. If there is an
exception, please see if the error message includes enough information
to explain how to solve the issue.

Run `flutter analyze` and attach any output of that command below.
If there are any analysis errors, try resolving them before filing this issue.

Finally, paste the output of running `flutter doctor -v` here.

Closing this issue, since no information has been provided.
Thank you.


actually use config properly

now we have basic functionality of linters setup, we need to actually use the config (this might involve making sure the 'compiler' actually works)

closed by 397166ca2121c45f566b78605f1ee2e43550b3cb


libhdf5-dev unavailable on latest Ubuntu?

I was trying to install this today, and 'sudo apt-get install libhdf5-dev' failed with "Unable to locate package libhdf5-dev". Apparently libhdf5-dev doesn't exist at all on the most recent Ubuntu version, or something like that? Is there any good workaround for this? I'm a linux newbie so I could be overlooking something.

Enable universe repository: http://askubuntu.com/a/148645/118413

TY for the prompt response, I'll try this next time.

Even after enabling all repositories, I still get "E: Unable to locate package libhdf5-8"


Remove CoreRegistry usage: Part IV

Reduces CoreRegistry usage.
It does not conflict with #1797

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/157/
Hooray Jenkins reported success with all tests good!

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/158/
Hooray Jenkins reported success with all tests good!

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/159/
Hooray Jenkins reported success with all tests good!

@immortius able to give this a spin with some review now that #1797 is merged?
@emanuele3d - ping, maybe a bit of interest, there's some rendering and TeraEd in there.

@immortius was way too efficient for me. Perhaps he wanted to save @flo from a barrage of comments from me? =D
I just had a look and I only found one thing I would have commented about. But it's a very minor, non functional, code style issue and we don't need to worry about. At some point I'll have to put my hands on the WorldRendererImpl class again and I'll do the change then.

@emanuele3d feel free to still create a comment. It is not the last CoreRegistry removal pull request I am creating. So I am happy that @Immoritus merged it.


calculate proxy port limits

We need to properly calculate the limitations of outgoing connections a single proxy pod can sustain.
This is so we can tune HTTP connection pool size, or perhaps fail health checks when too many connections are in proxy-pass.

kubectl exec -ti neon-proxy-scram -- /bin/bash

$ cat /proc/sys/net/ipv4/ip_local_port_range
32768	60999

Seems like 28232 ports are available per pod.
Can we increase this to the full 1024..=65535 range?

This is done.


rel-v0.8

Optical images deletion related additions
Other style related additions

@Ren22, please fix the conflicting file ImageAlignmentPage.vue

@iprotsyuk, should be fine now

Concerning the file ImageAlignmentPage.vue: @Ren22, can you please revert the spaces as they were before, since according the GitHub diff, you rewrote the file completely, which makes your changes rather hard to spot. At the end of the review, you can return the spaces back


4.5 DCR: ChangeList step missing in C#

C# is missing the ChangeList step.
[dcr]

Oh it's EditArray now...


[models] Support Model3D (.m3d) file format

Hi,
Could you please add Model 3D format to the supported models? It has an stb-style single header SDK written in ANSI C, looks simple to integrate.
I've already started the necessary work, see below (note this is just a minimal implementation, only loads meshes, but does not handle all the M3D features like skeletal animations etc.) Here are the steps I made:

place m3d.h under src/external
added #define SUPPORT_FILEFORMAT_M3D      1 to src/config.h
modified src/rmodels.c, and added LoadM3D: rmodels.c.gz

But the diff is pretty small, here it is in its entirety for easier review:
diff --git a/src/config.h b/src/config.h
index ce7d9b04..a7ec2523 100644
--- a/src/config.h
+++ b/src/config.h
@@ -192,6 +192,7 @@
 #define SUPPORT_FILEFORMAT_IQM      1
 #define SUPPORT_FILEFORMAT_GLTF     1
 #define SUPPORT_FILEFORMAT_VOX      1
+#define SUPPORT_FILEFORMAT_M3D      1
 // Support procedural mesh generation functions, uses external par_shapes.h library
 // NOTE: Some generated meshes DO NOT include generated texture coordinates
 #define SUPPORT_MESH_GENERATION     1
diff --git a/src/rmodels.c b/src/rmodels.c
index ee8b2117..5361f1a5 100644
--- a/src/rmodels.c
+++ b/src/rmodels.c
@@ -12,6 +12,7 @@
 *   #define SUPPORT_FILEFORMAT_IQM
 *   #define SUPPORT_FILEFORMAT_GLTF
 *   #define SUPPORT_FILEFORMAT_VOX
+*   #define SUPPORT_FILEFORMAT_M3D
 *       Selected desired fileformats to be supported for model data loading.
 *
 *   #define SUPPORT_MESH_GENERATION
@@ -86,6 +87,17 @@
     #include "external/vox_loader.h"    // VOX file format loading (MagikaVoxel)
 #endif

+#if defined(SUPPORT_FILEFORMAT_M3D)
+    #define M3D_MALLOC RL_MALLOC
+    #define M3D_REALLOC RL_REALLOC
+    #define M3D_FREE RL_FREE
+    // let the M3D SDK know about stb_image is used in this project, so it'll use it too
+    #include "external/stb_image.h"
+
+    #define M3D_IMPLEMENTATION
+    #include "external/m3d.h"    // Model3D file format loading
+#endif
+
 #if defined(SUPPORT_MESH_GENERATION)
     #define PAR_MALLOC(T, N) ((T*)RL_MALLOC(N*sizeof(T)))
     #define PAR_CALLOC(T, N) ((T*)RL_CALLOC(N*sizeof(T), 1))
@@ -141,6 +153,9 @@ static Model LoadGLTF(const char *fileName);    // Load GLTF mesh data
 #if defined(SUPPORT_FILEFORMAT_VOX)
 static Model LoadVOX(const char *filename);     // Load VOX mesh data
 #endif
+#if defined(SUPPORT_FILEFORMAT_M3D)
+static Model LoadM3D(const char *filename);     // Load M3D mesh data
+#endif

 //----------------------------------------------------------------------------------
 // Module Functions Definition
@@ -927,6 +942,9 @@ Model LoadModel(const char *fileName)
 #if defined(SUPPORT_FILEFORMAT_VOX)
     if (IsFileExtension(fileName, ".vox")) model = LoadVOX(fileName);
 #endif
+#if defined(SUPPORT_FILEFORMAT_M3D)
+    if (IsFileExtension(fileName, ".m3d")) model = LoadM3D(fileName);
+#endif

     // Make sure model transform is set to identity matrix!
     model.transform = MatrixIdentity();
@@ -5101,4 +5119,129 @@ static Model LoadVOX(const char *fileName)
 }
 #endif

+#if defined(SUPPORT_FILEFORMAT_M3D)
+// the LoadFileData / UnloadFileData API almost the same, but prototypes differ a bit
+unsigned char *m3d_loaderhook(char *fn, unsigned int *len) { return LoadFileData((const char*)fn, len); }
+void m3d_freehook(void *data) { UnloadFileData((unsigned char*)data); }
+// Load M3D mesh data
+static Model LoadM3D(const char *fileName)
+{
+    Model model = { 0 };
+    m3d_t *m3d;
+    m3dp_t *prop;
+    unsigned int bytesRead = 0;
+    unsigned char *fileData = LoadFileData(fileName, &bytesRead);
+    int i, j, k, l, mi = -2;
+
+    if (fileData != NULL)
+    {
+        m3d = m3d_load(fileData, m3d_loaderhook, m3d_freehook, NULL);
+
+        if(!m3d || m3d->errcode != M3D_SUCCESS) {
+            TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load M3D data", fileName);
+            return model;
+        } else {
+            TRACELOG(LOG_INFO, "MODEL: [%s] M3D data loaded successfully: %i faces/%i materials", fileName, m3d->numface, m3d->nummaterial);
+        }
+
+        if(m3d->nummaterial > 0) {
+            model.meshCount = model.materialCount = m3d->nummaterial;
+            TraceLog(LOG_INFO, "MODEL: model has %i material meshes", model.materialCount);
+        } else {
+            model.meshCount = model.materialCount = 1;
+            TraceLog(LOG_INFO, "MODEL: No materials, putting all meshes in a default material");
+        }
+
+        model.meshes = (Mesh *)RL_CALLOC(model.meshCount, sizeof(Mesh));
+        model.meshMaterial = (int *)RL_CALLOC(model.meshCount, sizeof(int));
+        model.materials = (Material *)RL_CALLOC(model.meshCount + 1, sizeof(Material));
+        /* we map no material to index 0 with default shader, everything else materialid + 1 */
+        model.materials[0] = LoadMaterialDefault();
+        model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = (Texture2D){ rlGetTextureIdDefault(), 1, 1, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 };
+
+        for(i = l = 0, k = -1; i < m3d->numface; i++, l++) {
+            /* materials are grouped together */
+            if(mi != m3d->face[i].materialid) {
+                k++;
+                mi = m3d->face[i].materialid;
+                for(j = i, l = 0; j < m3d->numface && mi == m3d->face[j].materialid; j++, l++);
+                model.meshes[k].vertexCount = l*3;
+                model.meshes[k].triangleCount = l;
+                model.meshes[k].vertices = (float *)RL_CALLOC(model.meshes[k].vertexCount*3, sizeof(float));
+                model.meshes[k].texcoords = (float *)RL_CALLOC(model.meshes[k].vertexCount*2, sizeof(float));
+                model.meshes[k].normals = (float *)RL_CALLOC(model.meshes[k].vertexCount*3, sizeof(float));
+                model.meshMaterial[k] = mi + 1;
+                l = 0;
+            }
+            /* now we have meshes per material, add triangles */
+            model.meshes[k].vertices[l * 9 + 0] = m3d->vertex[m3d->face[i].vertex[0]].x;
+            model.meshes[k].vertices[l * 9 + 1] = m3d->vertex[m3d->face[i].vertex[0]].y;
+            model.meshes[k].vertices[l * 9 + 2] = m3d->vertex[m3d->face[i].vertex[0]].z;
+            model.meshes[k].vertices[l * 9 + 3] = m3d->vertex[m3d->face[i].vertex[1]].x;
+            model.meshes[k].vertices[l * 9 + 4] = m3d->vertex[m3d->face[i].vertex[1]].y;
+            model.meshes[k].vertices[l * 9 + 5] = m3d->vertex[m3d->face[i].vertex[1]].z;
+            model.meshes[k].vertices[l * 9 + 6] = m3d->vertex[m3d->face[i].vertex[2]].x;
+            model.meshes[k].vertices[l * 9 + 7] = m3d->vertex[m3d->face[i].vertex[2]].y;
+            model.meshes[k].vertices[l * 9 + 8] = m3d->vertex[m3d->face[i].vertex[2]].z;
+            if(m3d->face[i].texcoord[0] != M3D_UNDEF) {
+                model.meshes[k].texcoords[l * 6 + 0] = m3d->tmap[m3d->face[i].texcoord[0]].u;
+                model.meshes[k].texcoords[l * 6 + 1] = m3d->tmap[m3d->face[i].texcoord[0]].v;
+                model.meshes[k].texcoords[l * 6 + 2] = m3d->tmap[m3d->face[i].texcoord[1]].u;
+                model.meshes[k].texcoords[l * 6 + 3] = m3d->tmap[m3d->face[i].texcoord[1]].v;
+                model.meshes[k].texcoords[l * 6 + 4] = m3d->tmap[m3d->face[i].texcoord[2]].u;
+                model.meshes[k].texcoords[l * 6 + 5] = m3d->tmap[m3d->face[i].texcoord[2]].v;
+            }
+            if(m3d->face[i].normal[0] != M3D_UNDEF) {
+                model.meshes[k].normals[l * 9 + 0] = m3d->vertex[m3d->face[i].normal[0]].x;
+                model.meshes[k].normals[l * 9 + 1] = m3d->vertex[m3d->face[i].normal[0]].y;
+                model.meshes[k].normals[l * 9 + 2] = m3d->vertex[m3d->face[i].normal[0]].z;
+                model.meshes[k].normals[l * 9 + 3] = m3d->vertex[m3d->face[i].normal[1]].x;
+                model.meshes[k].normals[l * 9 + 4] = m3d->vertex[m3d->face[i].normal[1]].y;
+                model.meshes[k].normals[l * 9 + 5] = m3d->vertex[m3d->face[i].normal[1]].z;
+                model.meshes[k].normals[l * 9 + 6] = m3d->vertex[m3d->face[i].normal[2]].x;
+                model.meshes[k].normals[l * 9 + 7] = m3d->vertex[m3d->face[i].normal[2]].y;
+                model.meshes[k].normals[l * 9 + 8] = m3d->vertex[m3d->face[i].normal[2]].z;
+            }
+        }
+
+        for(i = 0; i < m3d->nummaterial; i++) {
+            model.materials[i + 1] = LoadMaterialDefault();
+            model.materials[i + 1].maps[MATERIAL_MAP_DIFFUSE].texture = (Texture2D){ rlGetTextureIdDefault(), 1, 1, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 };
+            for(j = 0; j < m3d->material[i].numprop; j++) {
+                prop = &m3d->material[i].prop[j];
+                switch(prop->type) {
+                    case m3dp_Kd:
+                        memcpy(&model.materials[i + 1].maps[MATERIAL_MAP_DIFFUSE].color, &prop->value.color, 4);
+                        model.materials[i + 1].maps[MATERIAL_MAP_DIFFUSE].value = 0.0f;
+                    break;
+                    case m3dp_Ks:
+                        memcpy(&model.materials[i + 1].maps[MATERIAL_MAP_SPECULAR].color, &prop->value.color, 4);
+                        model.materials[i + 1].maps[MATERIAL_MAP_SPECULAR].value = 0.0f;
+                    break;
+                    case m3dp_Ke:
+                        memcpy(&model.materials[i + 1].maps[MATERIAL_MAP_EMISSION].color, &prop->value.color, 4);
+                        model.materials[i + 1].maps[MATERIAL_MAP_EMISSION].value = 0.0f;
+                    break;
+                    case m3dp_Pm:
+                        model.materials[i + 1].maps[MATERIAL_MAP_METALNESS].value = prop->value.fnum;
+                    break;
+                    case m3dp_Pr:
+                        model.materials[i + 1].maps[MATERIAL_MAP_ROUGHNESS].value = prop->value.fnum;
+                    break;
+                    case m3dp_Ps:
+                        model.materials[i + 1].maps[MATERIAL_MAP_NORMAL].color = WHITE;
+                        model.materials[i + 1].maps[MATERIAL_MAP_NORMAL].value = prop->value.fnum;
+                    break;
+                }
+            }
+        }
+
+        m3d_free(m3d);
+        UnloadFileData(fileData);
+    }
+
+    return model;
+}
+#endif
+
 #endif      // SUPPORT_MODULE_RMODELS

NOTE: this just loads the mesh and some material properties, but does not provide full support (yet). This is just the first step.
Please let me know what you think.
Thanks,
bzt

Hi @bztsrc! Your Model3D format looks great! I like it a lot! Congratulations!
Feel free to send a PR with this amazing addition! :D

Hi @bztsrc! Your Model3D format looks great! I like it a lot! Congratulations!

Thanks!

Feel free to send a PR with this amazing addition! :D

Sadly since the recent changes in github, I cannot create PRs any more (I have no probs on gitlab, so this must be a github configuration issue).
The Goxel2's maintainer likes this format too, and he has chosen it as Goxel2's main format. I have the same PR creation problems there too :-( (BTW, Model3D can store voxel images, but you won't notice that because on load voxels are transparently converted into a face-culled triangle mesh by the SDK).
Truly sorry about sending a diff, but this is the best I can do in lack of PRs.
Cheers,
bzt

@raysan5 Ok, no worries, I will implement the changes you provided.
Are you planning to add animations support? It would be great!

Ok, no worries, I will implement the changes you provided.

Thank you very much! It's great if raylib can handle .m3d files out-of-the-box, because I'm getting to like this lib more and more. I've just recently started experimenting with it, but so far it's pretty awesome!

Are you planning to add animations support? It would be great!

Yes! I'm studying the IQM code now on how to fill up the variables with a skeleton based animation. But it's not simple, because IQM uses joints, while M3D is using a bone skeleton, with keyframes stored as incremental bone changes (each bone is technically a local coordinate system relative to its parent bone). If everything else fails, then I'll use m3d_pose to generate the skeleton for each frame and I'll load those, that will surely work.
Another issue I have to solve is the textures. As I see all the other loaders use the LoadTexture function which needs a filename as input, but M3D returns decoded width, height, texture pixel data, because it supports inlined and generated textures too. Doesn't seem to be a big problem, but I'll have to figure out how to integrate these, haven't got time to dig deeper what LoadTexture returns.
Cheers,
bzt

raylib animation system was designed following most tipical conventions, actually it should be equivalent to a standard bone system, independent of the IQM file format.
First format supported with animations was IQM but actually, glTF animations was also partially supported in the past. Current structutes should be able to accomodate any skeletal bones-based system, as far as I know.
// Transform, vectex transformation data
typedef struct Transform {
    Vector3 translation;    // Translation
    Quaternion rotation;    // Rotation
    Vector3 scale;          // Scale
} Transform;

// Bone, skeletal animation bone
typedef struct BoneInfo {
    char name[32];          // Bone name
    int parent;             // Bone parent
} BoneInfo;

// Model, meshes, materials and animation data
typedef struct Model {
    Matrix transform;       // Local transform matrix

    int meshCount;          // Number of meshes
    int materialCount;      // Number of materials
    Mesh *meshes;           // Meshes array
    Material *materials;    // Materials array
    int *meshMaterial;      // Mesh material number

    // Animation data
    int boneCount;          // Number of bones
    BoneInfo *bones;        // Bones information (skeleton)
    Transform *bindPose;    // Bones base transformation (pose)
} Model;

// ModelAnimation
typedef struct ModelAnimation {
    int boneCount;          // Number of bones
    int frameCount;         // Number of animation frames
    BoneInfo *bones;        // Bones information (skeleton)
    Transform **framePoses; // Poses array by frame
} ModelAnimation;

BoneInfo keeps a reference of every bone to its parent bone and the skeleton is just defined as an array of bones. Every bone also defines a base transform that all together define a bindPose.
ModelAnimation is just a sequence of poses.
About the textures, raylib also has the Image structure that exposes width, height and pixel data directly. Texture2D just contains the OpenGL id reference for the uploaded Image in GPU. You can just fill the Image struct manually with retrieved pixel data and then LoadtextureFromImage() to upload that data to GPU and get the texture id.

Thank you for the information!

raylib animation system was designed following most tipical conventions

Looks like I can load the animations almost as-is. :-)  One question remains, M3D files can store multiple animations (so it should return multiple ModelAnimation records). For example, there can be an animation for walking, one for attack, one for jumping etc.)

About the textures, raylib also has the Image structure

Thank you, in the meantime I've figured it out myself, here's an updated version with pretty useful material support. I've modified the examples/models/models_loading.c example a bit, to accept command line arguments, and added some .m3d example models too. It works great, but looks like models with vertex colors only (no material) needs some fixing, they are loaded as black.
model3d.zip
And if you don't mind, I've added Model3D attribution and link to raylib.h.
Cheers,
bzt

One question remains, M3D files can store multiple animations

What I mean by that, to handle that, this prototype would need to change:
ModelAnimation *LoadModelAnimations(const char *fileName, unsigned int *animCount);

to
ModelAnimation *LoadModelAnimations(const char *fileName, const char *action, unsigned int *animCount);

or
ModelAnimation **LoadModelAnimations(const char *fileName, unsigned int *animCount);

but obviously these would break the raylib API, so I'm not sure how to proceed.
One solution could be to use animCount as input for the action id (and keep it for frame count as output), but that feels extremely hackish. (This is not a problem for IQM only because the mesh and animation are separated, so people can use different animation files. But here you might have multiple animations in a single file. Actions could be referenced by action id or by action name too.)
Any ideas? Maybe adding a new function?
Cheers,
bzt

@bztsrc I'm afraid I don't understand the problem, current LoadModelAnimations() should be able to load all the included animations (walk, run, attack...), why action parameter is required? what is the action id?
Could it be that actions are actually the separate animations? As per my understanding, each action could be loaded into one ModelAnimation.

why action parameter is required? what is the action id?

The action parameter is the name of the animation, and action id is just the index. For example, a typical game model can have one animation for "walking", one for "attacking", one for "jumping", then you can use the action name to find the action id for that animation.

Could it be that actions are actually the separate animations?

Yes, exactly. The model has a bind pose (stored in the bones chunk), and then several animations (so called actions in M3D parlance), which are just keyframes with only the modified bones. For every animation, the first frame is a difference to the bind pose, and for the other subsequent frames it's just the difference to the previous frame. Simply put, M3D does not store the entire skeleton for each frame. This results in a very small file size, but complicates loading a bit. That's why I have m3d_pose(), which takes an action index and a frame index and returns the entire skeleton with all the bones, modified for that frame.

As per my understanding, each action could be loaded into one ModelAnimation.

Well yes. But how should the user know which one? LoadModelAnimations() requires a filename as input, so how should people know which animation is which? (As I have said, for other formats typically only one animation is stored in a separate file, so this isn't an issue because the filename is different).
Maybe adding a simple char name[32] to the ModelAnimation struct and letting the people iterate through it would be enough?
Or maybe I'm just overthinking, this isn't an issue at all, because people are using the same animations within a game for all models therefore it's okay to just rely on the action id (which is the index to the array returned by LoadModelAnimations())?
Anyway, for now I'll just implement this without action names, and please consider and tell me if you think adding char name[32] to ModelAnimation struct sounds reasonable to you.
Thanks for your answer and all the help you provided,
bzt

@bztsrc I see. Personally I would keep it simple and just skip the animations naming for now and just use the index to refer to any animation. User is responsible to define the animation index for their models on user code. Actually, same approach is planned for glTF models that can also contain multiple animations.

Personally I would keep it simple and just skip the animations naming for now and just use the index to refer to any animation. User is responsible to define the animation index for their models on user code.

Ok, understood! I was also assuming that I'm overthinking this.
Good news, here's a modified version! This loads now vertex colors correctly (and fallbacks to a clay-like color if there are no materials not vertex colors either), and I've implemented bones, skin and animations too. I've also added examples/models/models_loading_m3d.c, and two example models, suzanne.m3d (the well-known blender mascot) and a seagull.m3d (which is an animated seagull converted from Scorch3D's milkshape model).
model3d.tgz
Unfortunately it isn't finished just yet. It works great and plays most of the animated models I've tested with, but not all. Sometimes bones are off position, like the seagull's wings. And loading inlined textures isn't perfect yet either, have to debug that too. BTW, in what space does UpdateModelAnimation() expect the bone vertices? I'm providing them in model space, and not bone local space (these only are identical for the root bone, but not for the child bones), that might be the source of the positioning issue?
Anyway I wanted to send this to you, because it is major milestone on adding animated M3D models!
Cheers,
bzt

Hi,
Here's the newest version:
model3d.tgz
Please merge this as soon as possible, because it contains memory leak fixes too.

I did lots and lots of tests and found some potential memory leaks fuzzing with invalid model files. These has been fixed.
Otherwise I've fixed the texture issue (I've modified the m3d.h too). Long story short, it can only rely on stb_image.h if it's implemented in the same file as m3d.h, because stb_image defines some stuff needed as static. I've checked that with ifdef guards, but as a result it silently compiled without an inlined texture decoder. Now it throws a warning if stb_image.h is included without implementation, and otherwise relies on its own inlined texture decoder.
I've also fixed the UV coordinates, turns out you flip V, so I had to flip it too to counteract.
I've changed the default color to WHITE, because the clay-like color messed with the texture, tinted it.
I've checked and double-checked the bone and skin loader code, I'm sure it is correct.

As a result, this version supports static meshes 100% perfectly.
The one and only issue that remains is with the UpdateModelAnimation call. I'm now comparing that to my implementation here, trying to figure out what's the difference. So far both seems to expect the mesh in bind-pose in model-space, and they both convert that into bone-local space as a first step. Yet, for some reason the results are different.
Cheers,
bzt

@bztsrc Hi! Excuse the late response! Just implemented the latest changes provided. Thanks!
Just note I'm not implementing the argv inputs for the models_loading example.

Hi! Excuse the late response! Just implemented the latest changes provided. Thanks!

No worries, and I'm the one saying thanks! :-)

Just note I'm not implementing the argv inputs for the models_loading example.

That's okay! I needed that because drag'n'drop is not working for me at all (and I'm more of a CLI guy, I don't have any resource-eating shiny eye-candy heavy file manager installed, just mc). It's perfectly fine if you not merge that part! (But if you don't mind me asking, I'm curious, any particular reason why to refuse CLI arguments? You don't have to use them if you don't want to, and I bet I'm not the only one who prefers them.)
But back on the topic, any idea on the animation issue? Any suggestion where should I look? Right now I'm dumping transformation matrices and comparing them, but it's going pretty slowly. My guess is, the problem originates from using model-space transformations multiple times, hence the "explosion". Or something like that along the line of space conversion, because the bones and the skin looks just fine.
Cheers,
bzt

But if you don't mind me asking, I'm curious, any particular reason why to refuse CLI arguments? You don't have to use them if you don't want to, and I bet I'm not the only one who prefers them.

I try to keep examples as simple as possible and avoid the CLI arguments because when compiling examples for web they can't be used. But I like CLI a lot, actually all my tools have powerful CLI.

any idea on the animation issue? Any suggestion where should I look?

I'm afraid I don't know where it could be the issue, maybe on parent transform propagation between bones? Have you tried calculating a bind pose for one specific frame? You can try drawing the bones transformed with lines/boxes to see if they are correctly transformed...

avoid the CLI arguments because when compiling examples for web they can't be used

Ah, I see, make sense.

But I like CLI a lot, actually all my tools have powerful CLI.

:thumbsup:

Have you tried calculating a bind pose for one specific frame?

That's what I'm doing now dumping the transformation matrices and vertices along the way. (I'm doing the same thing in my viewer which works correctly and comparing the two outputs. But it's difficult and going slowly.)

You can try drawing the bones transformed with lines/boxes to see if they are correctly transformed

I'm over that, that was the very first thing I've checked and the bones look okay to me, that's why I'm stuck. (You can still see drawing the boxes for the bones in models_loading_m3d.c because I haven't removed that part.)
Thanks anyway, back to the boring matrix dumping debugging... :-( I hope I'll figure this one last part out soon.
bzt

I'd set aside the bank holiday weekend (at least in part!) to make a shader to replay animations (maybe with key frame morphing) but hit a fairly hard brick wall
https://gitlab.com/bztsrc/model3d/-/issues/3
Hopefully this is a quick fix for some change in blender...

Okay, now I'm totally and absolutely confused. In an effort to figure out where the problem is, I've modified the blender exporter like this:

I've commented out all axis transformations in exporter (hence the model loaded with Z up, Y forward)
I've commented out all bone space calculations in the exporter
I've commented out all vertex calculations in the exporter

The exporter now saves the mesh and bone positions and quaternions as they are in blender, as-is.
The importer passes them to raylib's renderer as they are, no conversion nor transformation takes place there either (for the records, the only difference would be in how m3d_pose calculates the bone local space to model space transformation matrix, which matrix the LoadModelAnimationsM3D function does not use).
And guess what, this is what I got:

As you can see,

the overall orientation is strange: if Z is up, then why is it upside down in raylib? Shouldn't it be rotated only 90 degrees (laying down on the floor)?
the animation of head, spine and right leg are fine compared to each other, but not the arms and the left leg. The left leg in particular looks okay (has the expected axis alignment, just not in sync with the right leg's axis alignment)?

How is this even possible? Either all child bones should be misaligned, or neither of them, but how is it possible that just some bones have wrong axis alignment? Makes totally no sense to me.
I'm not sure if this is an issue in blender (do I have to use some "to model space" transformations explicitly?) or in the raylib's renderer (assuming the data is correct). Any help figuring this out would very much appreciated. Here's the model in question (warning, child bones are not parent local in this one!):
cesium1.m3d.gz
and the original GLTF I imported into blender:
CesiumMan.glb.gz
(the blender GLTF importer is buggy, it won't load the textures from the glb file, but that's a different story. Concentrate on the geometry for now.)
Cheers,
bzt

this is fantastic work, can't wait for a complete art path with bone animation, I have some interesting ideas for it !

Okay, here's an update. This has almost everything fixed, and bones are working properly, displayed consistently in models_loading_m3d.c as well as in m3dview. Now only the skin issue remains, which turns out was responsible for the right leg / left leg alignment problem (still exists, but since the model is properly oriented, now it appears on a different axis).
model3d.tgz
@raysan5 please update. Minor modification in src/rmodels.c (forgot to handle child bones properly), otherwise mostly changes under the examples directory. I've added a screenshot and two example models (Suzanne from blender and an animated seagull from Scorched3D. Latter being 11k in size, which includes the texture too :-D). Still not the final version, but I think an important step.

this is fantastic work, can't wait for a complete art path with bone animation, I have some interesting ideas for it !

@chriscamacho thank you very much! Hopefully you don't have to wait for much longer, although I have other projects running unfortunately. FYI, I've updated the Blender exporter too, CesiumMan's twisted animated armature is now exported correctly.
Cheers,
bzt

@bztsrc Hi! Nice to see the implementation is taking shape! Congratulations on your progress!
I just implemented the latest changes you send!

@bztsrc AMAZING! Congratulations! This is a great addition to raylib! Animations support was highly demanded by the raylib community, IQM had many issues and glTF animations were not properly supported... Now we have a great file format with animations support! Thank you very much Zoltan! :D
Just reviewed the code and the example and merged it, now I'm officially announcing it to the community!

next I'm planning to add Scalable Screen Font support to raylib for my own use (I personally dislike ttf big time, I prefer this single-header lib and its much compact font format). Knowing that raylib already has font support, would you be interested in an SSFN patch? No hard feelings if you say no.

This is very interesting! raylib currently uses stb_truetype for TTF fonts rasterization and atlas is generated internally, how does it compare to SSFN??? I'm interested, feel free to open a new issue/discussion!

And... wait for it... (drumroll)... TADAM!

yes, everything works as it should with your model. I tried to take another one and this is what comes out.
blender plugin from your master branch

First, thanks for the great work here! I'm sure it took a long time, this is something very nice raylib has been missing.
I noticed for some strange reasons the example seems to be trying to open the files ".png" and ""
This doesn't look right to me, placing a breakpoint on LoadFileData shows this:
Thread 1 "models_loading_" hit Breakpoint 1, LoadFileData (fileName=0x55555653fd40 ".png", bytesRead=0x7fffffffdad0) at utils.c:185
185         unsigned char *data = NULL;

This call with that data seems to originate from _m3d_gettx, as this backtrace shows
#1  0x0000555555650f2e in m3d_loaderhook (fn=0x55555653fd40 ".png", len=0x7fffffffdad0) at rmodels.c:5127
#2  0x000055555561ad73 in _m3d_gettx (model=0x555556533170, readfilecb=0x555555650f0b <m3d_loaderhook>, freecb=0x555555650f30 <m3d_freehook>, fn=0x55555656a9d0 "") at external/m3d.h:2196

The same thing is also done for "". I can't see a possible reason for m3d.h to be doing this, maybe it needs some review?
Thread 1 "models_loading_" hit Breakpoint 1, LoadFileData (fileName=0x55555656a9d0 "", bytesRead=0x7fffffffdad0) at utils.c:185
185         unsigned char *data = NULL;
(gdb) bt
#0  LoadFileData (fileName=0x55555656a9d0 "", bytesRead=0x7fffffffdad0) at utils.c:185
#1  0x0000555555650f2e in m3d_loaderhook (fn=0x55555656a9d0 "", len=0x7fffffffdad0) at rmodels.c:5127
#2  0x000055555561adb0 in _m3d_gettx (model=0x555556533170, readfilecb=0x555555650f0b <m3d_loaderhook>, freecb=0x555555650f30 <m3d_freehook>, fn=0x55555656a9d0 "") at external/m3d.h:2200

here's a backtrace for the empty string case too, if it helps.

Thank you!

I tried to take another one and this is what comes out. blender plugin from your master branch

@GuvaCode: Can you please open an issue in my repo and attach the original model file? I'll look into it. Looks like the skeleton is fine, most of the mesh is fine, just one vertex per bone goes off? Interesting, I would definitely need the original model to debug this.

I noticed for some strange reasons the example seems to be trying to open the files ".png" and ""

@Peter0x44: again, please open an issue in my repo and attach the original model file. It looks like your model has no inlined textures, and that's why _m3d_gettx is trying to load it from a separate file. So far so good, the issue seems to be there's something wrong with getting the texture's name. I would like to take a look at the original model what texture file names is it using. There should be no textures without a name in an M3D file.

This is very interesting! raylib currently uses stb_truetype for TTF fonts rasterization and atlas is generated internally, how does it compare to SSFN??? I'm interested, feel free to open a new issue/discussion!

@raysan5: okay, I try to keep it brief, sorry if it's going to be long. TL;DR font atlas is not really viable for rendering ligatures, combined diacriticals and other tricky nuances of the waste UNICODE codeplane.
The problem with atlas is, that it works for English language which has only 26 letters, but not so much for UNICODE, because there are simply way too many codepoints (1114112 times font width times font height times 4 bytes) and sometimes you can't choose one glyph, you have to compose from multiple, and other times the same character can have multiple glyphs... Not to mention what happens if a certain glyph is missing and you have to look it up from another font file. Therefore SSFN does not use an atlas, instead it has an efficient internal cache (only for the glyphs which was already rendered at least once, and with only 1 byte per pixel), and composes that cache to an RGBA pixel buffer directly. But truth to be told, even without this glyph cache the SSFN renderer is blazing fast. (It took only 0.15 secs to draw the entire feature demo you see in the README (with more than a dozen vector/bitmaps/pixmaps fonts, including loading, decompressing, decoding, and generating dynamic styling for missing glyphs etc. rasterizing every time in lack of a cache) on my 10 years old and slow machine. I imagine on a brand new computer that would easily take no more than 0.075 secs.
So instead of generating an atlas texture, the API I'm planning to implement would draw an UTF-8 string to an existing texture, which then could be used to display the entire text (not just one letter) as many times as you want. (Currently a similar API exists ssfn_text, but that returns a new pixel buffer, because it's a drop-in-replacement for SDL_ttf's TTF_RenderUTF8_Blended(). I'd prefer drawing strings to existing raylib textures.)
And furthermore, while stb_truetype is a great lib, it can't be used to render pixmap fonts, so people have to implement their own pixel fonts all the time. Also TTF files are huge and ineffective in the first place. For example, an OpenType TTF, FreeSerif.otf is 2047k, exactly the same typeface encoded in SSFN is just 595k. Similar with TrueType TTF, for example UbuntuBold.ttf is 333k, the same typeface in SSFN is just 40k.
Cheers,
bzt

@GuvaCode: Can you please open an issue in my repo and attach the original model file? I'll look into it. Looks like the skeleton is fine, most of the mesh is fine, just one vertex per bone goes off? Interesting, I would definitely need the original model to debug this.

Good. I'll do it in a few hours.

@bztsrc the file I am using is simply the one included in the repo, at examples/models/resources/models/m3d/CesiumMan.m3d. I won't have time today, but I can file an issue in the repo tomorrow.


Add ms rdp

Ability to deselect MS AutoUpdater, retrieve minimum_os_version

Renamed the downloaded pkg to use the "NAME" variable, as usual. Rich uses a combination of VENDOR, SOFTWARETITLE and SOFTWARETYPE, which seems kind of wonky.
Since pre-commit complains about the Munki processors in a pkg recipe, I have moved them over to the Munki recipe. For this, I had to remove the deletion of temporary files or otherwise would had to duplicate some steps in both recipes.

I have removed pkg_path as an input to MunkiImporter so that it picks up the already set pkg_path from the pkg recipe. The previously used pathname var was still pointing to the originally downloaded file.


Intended workflow with pixi for dev environment

Hello,
First of all thank you for this template! It's really neat and got me to discover pixi. I will use this setup for all multi-platform Python packages I work on.
I was wondering how it is meant to be used for development. I understand pixi will create 4 different conda environmentes. "lint", "test", "doc", and the "default" one. I find it unpractical to have to have to switch from one env to the other when you are developing the package and you want to alternatively lint, test, or generate the doc (with pixi shell -e ENV_NAME). Is it the intended workflow?
I was thinking that, alternatively, there could be a "dev" env defined in pyproject.toml in tool.pixi.environments:
dev = ["doc", "lint", "test"]

What do you think? Happy to open a PR myself if you think that could help.
PS: Also, I think the pre-commit dependency is missing in pyproject.toml (probably under the lint dependencies).

I find it unpractical to have to have to switch from one env to the other when you are developing the package and you want to alternatively lint, test, or generate the doc (with pixi shell -e ENV_NAME)

Normally, this is the reason for the defined task: pixi run test will activate the install and activate the environment for you.

You can run pixi task list to know the available task (and with the -e option for the dedicated environment).

PS: Also, I think the pre-commit dependency is missing in pyproject.toml (probably under the lint dependencies).

I'm not sure about this one because somehow, you need to have pre-commit install in the environment where you call the git command. So this is a bit up to you. I think this is the reason that I avoided to add the dependency.

I was thinking that, alternatively, there could be a "dev" env defined in pyproject.toml in tool.pixi.environments

Actually this could be a great idea if one need to just want to activate the shell and just play interactively. In this case, we could add pre-commit in the lint environment.
@gtauzin Do you want to open a PR for that. I think that we can as well add a small section in the documentation just mentioning that you can do pixi shell -e dev and then any command like pytest ...

Actually, I quickly push your proposal. Thanks for the suggestion, I think this is a great improvement in the workflow indeed.


Negative alpha isn't handled correctly in shaders

Godot version:

3.1
OS/device including version:

NVIDIA GeForce GTX 680
Issue description:

Doing simple shader stuff sometimes puts the alpha < 0. If it's not manually clamped, it's 100% white.
Steps to reproduce:

Make a Sprite, throw icon.png at it to be able to have UV coordinates.
Make a new shader:

shader_type canvas_item;

void fragment()
{
	float dist = distance(UV, vec2(0.5, 0.5));

	dist *= 2.0;
	float sharpenedDist = pow(dist, 20.0);
	float circle = 1.0 - sharpenedDist;
	COLOR = vec4(1.0, 1.0, 1.0, 1.0) * circle;
	COLOR.a = clamp(COLOR.a, 0.0, 1.0);
}

Compare with and without the last line where it's clamped.
Images:

Maybe this helps too:
https://i.imgur.com/ihtjn31.mp4
Minimal reproduction project:

Shader alpha bugs example.zip

Looks like expected behavior: The alpha blending equation is fg.rgb * fg.a + bg.rgb * (1 - fg.a), so if you have a negative fg.a, both sides of the + are going to be positive. With a 20.0 exponent, that negative alpha will grow pretty quick, hence clipping white.

Huh, guess I was just unaware that alpha could be negative (and still valid). That's okay then.


Service link alias is not resolvable if the same service appears more than once in a list

Rancher versions:
rancher/server: 1.6.10
rancher/agent: 1.2.6
Infrastructure Stack versions:
healthcheck: 0.3.3
ipsec: 0.1.4
network-services: 0.2.6
scheduler: 0.6.3
kubernetes (if applicable):
Docker version: (docker version,docker info preferred)
Client:
Version:      17.09.0-ce
API version:  1.32
Go version:   go1.8.3
Git commit:   afdb6d4
Built:        Tue Sep 26 22:42:18 2017
OS/Arch:      linux/amd64
Server:
Version:      17.09.0-ce
API version:  1.32 (minimum version 1.12)
Go version:   go1.8.3
Git commit:   afdb6d4
Built:        Tue Sep 26 22:40:56 2017
OS/Arch:      linux/amd64
Experimental: false
Operating system and kernel: (cat /etc/os-release, uname -r preferred)
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
Type/provider of hosts: (VirtualBox/Bare-metal/AWS/GCE/DO)
Setup details: (single node rancher vs. HA rancher, internal DB vs. external DB)
single node, external database
Environment Template: (Cattle/Kubernetes/Swarm/Mesos)
Cattle
Steps to Reproduce:

Create external service "demo-service" and specify IP.
Create any service and add 2 service links

"demo-service" > "service1"
"demo-service" > "service2"

Run container, login to container and execute

$ ping service1
64 bytes from XX.XX.XX.XX: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from XX.XX.XX.XX: icmp_seq=2 ttl=64 time=0.037 ms
$ ping service2
ping: unknown host service2
Results:

Thanks for your report!
With the release of Rancher 2.0, development on v1.6 is only limited to critical bug fixes and security patches.
If you think we should keep this issue open, please let me know.


How to check user can access controller/action in yii2

In yii v.1.x can use Yii::app()->user->checkAccess('customer/list') ,
but it not work in yii2,
I try to use Yii::app()->user->can() it work only for permission , not work for cortroller/action

Duplicate of https://github.com/yiisoft/yii/issues/3749


Support configuration for UrlMatcher

.. or we should at least document how you use the UrlMatcher with the bundle. I want to write something here: http://php-translation.readthedocs.io/en/latest/guides/configure-httplug.html#configure-caching
All request to Google API should be cached but no others.

Do you mean RequestConditional plugin and a RequestMatcher?

Yes, I've never worked with the RequestConditional plugin. We should add support for that plugin.

Hm, yes, it sounds like a good idea. Although we have a RequestMatcher interface, I guess most of the times we want to use the default implementation, so I suggest the following plugin configuration:
request_condition:
    # optional if nothing bellow is provided
    matcher: matcher.service

    # these are optional if the matcher service is provided
    # and creates an instance of the default implementation
    path: null
    host: null
    methods: []
    schemes: []

I don't recall how we solved multiple instance of the same plugin: by naming or passing an array to the plugin config?

As far as I understand, what is asked for here is ability to configure CachePlugin with RequestMatcher. For this to implement, https://github.com/php-http/cache-plugin should be first changed to support this. I don't see any other use case for this conditional feature. But currently very few things in CachePlugin are configurable via DSL. For example, in my experience respect_response_cache_directives, default_ttl and cache_lifetime have to be changed often and there is no way to change it in config itself.

given the age of this issue, it seems to me like there is not much need for this. not strictly against it, but having too much flexibility also has a cost for the users.

For example, in my experience respect_response_cache_directives, default_ttl and cache_lifetime have to be changed often and there is no way to change it in config itself.

having such things configurable would seem like a good idea to me.


Update max number of nodes and pods for v1.6

I could not find the current maximum for total containers and pods per node yet.
Since @johndmulhausen added the initial numbers via 97c728d343408f10c59dcfb7f2abf1d1f1051a1c, maybe he can help?

This change is

I signed the CLA. Please check again.

@thockin Are these updated numbers correct?

So, does total containers need to be updated?

Yup, as I wrote there's no point of having number of Pods > number of Containers. We don't test big clusters with 2 containers/pod, so I'd just use the same number.

@gmarek Thanks for the feedback! I wonder why in the past the maximum number of containers was 2x the number of pods though.
@chenopis How should we proceed with this PR? In the master branch, the number of total containers got changed to 300000 via https://github.com/kubernetes/kubernetes.github.io/commit/a02d76a2c023ec9b60c4551c52c74bfe01fe83cc. Since you guys should be able to edit this PR (or just make the change in master and close this), please take over.

OK, 300k SGTM then.

@boosty Looks like these changes already made it into master, so after I resolved the conflict, the PR became a no-op.

@chenopis Thanks! But I am still wondering why the number was set to 300.000 in the end. If nobody tested it (as @gmarek said), wouldn't it be better to not have it in the docs at all?

@boosty Let's ask @wojtek-t since, I think, he is in charge of this sort of testing and approved https://github.com/kubernetes/kubernetes.github.io/pull/4621.


That .stderr files are missing results merely in a warning allows forgetting to check them in

Thank you for the crate! We're using it in michie.
We ended up merging a PR that adds a new compile_fail test and omits the corresponding .stderr file. Perhaps missing .stderr files could fail the test instead of warn? That should prevent such an error.
@mightyiam

Thank you, @dtolnay !


Does not build with Clang on macOS

This package does not seem to build with Clang, which is the system compiler on macOS. The build system tries to invoke cc -print-sysroot, but this option is specific to GCC and not available with Clang.
Do you have any advice on how to work around this?
Please see here for the PR trying to update this package in MacPorts:
https://github.com/macports/macports-ports/pull/21493

I will then make a quick 0.4.1 release...

Thanks for the super quick response!
The update in MacPorts is being done in the context of updating SuiteSparse from 5.x to 7.3.1. As I understand, UMFPACK is (mostly?) source-compatible between these two releases, but the build system was changed to CMake. Just to know what to anticipate in MacPorts, have you tested scikit-umfpack with a recent SuiteSparse? I see that the CI here uses SuiteSparse 5.10.

Ah indeed, it's kinda curious that both Ubuntu and Conda-forge have SuiteSparse 5.10.1. I had expected Conda-forge to be more up-to-date, but it looks like no one put in the effort yet to work through the changes in 6.0

So to answer the question - I did not build a more recent SuiteSparse from source. It looks like @rc has, but the result hasn't landed yet: gh-80

SuiteSparse has lots of sub-packages, and they may have changed in different ways. But so far, no package in MacPorts was broken by the SuiteSparse update. If there are any issues at all, I'd expect them to relate to the build system (finding headers and libraries), not the compilation or functionality.

This should be fixed by gh-95. For macOS it adds an x86-64 CI job, and I've tested on arm64 as well.

Let us know, please, if the problem is fixed for you. I will then make 0.4.1.

Yes, it builds now on Mac with the Mac-specific patch applied. You don't need to make the release right away for Macports use (we can apply the patch as part of our install process).

OK, thanks for the confirmation.

I was looking if I could build this package with SuiteSparse 7.x, and it seems it's looking for a bunch of headers that are no longer available:
https://github.com/scikit-umfpack/scikit-umfpack/blob/a9c58b8a00197f9c88d9482f9d78c076c37b1700/scikits/umfpack/umfpack.i#L218-L229
These headers are present in SuiteSparse 5.x:
https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/v5.13.0/UMFPACK/Include
But not in SuiteSparse 7.x:
https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/v7.3.1/UMFPACK/Include
Are you sure that directly accessing these headers (instead of simply including umfpack.h) was ever part of the public UMFPACK API?

@rc is working on a fix for that right now I see: gh-80.

Are you sure that directly accessing these headers (instead of simply including umfpack.h) was ever part of the public UMFPACK API?

Personally I have no idea, but I'd say that if they weren't public, they shouldn't have been installed right next to the public one without as much as an underscore.

I managed to build it after commenting out all %includes except for umfpack.h. But I am not familiar with SWIG and I don't know if this would break it for earlier SuiteSparse. The change is mentioned here: https://github.com/DrTimothyAldenDavis/SuiteSparse/releases/tag/v6.0.0

The single header file is "new" from the version 6, which is not yet supported. But see #80 - can you try that version?

But see #80 - can you try that version?

I get this error:
  [1/3] Generating scikits/umfpack/_umfpack_swig with a custom command
  FAILED: scikits/umfpack/_umfpack_wrap.c scikits/umfpack/_umfpack.py
  /opt/local/bin/swig -python -I/opt/local/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include -o scikits/umfpack/_umfpack_wrap.c -outdir scikits/umfpack ../scikits/umfpack/umfpack.i
  :3: Error: Unable to find 'python.swg'
  ../scikits/umfpack/umfpack.i:263: Error: Unable to find 'typemaps.i'
  ninja: build stopped: subcommand failed.
  error: subprocess-exited-with-error

Strange - it should not differ from what you did (if UMFPACK_MAIN_VERSION is not lower than 6, and that constant is defined in umfpack.h).

scikit-umfpack is last blocker for updating SuiteSparse in MacPorts. Did you manage to get it working with post-5.x SuiteSparse versions, and are there plans for an imminent release?
You asked me to help with testing, which is entirely fair, since I brought up this issue. But I need to be realistic about how much I can commit. Given my inexperience with meson, SWIG and Python packages in general, and my current workload, I won't be able to do much. It's better if I'm upfront about this.
I'm just looking for some input about what to expect regarding SuiteSparse 7.0 compatibility in the near future :-)

Checkout SuiteSparse 7.4.0.beta8.  The build system is much improved and it should work for clang.

There's still the issue with supporting both multi-header and single-header UMFPACK. As I understand this is up to scikit-umfpack and won't be affected by SuiteSparse's build system.

I'm sorry, I did not realize that you already released the fix. I confirm that it works fine in MacPorts.

Thanks for the update.  Is there anything else in SuiteSparse itself that needs to be fixed for MacPorts or scikit?  I'd like to post a stable SuiteSparse 7.4.0 soon, but I'd also like to make sure it works for you first.

@DrTimothyAldenDavis No, everything looks good. There's the ParU issue that I told you about, but for now I will just skip including ParU. I will finalize the PR to MacPorts after you issue the final 7.4.0 release.

That sounds like a good plan.
My goal is to post a stable SuiteSparse 7.4.0 on Dec 30.


[Youtube] urlopen error [Errno 101] Network is unreachable

Checklist

[X] I'm reporting a broken site support
[X] I've verified that I'm running youtube-dl version 2019.10.22
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones

Verbose log

PASTE VERBOSE LOG HERE

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-x', '-k', '-v', 'tahOuqFS8kM']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.10.22
[debug] Python version 3.6.8 (CPython) - Linux-4.15.0-65-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.6, ffprobe 3.4.6
[debug] Proxy map: {}
[youtube] tahOuqFS8kM: Downloading webpage
[youtube] tahOuqFS8kM: Downloading video info webpage
[youtube] {18} signature length 106, html5 player vflYUXieR
[youtube] {43} signature length 102, html5 player vflYUXieR
[youtube] {133} signature length 106, html5 player vflYUXieR
[youtube] {242} signature length 102, html5 player vflYUXieR
[youtube] {160} signature length 106, html5 player vflYUXieR
[youtube] {278} signature length 102, html5 player vflYUXieR
[youtube] {140} signature length 102, html5 player vflYUXieR
[youtube] {251} signature length 106, html5 player vflYUXieR
[youtube] tahOuqFS8kM: Downloading MPD manifest
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'https://manifest.googlevideo.com/api/manifest/dash/expire/1571823669/ei/1cuvXeXuLsCz3LUP4tCHgAg/ip/<IP_ADDRESS>/id/b5a84ebaa152f243/source/youtube/requiressl/yes/playback_host/r2---sn-ci5gup-cags.googlevideo.com/mm/31%2C29/mn/sn-ci5gup-cags%2Csn-ci5gup-h55l/ms/au%2Crdu/mv/m/mvi/1/pl/19/tx/23756554/txs/23756553%2C23756554/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/initcwndbps/995000/mt/1571801986/fvip/14/fexp/23842630/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Ctx%2Ctxs%2Chfr%2Cas%2Citag/sig/ALgxI2wwRQIhAOsLhBh_IAFP9xv2UB7hiUe3bAPeePD9jQeIiR6MkigJAiBpy56-MaNEuiadv31XpF81yD03P9psSKJfJtPwTWxZrQ%3D%3D/lsparams/playback_host%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AHylml4wRQIgaX4UwjRWAX0IGhcJVF9VesqXqWxA1OmfAHGPJYvh6ZQCIQCkddu5W_Rq8Qr9ppZ_0yZ0zSAehZUiGaibTuEYkIzL_Q%3D%3D'
[dashsegments] Total fragments: 1057
[download] Destination: Marshall Rosenberg   The Dynamics Of Empathy-tahOuqFS8kM.f242.webm
[download]   2.6% of ~16.14MiB at  5.91MiB/s ETA 27:21ERROR: unable to download video data: <urlopen error [Errno 101] Network is unreachable>
Traceback (most recent call last):
  File "/usr/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/usr/lib/python3.6/http/client.py", line 1254, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1300, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1249, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1036, in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py", line 974, in send
    self.connect()
  File "/usr/lib/python3.6/http/client.py", line 1407, in connect
    super().connect()
  File "/usr/lib/python3.6/http/client.py", line 946, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "/usr/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
OSError: [Errno 101] Network is unreachable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/YoutubeDL.py", line 1919, in process_info
    partial_success = dl(fname, new_info)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/YoutubeDL.py", line 1864, in dl
    return fd.download(name, info)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/downloader/common.py", line 366, in download
    return self.real_download(filename, info_dict)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/downloader/dash.py", line 48, in real_download
    success, frag_content = self._download_fragment(ctx, fragment_url, info_dict)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/downloader/fragment.py", line 102, in _download_fragment
    'http_headers': headers or info_dict.get('http_headers'),
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/downloader/common.py", line 366, in download
    return self.real_download(filename, info_dict)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/downloader/http.py", line 341, in real_download
    establish_connection()
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/downloader/http.py", line 109, in establish_connection
    ctx.data = self.ydl.urlopen(request)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/YoutubeDL.py", line 2237, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 564, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 756, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/usr/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/home/satishb/.local/share/virtualenvs/NVC_Workshop-wqQhCiFs/lib/python3.6/site-packages/youtube_dl/utils.py", line 2724, in https_open
    req, **kwargs)
  File "/usr/lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 101] Network is unreachable>

Description

WRITE DESCRIPTION HERE
I am able to download most files from youtube but it consistently fails for certain files with the error
<urlopen error [Errno 101] Network is unreachable>
The file is generally partially downloaded and if I try downloading them in a while loop it continues to download but consistently fails after maybe 1-2% progress irrespective of the file size.
Or it can get stuck at the initial stage say
Resuming download at byte 40814096
The failure consistently happens only with certain files. I have seen this occurring from past 1 month or so. It was present even when I tried with 2019.08.02 and continues with the present version too.
E.gs of failing files are:
tahOuqFS8kM
l7TONauJGfc
My current work around is to download it with the following script
while true; do
youtube-dl -x -k tahOuqFS8kM && break
echo "Retrying"
done

most likely a network issue on your side:
youtube-dl tahOuqFS8kM
[youtube] tahOuqFS8kM: Downloading webpage
[youtube] tahOuqFS8kM: Downloading video info webpage
[youtube] tahOuqFS8kM: Downloading js player vflYUXieR
[youtube] tahOuqFS8kM: Downloading js player vflYUXieR
[youtube] tahOuqFS8kM: Downloading MPD manifest
[dashsegments] Total fragments: 1057
[download] Destination: Marshall Rosenberg   The Dynamics Of Empathy-tahOuqFS8kM.f242.webm
[download] 100% of 16.67MiB in 18:25
[dashsegments] Total fragments: 542
[download] Destination: Marshall Rosenberg   The Dynamics Of Empathy-tahOuqFS8kM.f251.webm
[download] 100% of 91.13MiB in 11:22
[ffmpeg] Merging formats into "Marshall Rosenberg   The Dynamics Of Empathy-tahOuqFS8kM.webm"
Deleting original file Marshall Rosenberg   The Dynamics Of Empathy-tahOuqFS8kM.f242.webm (pass -k to keep)
Deleting original file Marshall Rosenberg   The Dynamics Of Empathy-tahOuqFS8kM.f251.webm (pass -k to keep)

This is definitely not a network issue, though the underlying error seems to indicate that. The error persists only for certain files irrespective of how much time has passed by.
For e.g. when I was trying to download a playlist, all files except one where downloaded and all the files where around 1.2- 1.8Gb
I can only download the failing file by continuously trying (eg. by using a while loop). I just tried downloading few files from the same playlist and I am seeing the same behaviour for this particular file even though 1 month has passed by when I tried it lastime.
When a file fails, it consistently fails, which is so unlike a network error.

as you can see from the output the same files you're trying without failing at all, so it's either a problem in you're network or the servers selected by youtube.com for you.
theses are some measures that you can:

setup a Caching DNS Resolver.
run youtube-dl in until loop.
until YOUTUBE-DL_COMMAND; do continue; done
select other formats when some of them are continuously failing.

Use proxy.
Also possible similar to this

I'm curious, are any of you guys trying to download anything on google servers?

Use proxy.

Yup, that seems to work. I am not sure what is the problem, but looks like hiding my location / region seems to work.


chore(dependencies): update bluebird v.3

Fixes #1859
I can't see that the cancellation is needed in this case as the promise that is cancelled is a runaway promise anyway.

Ping @dignifiedquire

This is not enough, there is more cancellation happening in that file that will fail with the Bluebird@3. See for some details where I have started work on this. Also it is important that the cancellation continues to work on a refresh while doing a refresh for performance reasons

There is no other cancellation happening in the whole karma library. There might be peer dependencies that use cancellation but not in here anymore.
There is a CancellationError thrown but this is just the error itself that is thrown without any cancellation happening there. So this will work just as before.
I saw your work and my first attempt to solve this looked almost the same. But this is not the solution to this, as the way how it worked earlier is the same as how I implemented it right now. Earlier, the promise was cancelled and the other promise was returned. But that promise ended in nirvana, as it is not truly responsible for the refresh. That is handled in the .refresh instead of the ._refresh function and that returns the promise that the refresh is listening to.
So if I'm not really mistaken, the cancellation never had any effect and there's already a test in place that does a refresh while a refresh is ongoing and this would not pass otherwise.

I see, but if do not cancel, won't this line https://github.com/BridgeAR/karma/blob/master/lib/file-list.js#L201 still be called? resulting in multiple emits even though the earlier one should have been canceled and not be emitted?

True point. Fixed and improved the test to catch that

Thanks will review closely later today

I think this doing now what we want. Thanks a lot for being patient with me :)

Just one thing can you change the commit messages please, the first to sth feat(file-list): Upgrade bluebird to v3 and the second to sth like test(unit): ..

@dignifiedquire of course :) Fixed

Thanks :octocat:


--decoder.retries does not seem to have an effect (Greaseweazle HW)

I do not seem to be able to get --decoder.retries to work. I am using Greaseweazle V4 firmware v1.1 with a FluxEngine I compiled today, on Mac OS Big Sur.
For example, trying to image a disk:
./fluxengine read commodore1541 -o image.d64 --usb.greaseweazle.port /dev/cu.usbmodem14101 --decoder.retries=2
on a bad disk results in seemingly unbounded retries, the output says
retrying; xx retries remaining
with xx just going up and up all the time, like this:
(snip)
7.0: 0 ms in 61009 bytes
      15 raw records, 2 raw sectors; 2.74us clock (365kHz)
      sectors: 6! 8! 10! 2!
      logical track 3.0; 29.0
      1024 bytes decoded
      retrying; 32 retries remaining
 7.0: 0 ms in 60353 bytes
      21 raw records, 3 raw sectors; 2.74us clock (365kHz)
      sectors: 6! 8! 10! 2!
      logical track 3.0; 29.0
      1024 bytes decoded
      retrying; 33 retries remaining
 7.0: 0 ms in 60722 bytes
      16 raw records, 2 raw sectors; 2.72us clock (368kHz)
      sectors: 6! 8! 10! 2!
      logical track 3.0; 29.0
      1024 bytes decoded
      retrying; 34 retries remaining
(snip)

Yup, that's a bug.


There is a offset for the URL text-decoration when hovering over it on Mac

OS: Mac
Node.js: V10.14.2
Func: V2.3.1999
Build Version: 20190108.1
Repro Steps:

Create a project -> Create a function.
Debug the project.
Hover over the URL in 'OUTPUT' window and check the result.

Expect:
The URL decoration matches the URL.
Actual:
There is a offset for the URL decoration.

Closing as this was fixed on VS Code insiders


Fail to disable an extension pack extension

VSCode Version:1.25.0-insider

Version: 1.25.0-insider
Commit: 6ca99aca80e80224f1c0bd4370c6ec4941c3bc54
Date: 2018-06-29T09:03:04.490Z
Electron: 1.7.12
Chrome: 58.0.3029.110
Node.js: 7.9.0
V8: 5.8.283.38
Architecture: x64

OS Version: Windows 10 Enterprise 1803(17134.112)

Steps to Reproduce:
1.Install an extension pack, for example 'Java Extension Pack' and reload after installing the extension pack.
2.Try to disable the extension pack, and then a comfirm dialog appears with message 'Would like to disable the dependencies of the extension aolso?', you can't not disable the extension pack extension if you click the Yes button, with a popup error message 'Cannot disable extension 'XXX'. Extension 'YYY' depends on this', but the No can.

So is that a bug of VSC? #27336

Does this issue occur when all extensions are disabled?: N/A

you can't not disable the extension pack extension if you click the Yes button

What happens if you click the Yes button?

@roblourens See the updated version of the problem description, please : )

@x-strong I cannot reproduce it. Can you please let me know what are the extensions you have installed and which extension pack you are trying to disable?

@svict4 Are you trying to disable all extensions or a specific extension with dependencies?

@sandy081 all extensions

@svict4 Please let me know the list of extensions you have installed so that I can reproduce it.


No module named 'timm.optim.novograd‘

File "D:\A_File\Project\RepLKNet-pytorch-main\optim_factory.py", line 19, in
from timm.optim.novograd import NovoGrad
ModuleNotFoundError: No module named 'timm.optim.novograd'

I also encountered this problem. Have you solved it?

Maybe you can reinstall a low version timm.

Maybe you need a lower version timm like timm==0.4.12.
I tried this version and problem solved.