Add examples to transform docs

This PR is the result of https://github.com/pytorch/vision/issues/1409. @fmassa thanks for the input!
The PR adds examples of each transform class to the sphinx docs. The result looks something like this:

Make _sample_image() public
@fmassa said:

Also, the Grace Hopper image is available under test/assets I believe, which is not installed with torchvision, so this would mean that we would need to move the image somewhere else. My thinking is that those two functions are very specific to the examples, and thus having them live in torchvision.utils as being public functions might not be best.

I would argue that it's quite convenient to be able to get sample image and therefore sample_image() should be public. skimage for example gives you quite a few sample images which I actually tend to use when using pytorch.
(That being said I'm also fine with a private _sample_image().)
Implementation of _sample_image() public
The current implementation is just a dummy implementation that load the image from /tmp :)
The Hopper image is part of the test/ folder and is not part of the resulting egg/wheel/whatever.
Normally I would just use https://docs.python.org/3.7/library/importlib.html#module-importlib.resources to load the file, but pytorch is not 3.7 only :) So we have to decide on where to put the file and how to load it. I'm no expert when it comes to packaging and I'm more than open for suggestion.
TODOs

[x] Add examples to transform classes (as suggested)
[x] Add helpers to load and display images
[x] Split transform.rst into transform.rst and transform_functional.rst (as suggested)
[x] Decide if _sample_image() really should de private
[x] Add proper implementation for _sample_image() depending on how the actual sample image is going to be shipped.
[x] Fix inconsistencies of of documented transforms.
[x] Document all __call__ of TensorTransforms.
[ ] Clean git history.

Feedback welcome!
Closes #1409

Codecov Report

Merging #1426 into master will decrease coverage by 0.16%.
The diff coverage is 25%.

@@            Coverage Diff             @@
##           master    #1426      +/-   ##
==========================================
- Coverage   64.08%   63.91%   -0.17%
==========================================
  Files          80       80
  Lines        6328     6324       -4
  Branches      973      970       -3
==========================================
- Hits         4055     4042      -13
- Misses       1986     2001      +15
+ Partials      287      281       -6

Impacted Files
Coverage Δ

torchvision/utils.py
55.88% <25%> (-10.16%)
:arrow_down:

torchvision/io/_video_opt.py
27.02% <0%> (-12.34%)
:arrow_down:

torchvision/io/__init__.py
100% <0%> (ø)
:arrow_up:

torchvision/transforms/__init__.py
100% <0%> (ø)
:arrow_up:

torchvision/transforms/_functional_video.py

torchvision/transforms/_transforms_video.py

torchvision/transforms/functional_video.py
21.42% <0%> (ø)

torchvision/transforms/transforms_video.py
46.03% <0%> (ø)

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 ed5b2dc...fa9e946. Read the comment docs.

Another thing, we should not forget to fix the random seeds (for both random and torch) to avoid the images being regenerated at every doc rebuild.

Another thing, we should not forget to fix the random seeds (for both random and torch) to avoid the images being regenerated at every doc rebuild.

The examples are only re-executed if the example code changes, i.e. calling make html twice in a row does not rebuild the images. Therefore I'm not not sure if he even have to fix the seeds. @fmassa if only recreating the images on every make html is the issue, then we don't need to fix the seeds. What do you think.

We need to decide on the actual implementation of _example_image(), where the image is stored, and how the image should be packed into the wheel.
Just as reference: this is how skimage does it:

Packing: https://github.com/scikit-image/scikit-image/blob/master/setup.py#L160
Loading the images: https://github.com/scikit-image/scikit-image/blob/master/skimage/data/init.py#L78

The examples are only re-executed if the example code changes, i.e. calling make html twice in a row does not rebuild the images

I might not understand how matplotlib caching works, but I would have expected that if I clean up the build folder and re-run again make html the images generated would be different? Which would mean the html would change everytime we update the documentation.

We need to decide on the actual implementation of _example_image(), where the image is stored, and how the image should be packed into the wheel.

thanks for the pointers. I'm not yet clear if we want to have those functions in the torchvision distribution, but the pointers are anyway very helpful.
I'm waiting on feedback from @jlin27 on what would be better.

Hi @fmassa @sotte
My vote is to keep _sample_image() private, given as you've all discussed, that it's specific for this example use case. Helps signal to users that they probably shouldn't be using it outside of this situation.
As for where to store the images, I'd suggest a static folder with a descriptive name. For example, in pytorch/tutorials, images are stored  /static/_img (https://github.com/pytorch/tutorials/tree/master/_static/images), and just make sure to double-check that they are pulled in properly during build.

Seeds
@fmassa I think we were talking about different things. When you remove the build/ folder of the docs, of course the docs will be rebuild from scratch and the output might be different depending on the RNG. If you don't remove the build/ folder then sphinx is not going to re-execute the examples.
I set the random seed now and the examples should stay constant between complete rebuilds.
Private functions
I explicitly mention that the functions are not to be used.
Loading and packaging the image / things that should be simple but are quite tricky
@jlin27 thanks for the input! I think bundling the images is a bit more complex as in the pytorch tutorials case. We have to ship the assets.
In general I would add the image to a newly created torchvision.assets module so that it gets shipped with torchvision and so that I can access the file similar to how it's done with skimage. Something like this:
def _sample_image():
    """Private helper function to load a sample PIL image.

    This function might change and/or break. Don't depend on it.
    """
    import os.path
    from PIL import Image

    data_dir = os.path.abspath(os.path.dirname(__file__))
    return Image.open(os.path.join(data_dir, "assets", "grace_hopper_517x606.jpg"))

Then of course we have to actually include the folder
# MANIFEST.in
include README.rst
include LICENSE
include torchvision/assets/*

recursive-exclude * __pycache__
recursive-exclude * *.py[co]

and change the
# setup.py
setup(
    ...
    zip_safe=False,  # not zip safe because we load the image via a path
    include_package_data=True,
)

but after doing so I get the following error:
➤ python setup.py install
Building wheel torchvision-0.5.0a0+5108c1e
running install
running bdist_egg
running egg_info
writing torchvision.egg-info/PKG-INFO
writing dependency_links to torchvision.egg-info/dependency_links.txt
writing requirements to torchvision.egg-info/requires.txt
writing top-level names to torchvision.egg-info/top_level.txt
reading manifest file 'torchvision.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
writing manifest file 'torchvision.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
copying torchvision/version.py -> build/lib.linux-x86_64-3.7/torchvision
error: Error: setup script specifies an absolute path:

    /home/stefan/coding/torchvision/test/test_models.cpp

setup() arguments must *always* be /-separated paths relative to the
setup.py directory, *never* absolute paths.

I'm also not sure if we break things by making torchvision not zip_safe.
The packaging problem is still not solved and I'm more than open for input!
Ref
See the "note" box: https://python-packaging.readthedocs.io/en/latest/non-code-files.html

Hi @sotte ,
Sorry for the delay in replying, I had to fix a few issues with torchvision lately (including making it zip_safe=False :-), see https://github.com/pytorch/vision/pull/1536 )
About the error you are facing, from a quick search it might indicate that you might need to do a clean build for torchvision?
Apart from that, I think that the approach you are following is the right one, with the os.path.abspath(os.path.dirname(__file__)) and setting include_package_data.
I don't have much more experience with setuptools than that though

@fmassa no worries and thanks for the pointer. I'll give it a try and get back to you.

It's getting tricky :) Starting with a fresh build did not help.
Here is a log of what I did:
# Add the following to setup.py
#     zip_safe=False,
#     include_package_data=True,
python setup.py clean
python setup.py install

This yields the error:
...
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
writing manifest file 'torchvision.egg-info/SOURCES.txt'
error: Error: setup script specifies an absolute path:

    /home/stefan/coding/torchvision/test/test_models.cpp

setup() arguments must *always* be /-separated paths relative to the
setup.py directory, *never* absolute paths.

Checking torchvision.egg-info/SOURCES.txt tells me that all *.cpp files are included with their absolute path:
$ cat torchvision.egg-info/SOURCES.txt | grep cpp
/home/stefan/coding/torchvision/test/test_models.cpp
/home/stefan/coding/torchvision/torchvision/csrc/vision.cpp
/home/stefan/coding/torchvision/torchvision/csrc/cpu/ROIAlign_cpu.cpp
/home/stefan/coding/torchvision/torchvision/csrc/cpu/ROIPool_cpu.cpp
/home/stefan/coding/torchvision/torchvision/csrc/cpu/nms_cpu.cpp
...

get_extensions() in setup.py seems to create absolute paths (line 80). I haven't had time to look into it more thoroughly.

Just to verify that I did not break anything in my branch: on master cd17484 when adding include_package_data=True I get the same error when calling python setup.py build.

@fmassa So I had to change the setup.py quite a bit (and I don't think this should be necessary) to be able to build torchvision when include_package_data=True. Before my commit  7d6d38c the SOURCES.txt contained absolute paths which should not be the case, but seemingly only produces errors when include_package_data=True. I'm quite confident that I broke the build with that commit though :)
Please, anybody who is more knowledgeable with python packaging take a look at this!
That being said, the PR should be complete now. Feel free to build the docs yourself and let me know if it's ok.

@fmassa Please verify that it works on you end. If so I think we can merge this one (after rebasing).

Hi @sotte
Very sorry for the delay in coming back to you.
I'll get this reviewed and merged tomorrow, thanks a lot!

Absolutely no problem. Just let me know if you need anything else.

@fmassa friendly ping :)
Let me know what I can do to get this into masteri

Very sorry for the delay @sotte! Was very busy working on a paper submission.
I'm putting some time aside to review this tomorrow, thanks for the patience!

@fmassa  I was not able to build when using abspath and (I think) I was getting error messages similar to the current ones of circleCI: https://app.circleci.com/pipelines/github/pytorch/vision/2750/workflows/978a424b-8d15-4271-9ff5-df6cc9fa1360/jobs/151904/steps
setup() arguments must *always* be /-separated paths relative to the
setup.py directory, *never* absolute paths.

Closing since https://github.com/pytorch/vision/pull/3652 has been merged.
Thanks a lot for the proposal and for initiating the work on this PR @sotte !
I opened https://github.com/pytorch/vision/issues/3688 as a follow-up


Behavior for multiple authors

What is the correct behavior for feeds or items with multiple authors?

For feeds with multiple authors, each item can have a different author. For multiple authors on a single item, the spec doesn't really say anything about that. I've seen at least one person put "Name 1 and Name 2" as the author name, though. That's probably the best approach for now.

I think this is a common enough scenario that it's worth addressing in the spec.

Agree. Multiple authors is very very common. This is the basic format we followed at The New Yorker:

Source (continuously updated so examples will fall in and out over time):
https://www.newyorker.com/open/latest.json

Adding another example from The New York Times, where its just a simple array:

http://json8.nytimes.com/services/json/sectionfronts/world/europe/index.jsonp

Thanks @donohoe! Good to see these examples of different JSON formats from The New Yorker.

Is this useful for readers though.  Feed Readers really only have space for a single author image.  At that point shouldn't it list the publication?
Not saying i'm against it, just worth questioning.

I love the spec! Great work, all.
I had the same need as others on this thread. Took a stab at editing the spec to support multiple authors: https://github.com/brentsimmons/JSONFeed/issues/6
Let me know what you think!

Also am in need of an update to the spec to allow for multiple authors.
I implemented it assuming that authors was an array of object, which ends up not being the case.

Atom have the separate contributor tag.
So you can introduce the similar array contributors alongside of author.

Adding another example from The New York Times, where its just a simple array:

That's a bad idea to have two representations of the same field. Especially this become a big problem for static typed languages like Java where JSON-to-bean mapping libraries like Jackson can't handle such scenarios.
P.S. Why are you invent the new spec if you never read already existing specs and how they used? I just shocked that you are trying to create a new standard in the area where we already have too much standards while in fact just plain RSS is good enough and easily extensible with namespaces.
Instead just contribute to existing libraries to make them all working in the same manner.
WordPress which covers 90% of real life RSS content can be the only one real standard.

The draft of version 1.1 of the spec has support for multiple authors, so I'm going to close this now. As for "why JSON Feed"… It has already proven very useful since the original spec was published a couple of years ago, and has good support in a bunch of apps and tools.

I may sound rude but someone must tell it to you. Please, don't call the "Proposal for JSON Feed version 1.1" a "draft" and don't call the JSON feed a "specification". Just read any real specification to see what exactly does it mean. This is extremely boring but just check issues to the repo: half of them are basic clarification questions about how to interpret JSON feed description.
Any specification should have at least two implementations from different vendors. But here we see that it's just you personally decided what will be added to the spec without any discussion with implementors.
Just for example:

Multiple authors (#6). Allow an array of authors instead of just one wherever we had a single author before.

This means that you are going to break rss feed consumers because previously they expected a single author object but now they'll receive an array.

Add language

The same as with the contributors and other tags that already exists in Atom and RSS. You simply reinventing a wheel here.
But I still didn't get the reason why the JSON Feed is needed:

XML parsing and generation is not a hard task at all and all needed tools for this are part of std lib on all platforms (except of BusyBox and OpenWrt). XML parsing is fast and. It uses almost the same place as JSON when gzipped.
It is easy to transform to JSON e.g. in Android JSONObject jObject = XML.toJSONObject("rss xml content"). The only one problem is structural difference between Atom and RSS. There is plenty of libraries like rss-parser or rss-to-json that leverage differences.
Feed is just a machine to machine protocol and no needed to be read by humans. Anyway in JSON form it's much harder to read feed.
This not an agreement between most of rss producers (WP, blogspot) and consumers (Feedly, FeedReader, Akregator, Thunderbird, MS Outlook, QuiteRSS, Liferea and many others).
It doesn't adds any new semantic value needed for modern content: comments, likes, tags, content cut, mentions, synchronization rules etc.
This is not an attempt to standardize existing solutions: fortunately, there no any other except of rssjs.org "spec" which was proposed to WP and even implemented as a plugin.

It's absolutely clear that you didn't made any effort to learn existing solutions. We already had a situation when a new protocol Atom was developed instead of evolving and standardize old RSS. This leads to a lot of confusion and in the end the really useful Atom tags just was used with RSS. But the Atom is at least a real specification that is explicit as much as possible.

@stokito I'm not sure what you are trying to achieve here. JSON Feed has been widely implemented for 2 years in many apps, including popular feed readers, IndieWeb tools, scripts, countless web sites, etc. It's here and works well. RSS is also great! Many people contributed to JSON Feed (see "Reviewers") and the goal was to create a readable specification that would be helpful even to people who aren't programmers.


Remove initcode/runtime definitions and simplify wording

Extracted from #129 - just the editorial changes which remove definitions. The "breaking" change is now in #135.
CC @gumb0 @shemnon PTAL, you've reviewed the other PRs, still looks good like this?

okay, I'll open a mirroring EIP PR to see if no objections are raised there, and then we can proceed


Support outbound routing via Forward-to-Endpoint messages

This should be part of ACA-Py.  Closing here -- it can be reopened when appropriate in ACA-Py.


Order of the json attributes gets altered when swagger is updated

Description:
After updating the swagger definition via the REST API the resources defined in the swagger become out of order.
Steps to reproduce:

Create API with ordered resources through the UI (the swagger definition 'orig.json' attached was used to create)
Get swagger definition of created API via the REST API to verify that everything is fine so far
Send request to update the swagger definition by changing something trivial (I changed API title and spelling change to one path to resource. ./acounts -> /accounts)
Compare the request definition and response definition in the Swagger Editor preview (see attached UpdateRequestPayload.pdf and AfterUpdateResponse.pdf)

Affected Product Version:
2.6.0
orig.txt

AfterUpdateResponse.pdf
UpdateRequestPayload.pdf

Resolving this as the issue is not reproducible in the public branch.


Finish strict null azurecore

Last ones! 🎉 All test stuff this time.
(strict is inherited from tsconfig.base.json so can just completely remove it here now)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
4 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.01%) to 41.988%

Files with Coverage Reduction
New Missed Lines
%

extensions/notebook/src/jupyter/serverInstance.ts
4
75.5%

Totals

Change from base Build<PHONE_NUMBER>:
-0.01%

Covered Lines:
28036

Relevant Lines:
62126

💛  - Coveralls

@cssuh I would suggest merging in all these strict null fixes into your MSAL feature branch as soon as you can and fix the errors - that'll help verify that what you have so far is good and make it easier to catch stuff earlier as you continue to work on it.

@Charles-Gagnon will do, thanks for the suggestion!


[Storyshots] SyntaxError: Unexpected token import

Issue details
I tried to add the add-on "storyshots" to my big project for testing stories. But I can't connect everything together to make it work.
Steps to reproduce
> jest

 FAIL  src/storyshots.test.js
  ● Test suite failed to run

    /Users/orlov/frontend/node_modules/lodash-es/flattenDeep.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import baseFlatten from './_baseFlatten.js';
                                                                                ^^^^^^

    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:318:17)
      at Object.<anonymous> (node_modules/@storybook/react/dist/client/preview/element_check.js:16:20)
      at Object.<anonymous> (node_modules/@storybook/react/dist/client/preview/render.js:31:22)

 PASS  src/renderApp.spec.jsx

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        8.841s
Ran all test suites.
npm ERR! Test failed.  See above for more details.

Please specify which version of Storybook and optionally any affected addons that you're running

@storybook/react 3.3.2
@storybook/addon-actions 3.3.2
@storybook/addon-links 3.3.2
@storybook/addon-storyshots 3.3.2

Affected platforms

MacOS 10.12.6
Node v8.9.1 NPM 5.5.1
Babel 7.0.0.beta.36
Jest 22.0.4

Screenshots / Screencast / Code Snippets (Optional)
package.json
{
  ...
  "dependencies": {
    "animate.css": "^3.5.2",
    "axios": "^0.15.3",
    "bem-cn-lite": "^3.0.0",
    "bootstrap-sass": "^3.3.7",
    "classnames": "^2.2.5",
    "deep-equal": "^1.0.1",
    "font-awesome": "^4.7.0",
    "immutable": "^3.8.1",
    "moment": "^2.18.1",
    "prop-types": "^15.6.0",
    "prop-types-extra": "^1.0.1",
    "query-string": "^5.0.1",
    "raven-for-redux": "^1.1.1",
    "raven-js": "^3.21.0",
    "react": "^15.6.1",
    "react-ace": "^5.8.0",
    "react-addons-css-transition-group": "^15.4.2",
    "react-addons-shallow-compare": "^15.6.0",
    "react-bootstrap": "^0.31.5",
    "react-clipboard.js": "^1.1.2",
    "react-dates": "^12.1.2",
    "react-dom": "^15.6.1",
    "react-favicon": "0.0.11",
    "react-intercom": "^1.0.14",
    "react-maskedinput": "^4.0.0",
    "react-nl2br": "^0.2.0",
    "react-redux": "^5.0.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2",
    "react-router-redux": "^5.0.0-alpha.9",
    "react-select": "^1.0.0-rc.2",
    "react-table-components": "0.0.12",
    "react-transition-group": "^1.1.3",
    "react-universal-component": "^2.8.0",
    "redux": "^3.6.0",
    "redux-notifications": "^3.1.0",
    "redux-thunk": "^2.1.0",
    "reselect": "^2.5.4",
    "shortid": "^2.2.6",
    "simple-line-icons": "^2.4.1",
    "socket.io-client": "^1.7.2"
  },
  "devDependencies": {
    "@babel/core": "^7.0.0-beta.36",
    "@babel/polyfill": "^7.0.0-beta.36",
    "@babel/preset-env": "^7.0.0-beta.36",
    "@babel/preset-react": "^7.0.0-beta.36",
    "@babel/preset-stage-2": "^7.0.0-beta.36",
    "@storybook/addon-actions": "^3.3.2",
    "@storybook/addon-links": "^3.3.2",
    "@storybook/addon-storyshots": "^3.3.2",
    "@storybook/react": "^3.3.2",
    "babel-core": "^7.0.0-bridge.0",
    "babel-eslint": "^8.0.3",
    "babel-jest": "^22.0.4",
    "babel-loader": "^8.0.0-beta.0",
    "babel-plugin-dynamic-import-node": "^1.2.0",
    "babel-plugin-lodash": "^3.3.2",
    "babel-plugin-transform-inline-imports-commonjs": "^1.2.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "copy-webpack-plugin": "^4.3.0",
    "css-loader": "^0.28.0",
    "dotenv": "^4.0.0",
    "eslint": "^4.13.1",
    "eslint-config-airbnb": "^16.1.0",
    "eslint-config-prettier": "^2.9.0",
    "eslint-import-resolver-webpack": "^0.8.3",
    "eslint-plugin-import": "^2.8.0",
    "eslint-plugin-jsx-a11y": "^6.0.3",
    "eslint-plugin-prettier": "^2.4.0",
    "eslint-plugin-react": "^7.5.1",
    "exports-loader": "^0.6.4",
    "extract-text-webpack-plugin": "^3.0.2",
    "faker": "^4.1.0",
    "file-loader": "^1.1.6",
    "html-webpack-plugin": "^2.30.1",
    "husky": "^0.14.3",
    "jest": "^22.0.4",
    "jest-css-modules": "^1.1.0",
    "jest-junit": "^3.4.1",
    "jsdom": "^11.5.1",
    "lint-staged": "^6.0.0",
    "node-sass": "^4.7.2",
    "prettier": "1.9.2",
    "prettier-eslint-cli": "^4.6.1",
    "react-test-renderer": "^15.6.2",
    "regenerator-runtime": "^0.11.1",
    "sass-loader": "^6.0.3",
    "style-loader": "^0.19.1",
    "url-loader": "^0.6.2",
    "webpack": "^3.10.0",
    "webpack-blocks": "^1.0.0-rc.2",
    "webpack-dev-server": "^2.9.7",
    "webpack-manifest-plugin": "^1.3.2",
    "webpack-sentry-plugin": "^1.14.1"
  }
}

.babelrc
{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "browsers": ["last 2 versions", "ie 11"]
      }
    }],
    "@babel/preset-react",
    "@babel/preset-stage-2"
  ],
  "env": {
    "production": {
      "plugins": [
        "transform-react-remove-prop-types",
        "transform-react-constant-elements",
        "transform-react-inline-elements"
      ]
    },
    "test": {
      "plugins": [
        "dynamic-import-node"
      ]
    }
  }
}

jest.config.js
module.exports = {
  modulePaths: ['<rootDir>/src', '<rootDir>/node_modules'],
  setupFiles: ['<rootDir>/jestSetup.js'],
  moduleNameMapper: {
    '.*\\.(css|less|styl|scss|sass)$': '<rootDir>/src/__mocks__/styleMock.js',
    '.*\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
      '<rootDir>/src/__mocks__/imageMock.js',
  },
};

storyshots.test.js
import initStoryshots from '@storybook/addon-storyshots';

initStoryshots();

Yeah, there was a regression. Please try v3.3.3

I had the same problem, I fixed it using by adding the lodash-es module to the jest transformIgnorePatterns:
    "transformIgnorePatterns": [
      "(node_modules)(?!/lodash-es/)"
    ],

I think that closes this issue, this was addressed in 3.3.3 right?


Fix #90555 (resetLocal() doesn't do anything)

Add a call to the underlying synchroniser's resetLocal() method.
This PR fixes #90555

Great catch. Thanks


Add recognition/detectionModel to Microsoft Face Detect/Identify

Breaking Change:

Description:

Microsoft updated their recognition engine in May 2019
released new recognition_model for detecting and identifying faces
new recognition_model needs to be specified to be used
recognition model and detection model need to be the same version e.g. recognition_01 -> detection_01
Microsoft Face documentation

Related issue (if applicable): fixes #25160
Pull request with documentation for home-assistant.io (if applicable): home-assistant/home-assistant.io#<home-assistant.io PR number goes here>
Example entry for configuration.yaml (if applicable):
microsoft_face:
  api_key: 12345678abcdef6
  azure_region: australiaeast

image_processing:
  - platform: microsoft_face_identify
    group: family
    recognition_model: recognition_01
    source:
      - entity_id: camera.demo_camera

Checklist:

[ ] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.
[x] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[ ] Tests have been added to verify that the new code works.

Not really sure what I can do about the code coverage, any help or suggestion is appreciated :)

The issue is, the terms of HA changed and we need to use an external python library. I have no time to porting that, but the platform is freeze until someone picks this up.

@pvizeli okay thanks for the insight about this integration

Going to close this PR as this integration will first need to be upgraded to using a standalone Python lib


Turn some of the linter messages into errors

I think it would be useful to have some of the linter messages to be errors instead of warnings.
For example:

no-undef (used undefined variable)

Sometimes I don't pay attention to lint warnings and then only see errors when they happen at runtime.
We could also format lint errors in a similar fashion babel loader reports, including code frame with location.

Sometimes I don't pay attention to lint warnings

Are there any lint warnings in CRA that you don’t pay attention to?
We tried to err on the side of only picking lint warnings that represent actual errors in 95% cases.

Are there any lint warnings in CRA that you don’t pay attention to?

Yes, no-unused-vars for example. It is pretty useful but doesn't prevent my code running so I don't bother fixing it while prototyping. Of course I still want it to be reported as I want to fix them before commit, for example.

Can you compile a list of which warnings you’d rather see as errors?

Can you compile a list of which warnings you’d rather see as errors?

Probably just no-undef for now as I validated it through my workflow. Not sure about others for now.

Send a PR please?

This should be fixed in 0.4.2.
Please verify!

Works well, thanks!
Btw. love how it is easy to upgrade to the new version—just npm install you get new features!

🍰


Timeout issue

Hi,
If i am using timeout for 5 sec in my application, is it performance issue ? please let me know about $timeout function

@bgobi1991 the docs for $timeout are here: https://docs.angularjs.org/api/ngMock/service/$timeout (did you bump into any particular problems trying to locate this page?).
As for the "performance issue" question, it is impossible to answer based on the info provided. Morover support questions like this one should be directed to a dedicated support channel, see: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question


Allow actionlint to run shellcheck on run blocks

actionlint will run shellcheck on run blocks as long as it is in path.

Blocked by https://linear.app/trunk/issue/TRUNK-8916/on-upgrade-should-enable-tools-that-are-missing-versions

@det  -  Is this landable now? Looks like blockers have landed

@det - Is this landable now? Looks like blockers have landed

Needs 1.17.0 which is releasing now.


seed: Add new macro get_csv_sql

Description
The implementation of this new macro get_csv_sql comes as a suggestion by @jtcohen6 at https://github.com/dbt-labs/dbt-snowflake/issues/112#issuecomment-1103715140.
The underlying reason is that the dbt-snowflake package needs to run these queries inside a transaction, but with the current implementation, the fix would require to duplicate the entire default seed materialization logic in the package.
Resolves #5206
Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have signed the CLA
[ ] I have run this code in development and it appears to resolve the stated issue
[ ] This PR includes tests, or tests are not required/relevant for this PR
[x] I have opened an issue to add/update docs, or docs changes are not required/relevant for this PR
[x] I have run changie new to create a changelog entry

@adamantike Thanks for opening!
I've since realized that I missed an important nuance of the seed materialization in my initial comment over in https://github.com/dbt-labs/dbt-snowflake/issues/112. I'll leave a new comment over there with the update.

@jtcohen6 I'm not sure I follow the adapters issue here, but the macro part looks sane to me so I'm giving it a 👍, but also adding you as a reviewer to ensure it meets the needs of the adapters ticket.

@iknox-fa The change here is totally fine. It just won't actually address the root cause of the original issue (https://github.com/dbt-labs/dbt-snowflake/issues/112).


Database exception in Control

This happened after doing these steps:

Setup a provider
Create an action to untag a specific tag, assigning it into VM Power On in a policy in policy profile that is then assigned to a VM
Make the action run by powering on the VM
Wanting to delete that action after the events were unassigned.

I did not reproduce it manually but in tests (cfme_tests/cfme/tests/control/test_actions.py/test_action_untag) yes, even on my testing machine. And the problem persists even after the tests finish so it is not session-specific.
It appears when entering the summary screen.
[----] I, [2015-03-20T10:39:36.278161 #2433:e2de98]  INFO -- : Started POST "/miq_policy/tree_select/?id=a-32" for <IP_ADDRESS> at 2015-03-20 10:39:36 -0400
[----] I, [2015-03-20T10:39:36.286922 #2433:e2de98]  INFO -- : Processing by MiqPolicyController#tree_select as JS
[----] I, [2015-03-20T10:39:36.287110 #2433:e2de98]  INFO -- :   Parameters: {"id"=>"a-32"}
[----] I, [2015-03-20T10:39:37.577199 #2433:e2de98]  INFO -- : CONNECTION RETRY: ActiveRecord::ConnectionAdapters::PostgreSQLAdapter retry #0.
[----] F, [2015-03-20T10:39:38.254487 #2433:e2de98] FATAL -- : Error caught: [ActiveRecord::StatementInvalid] Database statement error encountered
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:1327:in `async_exec'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:1327:in `block in exec_no_cache'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:1265:in `with_auto_reconnect'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:1326:in `exec_no_cache'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:736:in `block in exec_query'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:287:in `block in log'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:282:in `log'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:735:in `exec_query'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/relation/calculations.rb:184:in `pluck'
/var/www/miq/vmdb/app/controllers/miq_policy_controller/miq_actions.rb:441:in `action_get_info'
/var/www/miq/vmdb/app/controllers/miq_policy_controller.rb:494:in `get_node_info'
/var/www/miq/vmdb/app/controllers/miq_policy_controller.rb:320:in `tree_select'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/abstract_controller/base.rb:167:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/rendering.rb:10:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:557:in `_run__651957392928587182__process_action__3574678424405522256__callbacks'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:405:in `__run_callback'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:81:in `run_callbacks'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/abstract_controller/callbacks.rb:17:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/rescue.rb:29:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/notifications.rb:123:in `block in instrument'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/notifications.rb:123:in `instrument'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/abstract_controller/base.rb:121:in `process'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/abstract_controller/rendering.rb:45:in `process'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal.rb:203:in `dispatch'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_controller/metal.rb:246:in `block in action'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/routing/route_set.rb:73:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/routing/route_set.rb:36:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/routing/route_set.rb:608:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:143:in `pass'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:155:in `invalidate'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:71:in `call!'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/etag.rb:23:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/conditionalget.rb:35:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/head.rb:14:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/flash.rb:242:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/cookies.rb:341:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/query_cache.rb:64:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:405:in `_run__1539318435609153946__call__4056768922511453282__callbacks'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:405:in `__run_callback'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/callbacks.rb:81:in `run_callbacks'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/rack/logger.rb:32:in `call_app'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/rack/logger.rb:18:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/request_id.rb:22:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/runtime.rb:17:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/activesupport/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/lock.rb:15:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/actionpack/lib/action_dispatch/middleware/static.rb:63:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/engine.rb:484:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/application.rb:231:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/content_length.rb:14:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/rack/log_tailer.rb:17:in `call'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/connection.rb:80:in `block in pre_process'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/connection.rb:78:in `catch'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/connection.rb:78:in `pre_process'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/connection.rb:53:in `process'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/connection.rb:38:in `receive_data'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.7/lib/eventmachine.rb:187:in `run_machine'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.7/lib/eventmachine.rb:187:in `run'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/backends/base.rb:61:in `start'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/thin-1.3.1/lib/thin/server.rb:159:in `start'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/handler/thin.rb:13:in `run'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/rack-1.4.5/lib/rack/server.rb:268:in `start'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands/server.rb:70:in `start'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands.rb:55:in `block in <top (required)>'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands.rb:50:in `tap'
/opt/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/bundler/gems/rails-8f014fba21f9/railties/lib/rails/commands.rb:50:in `<top (required)>'
script/rails:6:in `require'
script/rails:6:in `<main>'
[----] I, [2015-03-20T10:39:38.257081 #2433:e2de98]  INFO -- :   Rendered layouts/_exception_contents.html.haml (0.6ms)
[----] I, [2015-03-20T10:39:38.258324 #2433:e2de98]  INFO -- : Completed 200 OK in 1971.0ms (Views: 3.1ms | ActiveRecord: 1684.5ms)

@mfalesni Can you please open a BZ bug for this so we can track it?  Thx, Dan

@mfalesni could you provide more specific steps to reproduce the bug? Although I found the different bug in Control/Actions, I haven't reproduced this one.

I just ran the test_untag on a fresh appliance and it has thrown this error. We'll sync up.

@mfalesni can you confirm that it's been fixed in master already ?

Looks like it is not an issue now.


Can you please show an example using Firebase document snapshots?

If you could please show an example that uses a List of Firebase document snapshots that come in a stream, that would be really helpful.
With a regular itemBuilder for a ListView.builder, I can specify the index for the List of snapshots. the itemBuilder property for your draggable list only takes an item.

You should be able to pass the list of snapshots and then use the ItemBuilder to construct your widgets. Or did I misunderstand your problem?

I'm trying to work out the same puzzle, and I almost got it but still not working 100% right.  Here's the simplified version of what I have passing the StreamBuilder's DocumentSnapshot list to the DragAndDropList builder:
new StreamBuilder<QuerySnapshot>(
	stream: selectedActivity.collection("Items").snapshots(),
	builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
	  if (!snapshot.hasData)
		return Container(child: Container(
		  alignment: FractionalOffset.center,
		  padding: const EdgeInsets.symmetric(vertical: 10.0),
		  child: CircularProgressIndicator(
			backgroundColor: Colors.amber.shade600,
		  ),
		));
	  if (snapshot.data.documents.length == 0)
		new Text("Add some questions ...", style: TextStyle(fontSize: 16.0));
	  return Expanded(child:
	     DragAndDropList<DocumentSnapshot>(
		snapshot.data.documents.toList(),
		canBeDraggedTo: (one, two) => true,
		dragElevation: 6.0,
		tilt: 0.04,
		itemBuilder: (BuildContext context, activityItem) {
		  return new SizedBox(
			child: new Card(
			  child: new ListTile(
				leading: Icon(getIcon((activityItem as DocumentSnapshot).data['type'])),
				title: new Text((activityItem as DocumentSnapshot).data['question']),
				onTap: () {
					print("Tapped " + (activityItem as DocumentSnapshot).documentID);
				},
			  ),
			),
		  );
		},
		onDragFinish: (before, after) {
		  print("Moved item before: $before and after: $after");
		},
	  ));
	}
),

However, when I add a new document or make an edit to an existing doc, the list does not update itself automatically.  If I go back then return to the list, the changes do show up when it rebuilds.  Any idea why it's not working dynamically?
I also need to work out the reordering onDragFinish, which might be a bit tricky.  Pretty sure I need to add an int field for 'order' and update the effected indexes when it changes, but I didn't want to start implementing that part until after I got it working right when adding or editing.  Any suggestions?  Thanks.

Alright, good call.  I added key: new GlobalKey(), to the DragAndDropList properties and that seems to of done the trick.  Didn't need it in the Card widget for the items, so that's good.  I wouldn't of figured that out on my own, so thanks.
Next step is to index the order and try to update list items after changing the position.  May not be intuitive, but at least there's no issue with the component's functionality.  If anyone wants to help with storing the changed order, I'd be happy for the assist.  If I get it worked out, I'll post the update since I'm sure most people needing a reorderable list in Flutter would be using it with Firestore..

btw, you don't have to use a global key, any key that is unique in the list is fine, e.g. an OrderId from your data.

I'm doing similar reordering with firestore and react. You can define a sortOrder column in your firebase collection. On dragEnd loop through the items and set the sortOrder to the item's index. Then (still in onDragEnd) write the entire list in batch to your firestore collection (google firestore batch operations). Firestore is nice working like that - it will just update the items where the sortOrder has changed - you can watch the updates being made in realtime in the firestore console.

Cool, it's coming along, but still getting stuck.  I added an order field even though it gets clumsy manually changing the index number when adding and deleting items, but in the onDragFinish, how do I get the new list after reordering so I can iterate though and change the order index?  I figured out how to use WriteBatch batch = firestore.batch(); to queue up the updates, thanks for that, very useful.  Now just need to figure out the procedure to get the new order values.. Kinda fun, but more complicated than expected.  Will be satisfying to see it work.

Good! In onDragFinish you must already be doing a removeAt and insert on the list. This is the list. You don´t have to manually maintain an index - just use the list index - ie before you write the list to firestore loop over the list and set the sortOrder to the index, that's all you have to do.

Got it.. It makes sense now, I missed the removeAt/insert in the example but after a little adaptation and tinkering, it came together well.  Here is my updated example code that should help others going down this path:
  new StreamBuilder<QuerySnapshot>(
	stream: selectedActivity.collection("Items").orderBy("order").snapshots(),
	builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
	  if (!snapshot.hasData)
		return Container(
		  alignment: FractionalOffset.center,
		  padding: const EdgeInsets.symmetric(vertical: 10.0),
		  child: CircularProgressIndicator(
			backgroundColor: Colors.amber.shade600,
		  ),
		);
	  if (snapshot.data.documents.length == 0)
		return Center(child:
		  new Text("Add Some Questions ...", style: TextStyle(fontSize: 17.0)));
	  return Expanded(child:
	   DragAndDropList<DocumentSnapshot>(
		snapshot.data.documents,
		canBeDraggedTo: (one, two) => true,
		dragElevation: 8.0,
		tilt: 0.04,
		key: new Key("DragAndDropper"),
		itemBuilder: (BuildContext context, activityItem) {
		  return new SizedBox(
			child: new Card(
			  child: new ListTile(
				leading: Icon(getIcon((activityItem as DocumentSnapshot).data['type'])),
				title: new Text((activityItem as DocumentSnapshot).data['question']),
				onTap: () {
				  print("Tapped " + (activityItem as DocumentSnapshot).documentID);
				},
			  ),
			),
		  );
		},
		onDragFinish: (before, after) {
		  List<DocumentSnapshot> docList = snapshot.data.documents.toList();
		  DocumentSnapshot docItem = docList[before];
		  docList.removeAt(before);
		  docList.insert(after, docItem);
		  WriteBatch batch = Firestore.instance.batch();
		  for (int i = 0; i < docList.length; i++)
			batch.updateData(docList[i].reference, { 'order': i });
		  batch.commit();
		  print("Moved item before: $before after: $after ");
		},
	  ));
	}),

That was fun, nice & simple all things considered.  The only thing I can see to make this package better is to see it animate to the tilt and the items to smoothly slide.  Good stuff though, thanks guys.

Something I should point out, even though this implementation works, after spending time trying to get features of my app working around it, I've come to realize that the list does not refresh when the StreamBuilder updates the snapshot, and the snapshot data documents in the Drag and Drop list are not getting changed.  If I go to another page and come back, it's there, but I'm using dialog boxes to edit the data and other real-time stuff.  This problem is the same when using this for normal lists of objects, changing the values in a setState does not get picked up by the widget.  Thought it was something else wrong in my code, so it took me a while.  Hope it's not a hard fix, maybe have it listen for the parent's Stateful widget to update it's state and rebuild the list then, I don't know for sure.  Anyways, thanks, I can work around the bug for now..


Tick and Grid spacing should be independent

Hello!
My goal is to manually set a more dense grid line spacing, but keep tick labels automatic, otherwise they will overlap.
The problem is that, there is no xSpacing/ySpacing settable parameters for Ticks.
If I do the following:
formsPlot1.plt.Axis(-100, 100, -100, 100);
formsPlot1.plt.Grid(xSpacing: 1, ySpacing: 1);
The result is ugly, the tick labels overlap.
This could be fixed if we had:
 formsPlot1.plt.Ticks(xSpacing: 10, ySpacing: 10);
Or could be even better, if we want to keep the things fine after zooming in (setting tick labels dynamically not to overlap):
 formsPlot1.plt.Ticks(autoSpacing: true);
Is the above goal possible with the recent code, or is it possible to get such feature?
Thanks very much! :)

Hi @bukkideme, I don't think this is possible with current code, but there may be an option to add something similar easily.
Currently there are major ticks (with labels) and minor ticks (smaller marks without labels). Major ticks have grid lines, and minor ticks don't. What if I added an option to draw minor tick grid lines too? Perhaps they could even have a customizable (probably lighter) color. I did something similar to this with the experimental ScottPlot 5 grid system:

Would adding an option to show grid lines for minor ticks solve this issue?

Hi @swharden !
Yes, such feature would be great if you can add. And the customizable color/line thickness for (minor tick) gridlines would make the graph look very pro! :)
Thanks!

Following up on this, ScottPlot 4.1 is now merged, and axes support separate major and minor grid line customizations.
var yTicks = plt.GetSettings(false).YAxis.Ticks;
yTicks.MajorGridEnable = true;
yTicks.MajorGridColor = Color.Black;
yTicks.MajorGridStyle = ScottPlot.LineStyle.Dash;
yTicks.MinorGridEnable = true;
yTicks.MinorGridColor = Color.Blue;
yTicks.MinorGridStyle = ScottPlot.LineStyle.Dot;

I'm still working to improve performance of user controls (a main reason it's still beta / pre-release) and this code may change a bit between now and the first release, but the core functionality is now supported so I'll close this issue and hope to have a refined release ready before too long!


Bank accounts#validate routing number

Work
Adds validate bank account routing number ability to SDK.
Code snippet
client = Promisepay::Client.new

client.bank_accounts.validate('122235821')
 => {"routing_number"=>"122235821", "customer_name"=>"US BANK NA", "address"=>"EP-MN-WN1A", "city"=>"ST. PAUL", "state_code"=>"MN", "zip"=>"55107", "zip_extension"=>"1419", "phone_area_code"=>"800", "phone_prefix"=>"937", "phone_suffix"=>"6310"}

client.bank_accounts.validate('000')
 => {}

Notes
GET /status endpoint is listed on the documentation whereas the actual endpoint (used in the cURL example request) is GET /tools/routing_number

Coverage remained the same at 100.0% when pulling 1be86bf20d31ce3001c3fd6460c0f36c792b2110 on bank_accounts#validate_routing_number into 7e2a274d240e391608fb19e08a8bf6113b384a36 on master.


Changing build configuration to use "checked: false" has no effect

The Atom console shows Flutter launching the app like so:
flutter run --checked --debug-port=16205 --start-paused --device-id HT4CWJT05144 • flutter logs
step_0/ • checked mode • debug

... even after I change .atom/launches/main.yaml to look like:
# Flutter launch configuration for lib/main.dart.
type: flutter
path: lib/main.dart

flutter:
  # Enable or disable checked mode.
  checked: false
  # Enable or disable debugging.
  debug: true
  # The starting route for the app.
  route:
  # Additional args for the flutter run command.
  args:

The most recent release of flutter removes the checked mode option in favor of debug / profile / release modes - closing this out as assumed stale.


Installation failed

It throws an error "could not find the file Package.json" followed by
node_modules\resolve\lib\async.js:34:69
at FSReqCallback.oncomplete (node:fs:198:21) {
code: 'MODULE_NOT_FOUND'

fixed with newest version


Support pre-commit.d folder

There are some tool that uses the pre-commit hook as well. It is possible to have multiple hooks in same time  with folder .git/hooks/pre-commit.d

Thanks for the PR, @miry. I'm not clear on the value of mixing different hook management systems in the same repository.
Can you elaborate on why a development team would be using two systems?

@sds In some companies there are some internal tools exists for development envirnment. The internal tool required to have pre-commit hook, in same time it does not provide the same functionality as overcommit and focused only on specific commands.
As workaround I need manually to update the overcommit hook.

It's not clear why the specific nuances of some companies requires Overcommit to accommodate? It seems like a company should standardize on a single workflow? Imposing multiple workflows on the tools the company uses doesn't seem like the right course of action.
With that said—would be supportive of a pull request that allows users to customize the directories that Overcommit reads hooks from. That way you could specify any directory (not just pre-commit.d).

The code that I introduce support any folder:
.git/hooks/<hook_type>.d

Before to update all <hook_type> templates, I wanted to be sure that it is valid idea.

It seems like a company should standardize on a single workflow?

This is right, but it is not easy to do in big companies. In same time the tool support custom hooks as I had implemented.
There is a comment about the approach to put custom hooks like overcommit and other hooks that overcommit should not cover in folder .git/hooks/pre-commit.d comment

It's still not entirely clear how this adds support for any directory. It adds support for directories of the form <hook-type>.d.  That is a limited set of possible directory names.
Could you not just register each hook as described in the documentation?

Could you not just register each hook as described in the documentation?

I could not. I put overcommit to .git/hooks/pre-commit.d and updated the script to support folder name.
I think it is only my problem, so will keep fork version.

FYI: Added support of installation hooks to directories in the fork: https://github.com/miry/overcommit/pull/1


Upgrade timelock misc

I wonder if we should add another role like "keeper" and add this to the setTargetLTV function. This would allow us to add a harvester bot script to monitor leveraging profitability and to have automatic leveraging for yield optimization.

this is a good idea, I can make this change.


BUG: pnpx

Describe the bug
A clear and concise description of what the bug is.
pnpx is not working, reporting the error below:

Link to the blitz that caused the error
https://stackblitz.com/edit/node-kw3dh7
To Reproduce
Steps to reproduce the behavior:

npm add pnpm
pnpx create-react-app (or any commands by pnpx)

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

This seems to be a bug indeed!
🙏 for reporting!

This is now fixed :tada:

How did you get pnpm installed?

Hey @okikiom,
Using a WebContainer Stackblitz project, you can use the npm add pnpm command in the terminal.

@geromegrignon I tried that with but it didn't work, https://stackblitz.com/github/okikio/native/tree/beta

@geromegrignon I tried that but it didn't work, https://stackblitz.com/github/okikio/native/tree/beta

Please provide more details about it didn't work part.

Btw @okikio, this issue being closed already, I encourage you to open a proper one with details about your current problem.

Hey @okikiom,
Using a WebContainer Stackblitz project, you can use the npm add pnpm command in the terminal.

This is the error I get on StackBlitz

I'll create a new PR

I've created a new issue #396


MaterialXEditor : Can crash on invalid file load / lack of filtering

Exceptions don't seem to be caught on file load so will crash the editor.
It would be good to add in this check here, and maybe other places where an exception can be thrown.
As a sug, it would be useful to add in file type filtering as I tried to load in an image as a mtlx file.
e.g. add something like this in on load and save:
    mx::StringVec mtlxFilter;
    mtlxFilter.push_back(".mtlx");

    _fileDialog.SetTypeFilters(mtlxFilter);
    _fileDialogSave.SetTypeFilters(mtlxFilter);

Thanks for addressing these issues in #1218, @kwokcb, and I'll mark the original report as closed.


Offer more and better text colors?

There's 4 shades of salmon that you can hardly distinguish, but no yellows which would undoubtedly pair well with dark mode. Same goes for magenta and lime green. Seems like there's a lack of cool-bright colors entirely, in favor of... pink.

There's 4 shades of salmon that you can hardly distinguish, but no yellows which would undoubtedly pair well with dark mode. Same goes for magenta and lime green. Seems like there's a lack of cool-bright colors entirely, in favor of... pink.

Hey Man! I love the request and was facing the same problem, some features that are heavily needed aren't coming in excalidraw so I ended up forking it, to make a better version of it. Check it out here - https://skyflow.vercel.app
It has multiple features including a color palette ;)

Don't you think the pull request is a better option?


How to solve the console preload crossorigin warning problem

Describe the bug

vitesse Demo: https://vitesse.netlify.app/
Reproduction
this project
System Info
vitesse.netlify.app/:1  A preload for 'https://vitesse.netlify.app/assets/app-Ccandkqr.css' is found, but is not used because the request credentials mode does not match. Consider taking a look at crossorigin attribute.
vitesse.netlify.app/:1  The resource https://vitesse.netlify.app/assets/app-Ccandkqr.css was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.
vitesse.netlify.app/:1  A preload for 'https://vitesse.netlify.app/assets/app-Ccandkqr.css' is found, but is not used because the request credentials mode does not match. Consider taking a look at crossorigin attribute.
vitesse.netlify.app/:1  The resource https://vitesse.netlify.app/assets/app-Ccandkqr.css was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.

Used Package Manager
pnpm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

Contributions

[ ] I am willing to submit a PR to fix this issue
[ ] I am willing to submit a PR with failing tests (actually just go ahead and do it, thanks!)

@antfu @YunYouJun @hannoeru


Tag black list refactoring

Category
This change is exactly one of the following (please change [ ] to [x]) to indicate which:

[x] a refactoring

Description
I refactored how tag blacklisting is done to cut down on repeat code
Testing
Required verification:

[ ] I've verified that there are no regressions in mvn test (there are no new failures or errors).
[ ] I've verified that this change works as intended.

[ ] Downloads all relevant content.
[ ] Downloads content from multiple pages (as necessary or appropriate).
[ ] Saves content at reasonable file names (e.g. page titles or content IDs) to help easily browse downloaded content.

[ ] I've verified that this change did not break existing functionality (especially in the Ripper I modified).

Optional but recommended:

[ ] I've added a unit test to cover my change.

Coverage decreased (-0.2%) to 41.202% when pulling ab17ed26cefb5a7a29daf17f6ee3096f59bb0063 on cyian-1756:tagBlackListRefactoring into 97ed831c94016fa0d272fca59ef09996b6bd168c on RipMeApp:master.

The failed test has nothing to do with these changes


Open-ended or close-ended?

Hi, it is a great work!
However, I'm confused whether PMC-VQA is an open-ended or close-ended task. The paper states that it is an open-ended task, but the dataset used is a classification dataset and Figure 3 in the paper also depicts a classification-based VQA.

Relevant to the above:
How are VQA-RAD/SLAKE evaluated for the blank-trained models? The paper describes an ACC metric to find the closest possible response (from the limited vocabulary of typical VQA datasets). But the code never uses difflib.SequenceMatcher except when comparing to the letters A/B/C/D (presumably for the MCQ variant, not the blank one). Specifically, could the authors please clarify:

Are the ACC metrics on existing VQA benchmarks reported by comparing generated answers to all possible candidate answers in their respective vocabularies?
How is End-of-Sequence determined for TD models, and how many masks are to be generated for TE models - in order to retrieve the model's predicted answer to a given question without access to ground truth?

Hi, it is a great work! However, I'm confused whether PMC-VQA is an open-ended or close-ended task. The paper states that it is an open-ended task, but the dataset used is a classification dataset and Figure 3 in the paper also depicts a classification-based VQA.

PMC-VQA can be used for both open-ended and close-ended, as illustrated in  Sec. 4.2. If used for open-ended task, the highlighted answer in Figure 3 is the ground truth.

Relevant to the above: How are VQA-RAD/SLAKE evaluated for the blank-trained models? The paper describes an ACC metric to find the closest possible response (from the limited vocabulary of typical VQA datasets). But the code never uses difflib.SequenceMatcher except when comparing to the letters A/B/C/D (presumably for the MCQ variant, not the blank one). Specifically, could the authors please clarify:

Are the ACC metrics on existing VQA benchmarks reported by comparing generated answers to all possible candidate answers in their respective vocabularies?
How is End-of-Sequence determined for TD models, and how many masks are to be generated for TE models - in order to retrieve the model's predicted answer to a given question without access to ground truth?

Yes, note that if the ground truth answer is "T1", we considered the model output like " T1 image", and "T1 MRI " to be correct.
For the TE model, when ground truth is not available, we can set a default length and determine where it ends by the special token on the output.

Thank you for your response, I will continue to follow this project.

Thank you so much for your response. I really appreciate it and will definitely keep following this project.

Relevant to the above: How are VQA-RAD/SLAKE evaluated for the blank-trained models? The paper describes an ACC metric to find the closest possible response (from the limited vocabulary of typical VQA datasets). But the code never uses difflib.SequenceMatcher except when comparing to the letters A/B/C/D (presumably for the MCQ variant, not the blank one). Specifically, could the authors please clarify:

Are the ACC metrics on existing VQA benchmarks reported by comparing generated answers to all possible candidate answers in their respective vocabularies?

How is End-of-Sequence determined for TD models, and how many masks are to be generated for TE models - in order to retrieve the model's predicted answer to a given question without access to ground truth?

Yes, note that if the ground truth answer is "T1", we considered the model output like " T1 image", and "T1 MRI " to be correct.

For the TE model, when ground truth is not available, we can set a default length and determine where it ends by the special token on the output.

Thank you!

When answering a closed ended vqarad question, will the set of possible answers (to difflib against) be the set of all open ended questions or the set of all open+closed ended questions?

When reporting results on vqarad, is ground truth considered to be available? If so, will exactly as many masks be provided as are the tokens in ground truth? Also is the special token id = 2?

The set of possible answers is just the set of all closed-ended questions?
For the reporting results of the TE model on VQA-RAD, it's true that the number of masks we provide is indeed the same as the number of tokens in the ground truth. If we provide masks more than the number of tokens, the output will be like: 'answer '.  And yes, the special token is  id=2.


Don’t load Font Awesome

This seems to have been added by mistake? The original jsPerf didn’t have any CSS other than the main.css.

I believe this is for the GitHub icon on the login button
https://github.com/jsperf/jsperf.com/blob/f4643b84ee06bf69d3e06de7e29142771e217865/server/web/home/index.hbs#L131

Oh, I see.

the whole thing for one icon?


Update Update-QDKVersion script to handle versions imported in Python

An example can be found in ExploringQuantumClassificationLibrary notebook; the import string looks like this:
qsharp.packages.add("Microsoft.Quantum.MachineLearning::0.12.20072031")

We should add this to the cases already handled by the Update-QDKVersion.ps1 script.
I don't think we have this string in Python files (yet?), but the script could probably address that case as well, if it looks for qsharp.packages.add followed by "Microsoft.Quantum.<a string>::".

(Putting this issue on hold, since it looks like #468 will make it unnecessary.)


Changed minimum requirement according to composer.json

The composer.json mentions a minimum php version of 5.5, while PHP 5.3 is the minimal requirement according to the documentation.

Hi @gisoconnectholland I believe you are referring to the master branch but the latest stable version is on the 3.x branch with composer.json requiring PHP 5.3

Hi @nyamsprod, I missed that, sorry.


Fix for loading state deferment bug.

[X] Implement

[ ] Dogfood

[ ] Merge

[ ] Deploy

Coverage decreased (-0.5%) to 99.526% when pulling 0358e975e17bc4f02b06597884b42a821dfebab9 on fix-useLoadingState-deferment-bug into 20d084894c45467f3c75db55cbfc0becfa4cccde on master.

Closing. See linked issue for explanation.


Allanbranch

Included Devops logo at content page and included hyperlink of creating an MS Azure acc at README

Hi @ytbryan @hadibolehjadi , have made the changes in 02db65f as per @ytbryan comments. It is still able to show on my machine. Please see if it is able to be previewed on yours?


Enhancement: disable "reset line" and "reset hunk" in inline diff cached mode

The concept of reseting lines an hunks in cached mode is confusing. What it does now is exactly equal to unstaging lines or hunks. So, "l" and "L" (also "h" and "H") are doing the same task in the cached mode. This PR disables the "reset" keys "H" and "L" in the cached mode.
We actually also disabled "reset hunk" for the diff view, so it does also make sense to disable it for the inline diff view.

The maintainers of this repo require that all pull request submitters agree and adhere to the following:

[x] I have read and agree to the contribution guidelines.
(required)
[x] All related documentation has been updated to reflect the changes made. (required)
[x] My commit messages are cleaned up and ready to merge. (required)

The maintainers of this repository require you to select the semantic version type that
the changes in this pull request represent.  Please select one of the following:

[ ]  major
[ ]  minor
[x]  patch
[ ]  documentation only

Just to clarify, the current behavior of the keys on a cached file for H == h and l == L yes? And we want to clear the dupe, rather than adding "reset" functionality to a staged file?

Yes, you are right.


Update CurlHelper.js

The variable baseURL wasn't taken into account, so the curl command prints out just the relative part of the url even if baseURL is configured.

@ikatun Awesome, Thanks!
@delirius325 please, update dist folder.


Pin asdl and vendor previous version in laplace.third_party

This PR fixes pip installation on main by pinning the version of asdl to commit 011a942 and vendoring the previous version in laplace.third_party. I've copied over the LICENSE file from asdl but feel free to let me know how else I can give proper attribution. Maybe we should consider linking the original source in a doc-string in __init__.py.

Thanks for preparing this draft. If we go down this route, I would suggest removing all functionality that we do not need, for example fr.py and hessian.py and precondition.py could be such examples. Should be easy to check for dependencies automatically and keep what's required. Or is there some argument for keeping all old functionality as well?

Yes, we can remove unused submodules. Test coverage for the old backend should be good enough for keeping only relevant code. I think the argument in favor of keeping all the code is if users of laplace-torch want to re-use other components of ASDL in a same project, but then it's better for them to migrate to the new backend anyways?

We decided to go with #225. Thanks a lot, nevertheless, @kourbou!


slack trigger can be optional

Hi! I've just come across a scenario when using the Slack webhook where Slack isn't sending either a 'trigger_word' or a 'command' parameter. This happens when you configure the outgoing webhook for a specific channel. In that case, trigger words are optional.
To make my receiver work in that scenario, I had to remove the requirement in code.
Thank you for your consideration of this pull request!
Elena

Hi @ezlateva, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla2.dotnetfoundation.org.

TTYL, DNFBOT;

@ezlateva, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, DNFBOT;

Awesome - thanks! Merged as bb39331cb9530ee99c9ce7ccaa2e547498799a5f


More detailed description

Thanks for sharing this great project. Could you please make your readme.md on github (aswell as the description on f-droid) a little bit more detailed? In particular it would be great if you would name the source of the weather data the widget uses.
Greetings,
Daniel

Hi Daniel, I think the metadata shows the source: OpenWeathermap. I'll at least update the readme to match the metadata. Are there more things you want to know?

Thanks for the information and the very quick update! I have no further questions right now and think that now the readme is a bit more informative for first-visitors of your project!


feat: use jiti to load config

Summary

Less dependencies (jiti is used by tailwindcss v3.3)
Faster startup time
Better support for monorepo

Related Issue
https://github.com/web-infra-dev/modern.js/pull/4754
Checklist

[x] I have added changeset via pnpm run change.
[ ] I have updated the documentation.
[ ] I have added tests to cover my changes.

The unit test in cli package seems failed after switching to jiti.

Yes, there is a ESM/CJS interop issue and I will try to figure it out

Jiti uses CommonJS transforms and this will break some dynamic imports from Rspress.
It looks like Jiti v2 may fix these issues,  ref: https://github.com/unjs/jiti/issues/32
This PR will be held until Jiti fixes it or we find some alternatives.


me2me silently hangs forever if DNS resolution fails

Reproduced locally in a VM

It seems likely that other operations may show the same behavior, but this is the only case I've confirmed so far

This is likely not just a me2me problem, but a problem with any
registry install, and with npm commands in general?
On Mon, Jan 16, 2012 at 7:42 PM, Matt Zimmerman
<EMAIL_ADDRESS>wrote:

Reproduced locally in a VM

Reply to this email directly or view it on GitHub:
https://github.com/LockerProject/Locker/issues/562


Don't try to read/write if connection is closed

There appears to be an issue on OS X where the following sequence of
events occurs, leading to a deadlock:

Remote side closes its connection
Local side receives io.EOF trying to read the next frame
Local idleAwareFramer monitor goroutine exits, so nothing is
receiving from resetChan any more
Code using spdystream isn't aware of the EOF and tries to Reset() all
streams and Close() the connection
The attempt to write the stream reset frame does not return an error
when it logically should
The idleAwareFramer tries to send to the resetChan
In some instances, resetChan's buffer is full (because the monitor
isn't running any more)
We block here

To address this, add checks at the beginning of ReadFrame and WriteFrame
in idleAwareFramer to see if the connection's closeChan is closed. If
so, immediately return an error instead of trying to read/write using
the underlying framer.
Also remove some timeouts in the test code - these should be handled by
passing -test.timeout to the test executable instead.

@dmcgowan @smarterclayton
Hopefully this will fix https://github.com/GoogleCloudPlatform/kubernetes/issues/4882. If you comment out https://github.com/docker/spdystream/pull/46/files#diff-8f8a79f3f89c69a28dd878de98384cf9R92 and https://github.com/docker/spdystream/pull/46/files#diff-8f8a79f3f89c69a28dd878de98384cf9R109, it's pretty easy to make the test fail using this loop:
while true; do go test -run TestFramingAfterRemoteConnectionClosed -timeout 1s; if [ $? != 0 ]; then break; fi; done

@dmcgowan I'm not sure if this is the best way to fix the issue on OS X, but it does seem to resolve the problem.

I think the proper solution would involve a lock around the call to keep a close from occurring when a read/write is attempted. There is always a mismatch between reading/writing from channels and reading/writing from streams, a select cannot handle both.  This solution is not the correct one since at the time WriteFrame is called there is still no protection from close.

What about the case where the remote end closes the connection? There's no way to keep a close from occurring in that instance.
Also, we discussed last week the option of creating a drain goroutine that runs to drain resetChan. That's not pretty, but it would also fix this particular issue.

Or are you just talking about putting a lock around conn.closeChan?

The write lock would need to be around closeChan and read lock in WriteFrame and ReadFrame.

Even with a lock, couldn't you still end up in the situation where the monitor goroutine exits and attempts to read from/write to the connection via the framer succeed even though the connection is closed (what we're seeing on OS X)?

What if instead, we have a bool in the idleAwareFramer that indicates if the monitor goroutine is alive or not? We can put a lock around that, and have ReadFrame and WriteFrame check that bool's status before continuing.

LGTM


ISSUE#3.1- RANI - ISSUE DEVELOPMENT

What would you like to share?
WRITE THE PLAN TO WORK ON THE ISSUE
Additional information
No response

I would like to propose the addition of the Shuffling Algorithm (such as Fisher-Yates) to the repository. This algorithm would be useful for providing a randomized order of the elements in a given list, ensuring randomness. Implementing this in Java would prove to be a useful addition to the existing repository.
The proposed implementation will be using the Fisher-Yates Algorithm in order to shuffle finite sequences and order elements by picking them from a list one by one until there are none left, therefore creating unbiased permutations where each possible combination is as likely as another.
[FEATURE REQUEST]: Add Shuffling Algorithm https://github.com/TheAlgorithms/Java/issues/5635

`
Algorithm Development Template
ISSUE#: 5635
Title: Shuffling Algorithm
Prepared by: Rany Moussa
Date: 10/22/2024

1. Problem Definition and Clarification

Objective: This algorithm aims to implement an algorithm that shuffles and randomizes the order of elements in a given list
Key Questions:

What is the problem to be solved?
The problem to be solved is ensuring all possible permutations of a list is equally likely at any given time.
What are the expected outcomes?
The expected outcome is a unique list every time the algorithm is run

Sub-tasks: Break down the issue into smaller tasks.
- Create a list of a certain size
- Initialize a Random Generator
- Iterate through list
- Pick random index
- Swap Elements
- Repeat until completion

2. Input/Output Specifications

Input Data:

The input data could be integers or strings given in a list

Expected Output:

A fully randomized list of the given elements

3. Constraints and Requirements

Time Complexity: O(n)
Space Complexity: O(1)
Resource Constraints:

Performance on Larger Array lists
Quality of randomness
Memory Limitations

Ethical Considerations (if applicable):

N/A

4. Data Structures

Chosen Data Structures: Arrays and Lists
Justification: This method only works for those data structure types

5. Algorithm Design Approach

Design Paradigm:

Greedy
This algorithm is iterative, making localized decisions at each step and once a swap is made, it is never reversed

Modular Design:

6. Edge Cases and Error Handling

Edge Cases:

Empty Array or List
Single Element Array or List
Repeated Elements
Large Lists or Arrays
Non-Integer Elements

Error Handling:

The algorithm should return an empty or unchanged array in the first two cases, respectively, it should treat each repeated element as individual in the third case, and should be able to run normally in the last two cases.

7. Optimization

Initial Version: An algorithm that randomizes all elements of a list and returns said list.
Optimization Techniques: List any steps taken to optimize the algorithm for better performance (e.g., memoization, pruning, parallelization).

8. Testing and Debugging

Test Cases:

Typical input cases.
Boundary cases.
Edge cases.

Debugging Tools: Specify the tools or strategies used for debugging.

9. Documentation and Maintenance

Documentation:

Provide clear explanations of the algorithm, its functions, and how to use it.

Maintenance Plan:

Outline plans for future updates, bug fixes, and ongoing improvements.

Comments/Notes
[Additional notes or comments regarding the issue development.]

Version History

Date
Changes Made
Version

10/22/2024
Initial Draft
1.0

MM/DD/YYYY
[Describe subsequent changes]
X.X

`


Failed to obtain HOSTUUID from XE CLI

Getting host list using: /opt/xensource/bin/xe host-list hostname=grep "^HOSTNAME=" /etc/sysconfig/network | awk -F= '{print$2}' params=uuid --minimal
Detected HOST UUID:
Error: Failed to obtain HOSTUUID from XE CLI
./patch_checker.py -D
Citrix_XenServer_Patcher_Version: 1.5.2
Detected XenServer Version: 8.2.0
xsver: 82
XenServer machine identified.
XenServer Version 82 detected.
XE utility located OK
Testing XE CLI function using: /opt/xensource/bin/xe host-list
XE working OK
Downloading patch list XML

Does this help at all? https://github.com/dalgibbard/citrix_xenserver_patcher/issues/70

Yes that fixed it.
But new error:
Installed Patches: ['51398fd6-0000-0000-984a-fc7c2a4779b4',
'661184a8-0000-0000-b6fb-7a62a232dda5']
Trying to establish which 'null' is correct. If you see an 'X MATCHED'
message, please notify me on Github via an Issue!
Failed to read Auto-Exclusion List from:
https://raw.githubusercontent.com/dalgibbard/citrix_xenserver_patcher/master/exclusions/XS82_excludes.py
Check the URL is available, and connectivity is OK.
Error: HTTP Error 404: Not Found
NOTE: To proceed without downloading the Auto-Excludes file (not
recommended), pass the "-E" flag.
On Sun, Dec 20, 2020 at 9:28 AM Darren Gibbard<EMAIL_ADDRESS>wrote:

Does this help at all? #70
https://github.com/dalgibbard/citrix_xenserver_patcher/issues/70
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dalgibbard/citrix_xenserver_patcher/issues/82#issuecomment-748636149,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOQDW2TNKBDW7DVKF3HCPRLSVYX4HANCNFSM4VDHGU4A
.

--
Derek Gold
Solutions Consultant / Systems Solutions Architect
Loquanet, Inc.
MSP, IT Solutions, Hosted IaaS, & Private Sector Solutions
Office //<PHONE_NUMBER>

Probably worth checking this :) https://github.com/dalgibbard/citrix_xenserver_patcher/issues/81

I ran it with the -E and it said the same error. Like the switch e didn't
do anything.
On Mon, Dec 21, 2020, 00:30 Darren Gibbard<EMAIL_ADDRESS>wrote:

Probably worth checking this :) #81
https://github.com/dalgibbard/citrix_xenserver_patcher/issues/81
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dalgibbard/citrix_xenserver_patcher/issues/82#issuecomment-748814972,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOQDW2WOKDSKF52Y3EZEM5TSV32QJANCNFSM4VDHGU4A
.

I mean specifically, that xenserver patcher isn't required for this build, as it's managed by a different update process (yum or similar)

Well was on the phone with Citrix tech support and I was told and I
performed a required one by one update manually for each patch on 8.1 or
8.2. They said start at the highest patch because they might include lower
patches.
Manually patching several xen host is beyond time consuming and annoying.
I thought your repo might help eliminate this headache.
On Mon, Dec 21, 2020, 11:29 Darren Gibbard<EMAIL_ADDRESS>wrote:

I mean specifically, that xenserver patcher isn't required for this build,
as it's managed by a different update process (yum or similar)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dalgibbard/citrix_xenserver_patcher/issues/82#issuecomment-749126024,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOQDW2W2ZYPL2OSYASOXZULSV6HXLANCNFSM4VDHGU4A
.

I haven't had to support xenserver hosts since 6.2 unfortunately, so this hasn't been tested past v7.
Maybe check forked versions of this repo in case someone has continued to support it in their own branch?
According to the linked ticket, the patch application process might just be via yum, which wouldn't need a new utility, but I can't confirm that unfortunately.


http error: bad request

When ever I try to add any thing i.e app id it shows error bad request

It is necessary to activate the "Page Public Content Access" request in your App created on the Facebook for Developer dashboard. Furthermore, the APIs are certainly to be updated to version 5.0.


Revert uglification of CLI options

@ilan-gold in #1654, this was made uglier.
My local version of gh has no problem with the cleaner version of CLI option specification, so why not like this?

OK. Please also check out e844f186dc8241df1d4dcfd711009877fd07040b, the validation was broken too!
(len(Version(...).release) == 3 is always True, we must match the raw string)

(len(Version(...).release) == 3 is always True, we must match the raw string)

Maybe I'm missing something:
>>> from packaging import version
>>> version.Version("1.0")
<Version('1.0')>
>>> version.Version("1.0").release
(1, 0)


WIP: add full compare when ingress startup

Please answer these questions before submitting a pull request

Why submit this pull request?

[ ] Bugfix

[x] New feature provided

[ ] Improve performance

[ ] Backport patches

Related issues
#587

Codecov Report

Merging #680 (3e848bb) into master (1e1be74) will decrease coverage by 0.82%.
The diff coverage is 1.35%.

:exclamation: Current head 3e848bb differs from pull request most recent head 3c2dac8. Consider uploading reports for the commit 3c2dac8 to get more accurate results

@@            Coverage Diff             @@
##           master     #680      +/-   ##
==========================================
- Coverage   35.04%   34.21%   -0.83%
==========================================
  Files          60       61       +1
  Lines        5967     6114     +147
==========================================
+ Hits         2091     2092       +1
- Misses       3625     3771     +146
  Partials      251      251

Impacted Files
Coverage Δ

pkg/ingress/compare.go
0.00% <0.00%> (ø)

pkg/ingress/controller.go
1.06% <0.00%> (-0.01%)
:arrow_down:

pkg/ingress/pod.go
32.46% <100.00%> (+0.88%)
:arrow_up:

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 1e1be74...3c2dac8. Read the comment docs.

@gxthrj There are a couple of lint errors, please fix them.


Release

Codecov Report

Merging #20 (40aa152) into master (28dda95) will increase coverage by 0.76%.
The diff coverage is 91.48%.

@@             Coverage Diff              @@
##             master      #20      +/-   ##
============================================
+ Coverage     85.61%   86.38%   +0.76%
- Complexity      139      150      +11
============================================
  Files             6        6
  Lines           591      595       +4
  Branches         49       50       +1
============================================
+ Hits            506      514       +8
+ Misses           53       49       -4
  Partials         32       32

Impacted Files
Coverage Δ

...m/epam/reportportal/cucumber/AbstractReporter.java
89.77% <88.88%> (+0.95%)
:arrow_up:

...ain/java/com/epam/reportportal/cucumber/Utils.java
88.23% <100.00%> (+1.79%)
:arrow_up:

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 f17ab94...40aa152. Read the comment docs.


C files are not rebuit when modified

C files built through build.rs are not rebuilt when they are modified. The developer has to do something like cargo clean and then build again. There's also no warning or message that the C files are newer and may need to be rebuilt. This all results in the developer potentially building / running with out of date code and can easily cause confusing issues.
By default, Cargo doesn't know about files that are managed by build.rs so this makes sense. But it can be told about these files through cargo:rerun-if-changed. The files built through freertos-cargo-build should automatically have this applied if possible (at least shim.c but ideally also the FreeRTOS-Kernel source). There may be other files built by the user's build.rs through the inner cc, which should be left alone so the user can decide what to do.

Closed by #39


How to start a kafka-connect with ElasticSearch connector?

Hi,
I want to start a kafka-connect only cluster (We already had kafka, schema-registry, i.e. installed some where else). We only need a kafka-connect to get data from that kafka to ElasticSearch.
How should I go about configuring to get this? Below is my current config. I can get the kafka-connect worker up and running but I don't know how to apply and start the ES connector:
# values.yaml
cp-zookeeper:
  enabled: false

cp-kafka:
  enabled: false

cp-schema-registry:
  enabled: false

cp-kafka-rest:
  enabled: false

cp-ksql-server:
  enabled: false

cp-control-center:
  enabled: false

cp-kafka-connect:
  enabled: true
  replicaCount: 1
  image: confluentinc/cp-kafka-connect
  imageTag: 5.2.2
  resources: {}
  ## If you do want to specify resources, uncomment the following lines, adjust them as necessary,
  ## and remove the curly braces after 'resources:'
  #  limits:
  #   cpu: 100m
  #   memory: 128Mi
  #  requests:
  #   cpu: 100m
  #   memory: 128Mi
  configurationOverrides:
  "plugin.path": "/usr/share/java"
  "key.converter": "io.confluent.connect.avro.AvroConverter"
  "value.converter": "io.confluent.connect.avro.AvroConverter"
  "key.converter.schemas.enable": "false"
  "value.converter.schemas.enable": "false"
  "internal.key.converter": "org.apache.kafka.connect.json.JsonConverter"
  "internal.value.converter": "org.apache.kafka.connect.json.JsonConverter"
  "config.storage.replication.factor": "3"
  "offset.storage.replication.factor": "3"
  "status.storage.replication.factor": "3"
  kafka:
    bootstrapServers: "<my-kafka-server>"
  cp-schema-registry:
    url: "<my-schema-registry>"

please have a look at the docs
https://docs.confluent.io/current/connect/kafka-connect-elasticsearch/index.html

For anyone looking for answer.
At the moment of writing this comment, there are 2 ways to start a connector:

Using REST API
Use confluent CLI (which is only recommended in development mode)

How did you fill Kafka credential in Kafka Connect? Thanks


Add formats DMS/HMS and datetime

Fixes #599. Fixes #1030
Were any Django, import pipeline, table_schema, or dictionary files modified? Y

If YES:

Database used: New
All Django tests pass: Y
FLAKE8 run on modified code: Y

Were any JavaScript or CSS files modified? Y

If YES:

JSHINT run on all affected files: NA
Tested on Chrome, Firefox, Safari, Edge, and iOS: N
(Remember to test all browser sizes)
Tested for race conditions (with delayed API calls if applicable): NA

Description of changes:

Change the way units are handled
Add support for new datetime formats
Add support for new latitude/longitude/hour_angle formats
There is a new test suite for lib/opus_support.py. Just run "python opus_support.py" in the lib directory.
You can run this version with the most recent test database, but you have to update the param_table first with "python main_opus_import.py --create-param".
I slightly expanded the width of input fields so that a complete datetime string would fit in Linux Chrome. I have not been able to test on other browsers because I'm having trouble with BrowserStack, so testing would be greatly appreciated.
The changes to the requirements are not caused by these changes, but by recent changes to pdsfile.

Known problems:
None.

Date/time formats:

The "julian" module handles the following formats: YYYY-MM-DD[THH:MM:SS.sss], YYYY-DDD[THH:MM:SS.sss], JDxxxx, JEDxxxx, MJDxxxx, MJEDxxxx.
All of those formats are supported by just typing them raw into a date/time field, regardless of the currently selected units. In other words, if the current unit is "JD", you can still type "2010-01-01".
If you just type a number, it is interpreted according to the current unit selection.
Dates are limited to the years 1000-2999; anything outside of that range is considered an error

RA/DEC/longitude/latitude formats:

Nd Nm Ns (degrees-minutes-seconds) or Nh Nm Ns (hours-minutes-seconds).
The last field (d/h, m, or s) can have fractions, but none of the earlier fields can. So "1.23d" and "1d 2.34m" are legal but "1.23d 10m" is not.
You can type a degrees string during "hours" units or vice versa and it will be interpreted properly.
You can type either a degrees or hours string during radians and it will be interpreted properly.
If you type a raw number, it will be interpreted according to the current units: degrees or DMS means degrees, hours or HMS means hours, radians mean radians.

Numeric fields that support other types of units (duration, distance, resolution, etc.) can take an optional suffix to override the unit. So when "seconds" is selected, you can type "1" which means 1 second. Or you can type "1 day" or "1 hour" and it will convert for you. There are a wide range of things that will be understood.
Spacing and capitalization shouldn't matter for any of the above as long as it doesn't introduce an ambiguity.

One more change: I increased the number of significant digits for wave number and wave number resolution.

One issue found so far, for observation time, we can't switch unit to JED or MJED, here are steps to reproduce:

Start OPUS freshly, open up Observation Time widget.
In unit selection, change unit to JED or MJED, the spinner will stay, hints won't get updated, and there will be a server error.