Error setting up platform telegram

Home Assistant release (hass --version):
0.43.1
Python release (python3 --version): 3.6.0b3 (macos 10.11.6)
3.6.0b3 (macos 10.11.6)
Component/platform:
notify, platform: telegram
Description of problem:
the configuration that always worked, now, after upgrading to HA 0.43.1 and switching from python 3.5 to 3.6 telegram won’t set up (see stacktrace below). if i do this (described here), there’s the same error:
ix$ python3
Python 3.6.0b3 (v3.6.0b3:8345e066c0ed, Oct 31 2016, 18:05:23)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import telegram
>>> bot = telegram.Bot(token='xxx:xxx_o')
>>> chat_id = bot.getUpdates()[-1].message.chat_id
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/telegram/bot.py", line 125, in decorator
    result = func(self, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/telegram/bot.py", line 1241, in getUpdates
    result = self._request.post(url, data, timeout=urlopen_timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/telegram/utils/request.py", line 207, in post
    **urlopen_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/telegram/utils/request.py", line 132, in _request_wrapper
    resp = self._con_pool.request(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/request.py", line 70, in request
    **urlopen_kw)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/request.py", line 148, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/poolmanager.py", line 303, in urlopen
    conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/poolmanager.py", line 219, in connection_from_host
    return self.connection_from_context(request_context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/poolmanager.py", line 232, in connection_from_context
    return self.connection_from_pool_key(pool_key, request_context=request_context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/poolmanager.py", line 245, in connection_from_pool_key
    pool = self.pools.get(pool_key)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_collections_abc.py", line 603, in get
    return self[key]
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/_collections.py", line 53, in __getitem__
    item = self._container.pop(key)
TypeError: unhashable type: 'list'

Expected:
no errors when setting up platform.
Problem-relevant configuration.yaml entries and steps to reproduce:
notify:
  - platform: telegram
    name: notify
    api_key: xxx:xxx_o
    chat_id: xxx
  - platform: telegram
    name: bot4ia
    api_key: xxx:xxx_o
    chat_id: xxx

Traceback (if applicable):
[31m17-04-25 15:25:39 ERROR (MainThread) [homeassistant.components.notify] Error setting up platform telegram
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/homeassistant/components/notify/__init__.py", line 101, in async_setup_platform
    None, platform.get_service, hass, p_config, discovery_info)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/homeassistant/components/notify/telegram.py", line 49, in get_service
    username = bot.getMe()['username']
  File "/Users/ix/.homeassistant/deps/telegram/bot.py", line 125, in decorator
    result = func(self, *args, **kwargs)
  File "/Users/ix/.homeassistant/deps/telegram/bot.py", line 174, in getMe
    result = self._request.get(url)
  File "/Users/ix/.homeassistant/deps/telegram/utils/request.py", line 170, in get
    result = self._request_wrapper('GET', url)
  File "/Users/ix/.homeassistant/deps/telegram/utils/request.py", line 132, in _request_wrapper
    resp = self._con_pool.request(*args, **kwargs)
  File "/Users/ix/.homeassistant/deps/urllib3/request.py", line 66, in request
    **urlopen_kw)
  File "/Users/ix/.homeassistant/deps/urllib3/request.py", line 87, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/Users/ix/.homeassistant/deps/urllib3/poolmanager.py", line 303, in urlopen
    conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
  File "/Users/ix/.homeassistant/deps/urllib3/poolmanager.py", line 219, in connection_from_host
    return self.connection_from_context(request_context)
  File "/Users/ix/.homeassistant/deps/urllib3/poolmanager.py", line 232, in connection_from_context
    return self.connection_from_pool_key(pool_key, request_context=request_context)
  File "/Users/ix/.homeassistant/deps/urllib3/poolmanager.py", line 245, in connection_from_pool_key
    pool = self.pools.get(pool_key)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_collections_abc.py", line 603, in get
    return self[key]
  File "/Users/ix/.homeassistant/deps/urllib3/_collections.py", line 53, in __getitem__
    item = self._container.pop(key)
TypeError: unhashable type: 'list'

Works fine for me on dev and Python 3.5.3. In #7298 the used Python version is 3.4.3.

same problem on pretty fresh HA dev-install on python 3.6.0 (macos sierra).
bot setup is fine, worked for weeks until the switch to 0.43.1

same error :(

same problem here. Running on hassbian. Before the upgrade to 0.43.1 it worked fine.

urllib3 released 1.21 yesterday (2047-04-25). Perhaps related?

I'm closing this in favor of #7298, where the telegram repo issue is linked and workaround is reported.


RCTPushNotificationManager does not set alertTitle in UILocalNotification

Description
Setting the alertTitle property on PushNotificationIOS.scheduleLocalNotification does not display the title in the notification.
With alertTitle set:

Without:

Reproduction Steps
Use the below code to reproduce.
Sample Code
PushNotificationIOS.scheduleLocalNotification({       fireDate: new Date(Date.now() + (30 * 1000)).toISOString(),       alertTitle: 'Incoming Message', 			alertBody: 'This is my message, please read it for good fortune.', 			soundName: 'default', 			applicationIconBadgeNumber: 1, 			userInfo: {         id: 11       }     })
Solution
Adding the following line in RCTPushNotificationManager.m (54) fixes the issue:
notification.alertTitle = [RCTConvert NSString:details[@"alertTitle"]];
Additional Information

React Native version: 0.45
Platform: iOS
Development Operating System: macOS Sierra 10.12.15
Build tools: XCode 8.3.3

Can you send a PR?

Tagging as a Good First Task. A solution is provided in the original post above. People can get familiar with the contribution process by applying the fix in a PR.

@hramos I'm ready to create a PR as I'm new to the contribution process and is essential for me to get to know the process.

Great work on this guys, thanks!

This issue has been moved to react-native-community/react-native-push-notification-ios#2.


EPUB legacy Edge deprecated code to Chromium?

I must say your code was good compared to Adobe Digital Editions or Calibre. Issue in chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=540776
Please! This would be very nice, especially on Android! As all readers I used are pure garbage ;) We already support opening pdf in chrome even in Android (some canary versions).

Thanks! As noted here: https://github.com/MicrosoftEdge/MSEdgeExplainers#have-a-product-bug I would also encourage you to file this as in-product feedback against the browser so that we can route it to the right folks for consideration. Thanks!


The ability to parse the date and time in UTC format

It would be useful to have a utility for working with the date in utc format. Something like the old version of working with a date or an analog in dayjs:
dayjs.utc('2023-12-31'); // '2023-12-31T00:00Z'
dayjs.utc('2023-12-31T00:00Z'); // '2023-12-31T00:00Z'

@ValeraS Hey! Do you know how can we handle this case?


Adds a batch script to copy DMStandard to the bin

This allows IDEs like Rider to execute it in the build process, as an external tool.

Tested and working.

What if the directories bin\Debug\net5.0 or bin\Release\net5.0 don't exist?

@wixoaGit Before my latest commit it would ask for confirmation to make them, I just modified it to make them automatically if they don't exist.


@sravani

Is there any way to write our own rest api's to access bot for mobile applications

please help me i want to integrate my bot with android.but i can't with the directline api

Hi @sravaniVajjha, the Direct Line API is the recommended way to integrate your bot into your mobile app. Are you still having difficulty with the API?

Closing due to lack of activity.  If you still have an issue, please let us know.


[Fix ] fix configs due to api refactor of num_classes

Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.
Motivation
With the refactor of batch_aguments, there are still a few of configs not being adapted.
Modification
see changes for details.
BC-breaking (Optional)
Does the modification introduce changes that break the backward compatibility of the downstream repositories?
If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.
Use cases (Optional)
If this PR introduces a new feature, it is better to list some use cases here and update the documentation.
Checklist
Before PR:

[ ] Pre-commit or other linting tools are used to fix the potential lint issues.
[ ] Bug fixes are fully covered by unit tests, the case that causes the bug should be added in the unit tests.
[ ] The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
[ ] The documentation has been modified accordingly, like docstring or example tutorials.

After PR:

[ ] If the modification has potential influence on downstream or other related projects, this PR should be tested with those projects, like MMDet or MMSeg.
[ ] CLA has been signed and all committers have signed the CLA in this PR.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Good, please sign the CLA and we can merge this PR after.


Image width 100% stretches IMG

As this is not using background-size: cover;, a small image leaves a blank space. If IMG is set with width: 100%;, the image is stretched..
Or maybe a solution with css like this one?
https://github.com/TheOriginalJosh/nativescript-ng2-parallax

Question:

Do you want to stretch out image if smaller than box?
Do you have any working example?

Oh shoot, just forgot to hook the image in.
The screenshot shows two parallax containers. The upper one has an image that is big enough. The second image is too small. So it lefts whitespace.Setting the width to 100% leaves the height untouched so that the proportions would be broken.

Thank you for more explanation
I will see what I can do about it.
Meanwhile, any help or PR would be highly appreciated

This is fixed already

This is fixed already


Feature: Reading current DeviceOrientation configuration

Use case

Flutter supports setting the devices allowed device orientation by using SystemChrome.setPreferredOrientations(). I would like to read the current orientation in order to do something like:

Read & save current configuration
Temporarily set a different preferred device orientation
Reset to the configuration from step 1

Proposal

Add an API like
List<DeviceOrientation> currentPreferredOrientations =  await SystemChrome.getPreferredOrientations();

Hi @ueman
I see there's an open issue addressing the case you described https://github.com/flutter/flutter/issues/74597.
Please follow up on that issue, I'm closing the current one as a duplicate.
You can also check out this package https://pub.dev/packages/native_device_orientation
Thank you

This isn't a duplicate; getting the preferred orientation set isn't the same as getting the current device orientation.

Hi there,
I don't understand why you need to get the Preferred Orientations since you are setting them, whats the point?

I would like to read the current orientation in order to do something like:

You could read the current orientation as following:
 MediaQuery.of(context).orientation;

// or via
OrientationBuilder(
  builder: (context, orientation) {}
);

Thanks!

The problem is that you can set multiple preferred orientations, but you can only read the current orientation and not the current allowed orientations. This is problematic if you use this API for example in a library. You can't reset the orientations to the original requested orientations from the user of the library if you changed it.

It is not only that... if you're writing to the screen, for example with a custom painter (Im building a virtual background app) you do need the actual orientation.

cc @dnfield since we were discussing something tangentially related today.


Greetings badge is failing.

It seems to be an issue with missing node modules, working on it currently.

We've decided it's not something we want to fix, as there is no usage for it.


JS Tutorial doc: app JS files order is not significant

I signed it!

This PR looks good to me but needs a rebase. That would be appreciated.

Rebase done.


Show Loading Screen while Game Transfer is Occuring

PR Checklist

Please check if your PR fulfills the following requirements:

[x] All new classes have class-level documentation comments, if there are any at all
[ ] Tests for the changes have been added (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation update
[ ] Other... Please describe:

What is the current behaviour?

Client's game is brought up before it is fully ready.
What is the new behaviour?

Resolves #662

Client now will be in menu loaded until the data is fully loaded. Basically it blocks the menu from stop loading until the data is loaded.

@EgardA readded the file


File-based routing

Having to prefix all endpoints of a given type with a part of a path can be tedious and error-prone. What is not tedious or error-prone, is using the filesystem to drive routing.
Current state:
To have an endpoint at POST: /api/public/products we need:
// location: Api/Public/Products/CreateProduct.cs

[Handler]
[HttpPost("api/public/porducts")]
public static partial CreateProduct
{
    // ...
}

Can you spot the typo?
Proposed
To have an endpoint at POST: /api/public/products is as simple as:
// location: Api/Public/Products/CreateProduct.cs

[Handler]
[HttpPost]
public static partial CreateProduct
{
    // ...
}

Considerations
Opt-in methods
It does not have to be the default behavior. It could be controlled globally with some [assembly: FilesystemRouting] attribute, or perhaps on the individual endpoint basis with a similar attribute, or some magic like [HttpPost("[file]")] or [HttpPost(FilesystemRouting = true)]
Naming policies
What happens when a path contains a space? Should PascalCase directories be translated to lowercase, kebab-case, or something else?
The easiest way would be to go with what is the default for Microsoft, or at least seems to be: whitespace and special characters get removed, everything gets translated into PascalCase.
The best way would be to provide a choice, for example via an enum:
public enum NamingPolicy
{
    PascalCase,
    CamelCase,
    LowerCase,
    KebabCase,
    SnakeCase
}

to be used with attributes discussed prior, for example
[assembly: FileSystemRouting(
    NamingPolicy = NamingPolicy.LowerCase
)]

Base path
Endpoints don't always have to be placed in a directory at the root of the project. For various reasons, they can be placed elsewhere. A way should be provided to define the base directory. For example:
// location: Api/Handlers/Product/Create.cs

[assembly: FileSystemRouting(
    RootDirectory = "Api/Handlers"
)]

[Handler]
[MapPost] // maps it to POST: /product
public static partial class CreateProduct
{
    // ...
}

Source generator limitations
File location might not be available to a source generator. In such a case, should the namespace be used as a close approximation?

A couple more things that came to my head as I was moving all my APIs to IA:
Areas
My project uses areas, particularly for admin-only endpoints. Would be nice to support areas somehow.
MyProject
|— Api
|  |— One.cs
|  \— Two.cs
|— Areas
|  |— Admin
|  |  \— Three.cs
|  |— Unga
|  |  |— Bunga
|  |  |  \— Four.cs

The above should produce endpoints:

/one
/two
/admin/three
/unga/bunga/four

Whether it's achieved by convention like ASP does it by default, that is treating each directory in Area as a root for the purposes of routing, or with some kind of config... not sure.
Versioning
Similarly to the above, API versioning is often handled with separate directories as well:
MyProject
|— Api
|  |— V1
|  |  \— One.cs
|  |— V2
|  |  \— Two.cs

which should work out of the box, seeing how they are directories after all, but perhaps something more needs to be done to make it work with NSwag, Swashbuckle, and the bunch.
Route Patterns...?
Both of the above, as well as any potential future advanced uses could maybe be handled by a route pattern. It could use RegEx, and the route would consist of consecutive capture groups
[assembly: FileSystemRouting(
    NamingPolicy = NamingPolicy.LowerCase,
    RoutePattern = "App\.(?:Areas\.)?(\w+).(.+)"
)]

(regex101)
The above would produce

Namespace + File
Route

App.Areas.Admin.GetThing,cs
/admin/getthing

App.Api.GetStuff.cs
/api/getstuff

App.Api.V1.MakeDo.cs
/api/v1/makedo

App.Areas.Unga.Bunga.DeleteTing.cs
/unga/bunga/deleteting

Additionally — and I'm probably getting into the area of way overcomplicating what started as a simple proposal — it could support named capture groups and a separate pattern using those names:
[assembly: FileSystemRouting(
    NamingPolicy = NamingPolicy.LowerCase,
    RoutePattern = "App\.(?:Areas\.)?(?<root>\w+)\.?(?<version>V\d)?\.(.+)",
    RouteTemplate = "[root]/[version?]/[...]"
)]

which, with the following placeholder meanings

[name] replace with the contents of capture group name
[name?] replace with the contents of capture group name or leave empty and remove the resulting double-slash if the group does not exist
[...] the rest of the path, coming from the last unnamed capture group

would produce the same.

Another thought... What if it could make use of MapGroup...?
Api
|— Foo
|  |— GetFoo.cs
|  |— MakeFoo.cs
|  \— FooGroup.cs
\— ApiGroup.cs

// ApiGroup.cs
[MapGroup("api")]
public static partial class ApiGroup;

// FooGroup.cs
[MapGroup("foo")]
public static partial class FooGroup
{
    private static partial Group Configure(this Group group) => group
        .WithTag("foo")
        .Authorize("some policy")
        .WhateverOtherConfig();
}

TODO: polish this comment more, I'm writing it on my phone at a maccas

Like web development routing😁


Suggestion: Check for constants being defined in specs

When you define a constant (modules, classes, constants) in a spec, it’s defined in global scope. That may lead to confusing spec errors:
context "one" do
  class Foo
    def self.bar
      1
    end
  end

  it "should be 1" do
    expect(Foo.bar).to eq(1)
  end
end

context "forty two" do
  class Foo
    def self.bar
      42
    end
  end

  it "should be 42" do
    expect(Foo.bar).to eq(42)
  end
end

With the output
» rspec class_scope_spec.rb
F.

Failures:

  1) one should be 1
     Failure/Error: expect(Foo.bar).to eq(1)

       expected: 1
            got: 42

       (compared using ==)
     # ./class_scope_spec.rb:9:in `block (2 levels) in <top (required)>'

Finished in 0.01052 seconds (files took 0.11059 seconds to load)
2 examples, 1 failure

Failed examples:

rspec ./class_scope_spec.rb:8 # one should be 1

Would this cop encourage using stub_const or would it just discourage constants entirely?

I don’t know. In most cases you could probably just use local variables – e.g.
foo = Class.new do
  def self.bar
    1
  end
end
puts foo.bar
#=> 1

but we should probably allow using stub_const as well.

Sounds like a good idea

This is a tricky one to get right but seems like a good idea

Here’s a @kmayer blog post on the issue http://blog.bitwrangler.com/2016/11/10/sacrificial-test-classes.html


Prototype PDBError and add error.rs

Prototype PDBError and add error.rs for pdb.rs. Specifically, I changed the return type of get_compact_symbol_table in pdb.rs from Option<CompactSymbolTable> to CompactSymbolResult<CompactSymbolTable>.
In error.rs, I added code so as to channel pdb_crate::Error to CompactSymbolError.
Commented out lines 57-71 in original lib.rs to test the build.
@mstange Let me know if this is the right direction to go.
References Bug 1563305.

Oops, I meant to flag this PR as draft. It's currently not ready to be merged yet.


mount /data/public/branding

https://github.com/antleaf/nims-mdr-development/issues/265

@nabeta I've made the change I suggested; feel free to merge and deploy if you agree (with update to your .env)


grouping_test is failing a lot of tests

grouping_test.rb file has about 10 tests that are failing. It could be either the test is not written correctly or something wrong in grouping.rb file;
The test file can be individually run with the following command:
$ ruby test/unit/grouping_test.rb

Please post the error output you are getting. Thanks.

Here's the error output from the test: http://pastie.org/3424238

@jerboaa, I get the following error. Any idea what that means?
rake aborted! uninitialized constant Rake::DSL
Anyway, I took a closer look at the errors. I think they're more related to getting the dummy database so I don't think it's an issue with the actual tests. If so, let me know in which case I'll close this issue. Thanks

Sorry it's supposed to be:
$ bundle exec rake db:test:prepare
$ ruby test/unit/grouping_test.rb

BTW, I'm not able to reproduce this here.

using bundle exec rake db:test:prepare ins't a long term solution.
I think a quick fix for this problem is to add a::
setup do
    clear_fixtures
 end

at the beginning of the file.
The long term fix is to get rid of fixtures: we are almost there (two more files to migrate).

Sounds good, @NelleV. @baadshah02 please verify that @NelleV's fix works for you.

Yes, @NelleV you fix did it. Thanks a lot @NelleV and @jerboaa, it seems like it is just a problem with the fixtures not being cleared up. So now grouping_test.rb ran without any errors. So I'll close this issue. Should I commit grouping_test.rb with the clear fixtures command so when that everyone can have this and no one else will run in to this problem at least?

@baadshah02 yes, please.


Add default layout param

it helps you to set all fields default layout.
It's necessary not to repeat layout="floating" in all {% bootstrap_field ... %} tags

Thanks @PNoryk. Looks good to have a default map layout. Can you add the changes to the documentation and the tests?

Ref: #190

This issue is becoming outdated compared to the main branch.

Continued on #531


parse commandline flags/options when validating workflow

I have a workflow that uses a cwl-extension which is not part of the standard. I'd like to be able to parse the "--enable-ext" flag to cwltool when validating the workflow.

It is not entirely clear to me what enable_ext does. I made a branch (enable_ext) which uses some code copied from cwltool to load/validate workflows using --enable-ext (or my best first guess at doing so). Can you test this?
To save using enable_ext do:
wf.save('workflow.cwl', enable_ext=True)

Also, I would be grateful if you can provide me with an example for testing purposes.

Example of CommandLineTool that needs enable_ext: https://github.com/apertif/apercal/blob/cwl/cwl/steps/preflag.cwl


Remove UTF8 BOM character before sending code to FSI

I finally managed to reproduce & fix this :-)

:tada:


Security fix

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of “no breaking changes
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[ ] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[ ] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Please follow the link to find more details on PR review process.

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

Hi, @PhoenixHe-TSP. The PR has be closed for a long time and it's related branch still exist. If no further used for over 14 days, I will delete this related branch. Please tell me if you still need this branch.

Hi, @PhoenixHe-TSP. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.

Hi, @PhoenixHe-TSP. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.


python37Packages.starlette: 0.13.0 -> 0.13.2

Motivation for this change
Update version and use fetchurl instead of fetchPypi as this is now the preferred method. This also makes the tests pass and, thus, the build, which was failing.
These changes need to backported to release-20.03, #80379
This PR will partially replace #81055
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Result of nix-review pr 81304 1

1 package failed to build:

python37Packages.fastapi

1 package were build:

python37Packages.starlette

Fix for fastapi is upcoming

Dropping this in favor of #81305


[FLINK-26638][connnectors/elasticsearch] Revert Table API implementation to SinkFunction

What is the purpose of the change
Because users depend on the ActionFailureHandler we need to revert the Table API implementation of the Elasticsearch Sink back to the SinkFunction one. This is only transitory but necessary for 1.15
Brief change log

Reverted changes to TableAPI modules back to SinkFunction based one
Backported FLINK-24571 (now()function in dynamic indexes)
Updated connector docs for Table API

Verifying this change
This change added tests and can be verified as follows:

Added the tests from the old SinkFunction-based module

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (yes / no)
The serializers: (yes / no / don't know)
The runtime per-record code paths (performance sensitive): (yes / no / don't know)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (yes / no / don't know)
The S3 file system connector: (yes / no / don't know)

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

@flinkbot run azure

@flinkbot run azure


pypi package missing content

A minor issue I noticed while trying to build your packages for CentOS/RedHat 7.x.
It appears the packages provided on pypi (specifically the direct link) has missing content vs what you provide on your github page (here) in you 2.6.1 release.
The only missing ones that really matter (to me and probably others) are:

test/conftest.py
test/coroutine_tests.py
test/helpers.py

At the end of the day, I hauled in your copy from github (which contains these files of course) and all tests pass with flying colors (as you already knew it would) :)
So do what you wish with this info; and thank you and your awesome community for all of the great work on this solid piece of code!

Thanks for this report! This was fixed in the 3.0 release, so I strongly recommend moving to the latest and greatest, which should also rectify your packaging problems.
Thanks for reaching out! 😁


[Bug] Syntax errors with workflow conditional expressions

Describe the bug
The conditional expressions used to selectively trigger workflows in this skills course appear to have syntax errors.  The following list of workflows use multi-line conditionals that are terminated improperly:

writing-javascript-actions/.github/workflows/4-create-javascript-files-for-action.yml
-41-    if: ${{ github.repository_owner != 'TBD-organization' }}
:42:      && needs.get_current_step.outputs.current_step == 4 }}

writing-javascript-actions/.github/workflows/5-add-action-to-workflow-file.yml
-44-    if: ${{ github.repository_owner != 'TBD-organization' }}
:45:      && needs.get_current_step.outputs.current_step == 5 }}

writing-javascript-actions/.github/workflows/2-configure-your-action.yml
-42-    if: ${{ github.repository_owner != 'TBD-organization' }}
:43:      && needs.get_current_step.outputs.current_step == 2 }}

writing-javascript-actions/.github/workflows/1-initialize-javascript-project.yml
-43-    if: ${{ github.repository_owner != 'TBD-organization' }}
:44:      && needs.get_current_step.outputs.current_step == 1 }}

writing-javascript-actions/.github/workflows/3-create-metadata-file.yml
-44-    if: ${{ github.repository_owner != 'TBD-organization' }}
:45:      && needs.get_current_step.outputs.current_step == 3 }}

writing-javascript-actions/.github/workflows/6-trigger-action.yml
-44-    if: ${{ github.repository_owner != 'TBD-organization' }}
:45:      && needs.get_current_step.outputs.current_step == 6 }}

To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
Use of this skills course respected the state of the workflow step under execution without errors.
Screenshots
If applicable, add screenshots to help explain your problem.
Device information

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

Additional context
Add any other context about the problem here.

cc: @emilyistoofunky

This time, I have tried multi-line conditional expressions with >-.
Cf. #8


replace scaler multibroadcast + unsqueeze with just a multibroadcast

Simplify scalar multibroadcast+unsqueeze, to eliminate unsqueeze.

The unet model contains the following pattern, with a contiguous op:
@13519 = multibroadcast[out_lens={2},out_dyn_dims={}](timestep) -> int64_type, {2}, {0}, target_id=0
@13520 = contiguous(@13519) -> int64_type, {2}, {1}, target_id=0
@13521 = unsqueeze[axes={1},steps={}](@13520) -> int64_type, {2, 1}, {1, 1}, target_id=0


Feature/fix protostar deploy

@tensojka I can now protostar build this and also deploy it on local devnet... for some f***** up reason the invoking does not work locally for me, so I couldn't test that it deployed correctly


Handle 404 in CardDAV multi get

refs #829

@evert ready to go from my pov - let me know what you think - THX

I'll take care about CalDAV multiget once we agree on this being the right way to do it

@evert please have a look - THX

Great patch otherwise :+1:

There was 1 failure:

1) Sabre\DAVACL\PrincipalMatchTest::testPrincipalMatch

Failed asserting that two DOM documents are equal.

--- Expected

+++ Actual

@@ @@

 <?xml version="1.0"?>

 <d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">

   <d:status>HTTP/1.1 200 OK</d:status>

   <d:href>/principals/user1</d:href>

-  <d:propstat>

-    <d:prop/>

-    <d:status>HTTP/1.1 418 I'm a teapot</d:status>

-  </d:propstat>

 </d:multistatus>

/home/travis/build/fruux/sabre-dav/tests/Sabre/DAVACL/PrincipalMatchTest.php:41

@evert Can I drag your attention onto this one?

@evert all green now - please have a second look. THX


Add cache_file to README.md

You support cache_file as an option to specify the path for the cache.
Please update the README.md to teach people how to use this option in the case they need the cache file to be located in a specific directory.

Done, thanks for the request!


not seeing balances

just added new api keys from bittrex, got python full working and deps tru pip... created json files and this outputs on log:
2018/04/30 09:02:00 AM - ERROR: 'NoneType' object is not iterable
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 49, in analyse_pauses
self.Database.get_previous_total_balance())
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\messenger.py", line 221, in send_balance_slack
for balance in balance_items:
TypeError: 'NoneType' object is not iterable
2018/04/30 09:02:30 AM - ERROR: Failed to fetch user Bittrex balances.
2018/04/30 09:02:30 AM - ERROR: 'NoneType' object is not iterable
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 49, in analyse_pauses
self.Database.get_previous_total_balance())
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\messenger.py", line 221, in send_balance_slack
for balance in balance_items:
TypeError: 'NoneType' object is not iterable
2018/04/30 09:02:41 AM - ERROR: Failed to fetch user Bittrex balances.
2018/04/30 09:02:41 AM - ERROR: 'NoneType' object is not iterable

Any chance your new API key doesn't have the correct permissions?

read info, trade limit and trade market enabled,new api and secret just created

was a typo error on the api key, and now seems to be running but showing other errors
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
2018/04/30 10:36:13 AM - ERROR: Failed to fetch Bittrex market summary for the BTC-USDT market.
2018/04/30 10:36:13 AM - ERROR: unsupported operand type(s) for *: 'NoneType' and 'float'
Type error occurred. Waiting 10 seconds and then retrying.
what should be expected as an correct output  the lines bellow keeps repeating on my powershell terminal

See the latest log file for more information.

Resuming tracking on all 192 markets.

Failed to fetch Bittrex market summary for the BTC-USDT market.
See the latest log file for more information.

Type error occurred. Waiting 10 seconds and then retrying.
See the latest log file for more information.

Resuming tracking on all 192 markets.

Failed to fetch Bittrex market summary for the BTC-USDT market.
See the latest log file for more information.

Type error occurred. Waiting 10 seconds and then retrying.
See the latest log file for more information.

Resuming tracking on all 192 markets.

this is the log i got last
2018/04/30 10:36:13 AM - ERROR: Failed to fetch Bittrex market summary for the BTC-USDT market.
2018/04/30 10:36:13 AM - ERROR: unsupported operand type(s) for *: 'NoneType' and 'float'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 48, in analyse_pauses
current_balance = self.Messenger.send_balance_slack(self.get_non_zero_balances(),
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 412, in get_non_zero_balances
return py_.map_(non_zero_balances, lambda balance: self.create_balance_object(balance))
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\collections.py", line 538, in map_
return list(itermap(collection, iteratee))
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\collections.py", line 1102, in itermap
for result in iteriteratee(collection, iteratee):
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\helpers.py", line 80, in iteriteratee
yield (callit(cbk, item, key, obj, argcount=argcount),
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\helpers.py", line 37, in callit
return iteratee(*args[:argstop])
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 412, in
return py_.map_(non_zero_balances, lambda balance: self.create_balance_object(balance))
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 430, in create_balance_object
{"BtcValue": round(btc_price * balance_item["Balance"], 8), "IsTracked": is_tracked}
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'

In your app-data.json file, does your pause time have have the following structure?
{
    "coinPairs": [],
    "pausedTrackedCoinPairs": [],
    "pauseTime": {
        "buy": "null or a number",
        "sell": "null or a number",
        "balance": "null or a number"
    },
    "previousBalance": "null or a number"
}

i.e. Do you have the "balance" key in your "pauseTime"?

I just pushed an update that should hopefully fix your issue. Please check it out and lemme know if its :)

nope... my app-data.json has the same structure, but numbers, the previous balance is null... downloaded the new and no changes... remains the same error
2018/04/30 03:02:09 PM - ERROR: Failed to fetch Bittrex market summary for the BTC-USDT market.
2018/04/30 03:02:09 PM - ERROR: unsupported operand type(s) for *: 'NoneType' and 'float'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 48, in analyse_pauses
current_balance = self.Messenger.send_balance_slack(self.get_non_zero_balances(),
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 412, in get_non_zero_balances
return py_.map_(non_zero_balances, lambda balance: self.create_balance_object(balance))
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\collections.py", line 538, in map_
return list(itermap(collection, iteratee))
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\collections.py", line 1102, in itermap
for result in iteriteratee(collection, iteratee):
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\helpers.py", line 80, in iteriteratee
yield (callit(cbk, item, key, obj, argcount=argcount),
File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydash\helpers.py", line 37, in callit
return iteratee(*args[:argstop])
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 412, in
return py_.map_(non_zero_balances, lambda balance: self.create_balance_object(balance))
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 430, in create_balance_object
{"BtcValue": round(btc_price * balance_item["Balance"], 8), "IsTracked": is_tracked}
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'

what is expected to see when works ?  it needs to let it running,i know but i wanna know how it behave
thanks for the fast repply, i am looking for a nice trading bot

i have looked, have edited app.py, got it running, but without some parameters, but deleted and downloaded again,created new APIs and settings file like readme... but the error seems the same:
2018/05/01 08:46:22 AM - ERROR: Failed to fetch Bittrex market summary for the BTC-USDT market.
2018/05/01 08:46:22 AM - ERROR: unsupported operand type(s) for *: 'NoneType' and 'float'
Traceback (most recent call last):
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 429, in create_balance_object
btc_value = round(btc_price * balance_item["Balance"], 8)
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
2018/05/01 08:46:22 AM - ERROR: unsupported operand type(s) for +=: 'float' and 'str'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 49, in analyse_pauses
self.Database.get_previous_total_balance())
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\messenger.py", line 232, in send_balance_slack
total_balance += balance["BtcValue"]
TypeError: unsupported operand type(s) for +=: 'float' and 'str'
2018/05/01 08:46:34 AM - ERROR: Failed to fetch Bittrex market summary for the BTC-USDT market.
2018/05/01 08:46:34 AM - ERROR: unsupported operand type(s) for *: 'NoneType' and 'float'
Traceback (most recent call last):
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 429, in create_balance_object
btc_value = round(btc_price * balance_item["Balance"], 8)
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
2018/05/01 08:46:34 AM - ERROR: unsupported operand type(s) for +=: 'float' and 'str'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 49, in analyse_pauses
self.Database.get_previous_total_balance())
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\messenger.py", line 232, in send_balance_slack
total_balance += balance["BtcValue"]
TypeError: unsupported operand type(s) for +=: 'float' and 'str'
i am using windows 10 but all pyhton scripts mostly works fine to me
thanks for the response, and kets get it running !!

i am giving it up bro...now it replaces the content of json files with default values...

If it's overwriting the JSON file, it means it failed to read it and there's most likely an issue in your files formatting.
As for your initial error, it's still a Bittrex issue, but I believe I know how to work around it.

I just pushed a fix that should hopefully fix your crashing issue.

just find out, that when i put gmail credentials it causes the code to overwrite the entire json file, so i just put the API keys and got it running... but another error, check the log:
2018/05/01 05:08:51 PM - ERROR: 'buy'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 40, in analyse_pauses
if self.Database.check_resume(self.pause_params["buy"]["pauseTime"], "buy"):
KeyError: 'buy'
2018/05/01 05:09:47 PM - ERROR: 'buy'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 40, in analyse_pauses
if self.Database.check_resume(self.pause_params["buy"]["pauseTime"], "buy"):
KeyError: 'buy'
2018/05/01 05:11:47 PM - ERROR: 'buy'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 40, in analyse_pauses
if self.Database.check_resume(self.pause_params["buy"]["pauseTime"], "buy"):
KeyError: 'buy'

the BTC-USDT error seems  to been fixed !!!

if its not trouble for you, lets keep it going till it runs properly ?

I'd suggest deleting your app-data.json file. And if your settings.json or secrets.json gets overwritten, it means there's an error on the file's formatting (i.e. you've entered invalid JSON).

deleting app-data.json just gets the bot to make another one, i am getting this error, i changed 3 times API keys on  bittrex, but i dont think it is the bug...
2018/05/04 01:44:35 PM - ERROR: 'buy'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 40, in analyse_pauses
if self.Database.check_resume(self.pause_params["buy"]["pauseTime"], "buy"):
KeyError: 'buy'
2018/05/04 01:44:51 PM - ERROR: 'buy'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 40, in analyse_pauses
if self.Database.check_resume(self.pause_params["buy"]["pauseTime"], "buy"):
KeyError: 'buy'
2018/05/04 01:45:46 PM - ERROR: 'buy'
Traceback (most recent call last):
File "app.py", line 94, in
Trader.analyse_pauses()
File "C:\Users\Leonardo\Desktop\Crypto-Trading-Bot-master\src\trader.py", line 40, in analyse_pauses
if self.Database.check_resume(self.pause_params["buy"]["pauseTime"], "buy"):
KeyError: 'buy'

Mhhh are you sure all your JSON files are in the correct format and contain all the required key-value pairs?

i have not used your bot anymore, i´ve been trying this gekko bot...
have you updated ?
2018-05-23 20:39 GMT-03:00 JP Strydom<EMAIL_ADDRESS>
Mhhh are you sure all your JSON files are in the correct format and
contain all the required key-value pairs?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/JPStrydom/Crypto-Trading-Bot/issues/15#issuecomment-391537572,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AWbCpA3D8QoQy5XS_OFPx31xFBumnUkgks5t1fNEgaJpZM4TsjP0
.

Are you sure you're using the latest version of the repo?


Improve performance of style class selector subscriptions

What does the pull request do?
Previously, when a selector such as Button.foo was instanced on a control, the style instance attached a listener to the style class selector by subscribing to INotifyCollectionChanged.CollectionChanged. However it has been shown in profiling (such as in #8389) that adding these event handlers is a performance bottleneck.
This PR adds an internal listener API to Classes which simply stores a list of listeners in a list. For the repro in #8389, on my machine this improved time to detach the control from around 1.2s to 0.273s.
This PR also adds a benchmark to test this behavior. Here are the numbers:
master

Method
Mean
Error
StdDev
Gen 0
Gen 1
Allocated

Apply
920.5 ns
3.20 ns
2.68 ns
0.1526
0.0049
642 B

Apply_Toggle
1,639.2 ns
12.04 ns
11.27 ns
0.1929
-
810 B

Apply_Detach
1,895.0 ns
5.09 ns
4.76 ns
0.2588
0.0024
1,090 B

This PR:

Method
Mean
Error
StdDev
Gen 0
Gen 1
Allocated

Apply
808.2 ns
5.18 ns
4.33 ns
0.1208
-
507 B

Apply_Toggle
1,528.9 ns
5.81 ns
4.85 ns
0.1587
-
671 B

Apply_Detach
1,258.6 ns
7.19 ns
6.01 ns
0.1392
0.0024
588 B

I also tried using a HashSet instead of a list, given that handlers can be removed from anywhere in the list, but this had worse performance both in the repro to #8389 and the benchmark:
HashSet implementation:
hashset

Method
Mean
Error
StdDev
Gen 0
Allocated

Apply
877.6 ns
13.66 ns
15.18 ns
0.1318
552 B

Apply_Toggle
1,527.2 ns
8.86 ns
7.86 ns
0.1709
716 B

Apply_Detach
1,267.5 ns
7.72 ns
6.84 ns
0.1489
633 B

Fixed issues
Fixes #8389

You can test this PR using the following package version. 0.10.999-cibuild0021528-beta. (feed url: https://nuget.avaloniaui.net/repository/avalonia-all/index.json) [PRBUILDID]

You can test this PR using the following package version. 0.10.999-cibuild0021530-beta. (feed url: https://nuget.avaloniaui.net/repository/avalonia-all/index.json) [PRBUILDID]

@pr8x maybe this should be a feature request to not forget it? Sounds good to me


opt: add EXPLAIN (opt, env)

PR: https://github.com/cockroachdb/cockroach/pull/35802
From release notes:

Added an EXPLAIN (opt, env) option, which provides all relevant information for the planning of a query. [#35802][#35802] {% comment %}doc{% endcomment %}

I can take this one, since I'm already working on explain.


PC - Bus stops

The bus stops on the PC version should be able to be hovered over and have the pop up box with ETA's on it appear. E.g.

Hey Claire,
This is not something we are going to be able to do this time around sorry because the website is responsive it is designed to work on mobiles, tablets and P.C. interchangeably.
Since, you cannot hover on a mobile or a tablet - as you don't have a mouse, we have to go with the click option. I intially looked at seeing if you could implement both at the same time but workflow isn't avaliable (or sensible) in leaflet.
S

Note for myself - check PlatformParser.js line 40 - I.E. differences.

Hi Sam
The clickability is good - works well but we will need to put a small message on the final version that states "click on a bus stop to see bus ETA and stop number" - to get them in the habit of it.

Claire, where were you thinking this would be displayed - remembering that it needs to be visible on the mobile and tablet versions?

On PC tablet or phone in a pop up message that you had to hit the x to get rid of or in top corner that hide when x was hit


OPL/AdLib Doom MUS file is not sound exactly the same

It looks like the AdLib driver for MUS driver used in DMX/Doom is slightly different and produces slightly different instruments sounds.
At the moment is acceptable, but it might look for a further improvement later on, like it has been done in
https://github.com/Wohlstand/libADLMIDI
as it uses some OPL Banks file for specific instrument sound settings.
also:
https://moddingwiki.shikadi.net/wiki/AdLib_Instrument_Bank_Format

there is a GENMIDI OPL2 file bank in doom wad for that.
how to read it look at this file:
https://github.com/fielder/NWT/blob/master/musplay.c

https://moddingwiki.shikadi.net/wiki/OP2_Bank_Format

https://github.com/fielder/NWT/blob/master/adlib.c#L198


Untracked arguments in function scopes.

Related to this: https://github.com/oxc-project/oxc/issues/3374#issuecomment-2223483123
We do not keep track the arguments object in functions, It causes false positives in linters as of now and it can impose more serious limitations or errors in other crates(transformers and minifier come to mind as we might shadow the function arguments by mistake).

Since you are heavily invested in the scopes right now, @Dunqing What do you think?

Funny, I was wondering how we handle arguments just this morning. Sounds like we don't.
I can see 3 options:

Add arguments binding to all function scopes eagerly.
Add arguments binding to function scopes lazily, only once a reference to it is found in function body (or params).
Special case arguments so IdentifierReference for it would have no SymbolId.

Personally, I would tend towards (2) - simple, and avoids perf hit of (1).
NB: arguments is almost like an invisible function param, but there is one oddity in sloppy mode:
function f1(x) {
  // SyntaxError: Identifier 'x' has already been declared
  let x;
}

function f2(arguments) {
  // SyntaxError: Identifier 'arguments' has already been declared
  let arguments;
}

function f3() {
  // No problem
  let arguments;
}

Also, you can have 2 bindings for arguments in a function:
function f(x, y = arguments) {
    let arguments = 456;
    console.log(y[0]); // Logs 123
    console.log(arguments); // Logs 456
}
f(123);

So we'd need an extra scope for function body.

I think the option 3 isn't a really good approach here. I'm torn between 1 and 2.
The latter seems like a good thing for performance but I'm afraid it would cause issues later on because javascript is whimsical at times:
function f() {
    eval("console.log(arguments)");
}

f("a", "b", "c")

With the second approach, we still have the same issue of shadowing arguments and generating the wrong code!

He had to go and bring eval() into it... 😄
But even then, I can't actually see how that can go wrong. eval() will (I assume) prevent mangling names of all bindings which it can "see". And we can just ban creating new bindings called arguments in the transformer (that's illegal in strict mode anyway).

https://github.com/eslint/eslint-scope/blob/8082caa1a0f9aae0894a0a01fef9efa7a5e509f6/lib/scope.js#L693

He had to go and bring eval() into it... 😄

😆

But even then, I can't actually see how that can go wrong. eval() will (I assume) prevent mangling names of all bindings which it can "see". And we can just ban creating new bindings called arguments in the transformer (that's illegal in strict mode anyway).

You are right that we shouldn't ever mangle arguments if it isn't user-defined. I'm just saying since arguments are a context-sensitive identifier and javascript allows for weird ways to access variables through non-conventional ways it might cause issues further down the road.
Maybe no sane person uses new Function or eval in the production code, But javascript frameworks might generate such code and expect us to bundle it correctly for them.
I might be overthinking this.

We should add an argument symbol to the function scope. Both TypeScript and typescript-eslint do the same thing

What do you think of this example?
// Sloppy mode
function f(x, y = arguments) {
    let arguments = 456;
    console.log(y[0]); // Logs 123
    console.log(arguments); // Logs 456
}
f(123);

This demonstrates there can be 2 distinct bindings for arguments in a function. arguments in y = arguments references a different binding from let arguments = 456.

I was reading the eslint-scope tests today and when saw an oddity I couldn't figure.
It contains arguments in the global scope. Your comment made me go and look it up, Turns out they always fake arguments in all non-function scopes. Here's my educated guess about how it is done there:

Step 1: It visits each node and starts adding their refs and IDs to the scope manager. After doing the same for the inner nodes it would then call close on the referencer.
Step 2: Close the scope(s) for the visited node.
Step 3: Try to resolve the identifier
Step 4: Do not resolve default parameters.
Step 5: If not resolved delegate it to the upper scope for resolution.
Step 6: Continue to hit the global scope.
Step 7: Resolve implicit variable declarations
Step 8: Call the vanilla super.__close at the end of global scope closing.
Step 9: Everything is valid at this stage so something like arguments would be registered as builtin/global identifier.

With these steps, your code would work similarly to this:
let arguments = 123;
function f(x, y = arguments) {
    let arguments = 456;
    console.log(y[0]); // Logs 123
    console.log(arguments); // Logs 456
}

Treating arguments as external to the function just seems weird. And it can't handle the case where there's another arguments binding in scope above e.g.:
// Sloppy mode
let arguments;
function f(x, y = arguments) {
    let arguments = 456;
}

Here we have 3 bindings for arguments, and only 2 scopes to put them in. I know this is an edge case, and will be very rare in practice, but Oxc aims for absolute correctness.
Only solutions I can see are:

Always add an extra scope for function body.
Only add an extra scope for function body if there's a reference to arguments in function params.
Treat implicit arguments as a special case and don't create a binding for it.

(1) is simpler and more conceptually correct, but imposes quite a large penalty. Every function generates 2 scopes, and functions are a common construct, so it will slow down symbol resolution significantly. (3) has been rejected. So I would lean towards (2).

I personally would prefer to find a way to avoid unnecessary scopes, Can't we declare arguments as a hoisted variable on the function scope? with that, we should be able to redeclare it in the function body.
But that's just my preference and I have nothing against your approach here, It just feels wrong to add scopes left and right as a means to simplify stuff. As you said correctness is more important. I'm not a huge fan of premature optimization.
I just have a quick question. We are wrapping the whole function in the scope right now. Is this going to change? Is the scope going to be entered after the parameters?

To clarify, what I'm saying about option (2) above is:

By default, only create 1 scope for the function (as now).
Add binding for arguments to that scope.
Only if arguments is referenced in the function's params, create a further scope for function body. This will be very rare.

i.e. Handle the weird uncommon edge case as a de-opt. No overhead from extra scope in common case, but maintain complete correctness.

To clarify, what I'm saying about option (2) above is:
* By default, only create 1 scope for the function (as now).

* Add binding for `arguments` to that scope.

* _Only if_ `arguments` is referenced in the function's params, create a further scope for function body. This will be very rare.

i.e. Handle the weird uncommon edge case as a de-opt. No overhead from extra scope in common case, but maintain complete correctness.

Actually, it's not as bad as I initially thought. I'm just afraid of something like this.
When you are accessing the Ancestors of a scope you have to check if that scope is a legit or a fake one to prevent issues in places when we want to get the "actual" parent with something like scope.ancestors().nth(1) or scope.get_parent_id(xxx).
It also means that there are now some really obscure edge cases with arguments that won't get tested, It is not just about parent scope, With this approach, you'd have some identifiers that are the parent of the function's body but aren't the actual scope of the enclosing node. I feel it would cause a lot of confusion and heisenbugs for both of us(especially contributions that don't get reviews but people who are aware of this) and our crate users.
What are your thoughts on this?

I found out how TypeScript handles arguments. TypeScript adds an arguments symbol but does not add it in scopes. https://github.com/microsoft/TypeScript/blob/d8086f14b6b97c0df34a0cc2f56d4b5926a0c299/src/compiler/utilities.ts#L11361-L11380

I found out how TypeScript handles arguments. TypeScript adds an arguments symbol but does not add it in scopes. https://github.com/microsoft/TypeScript/blob/d8086f14b6b97c0df34a0cc2f56d4b5926a0c299/src/compiler/utilities.ts#L11361-L11380

Nice find. I also see tsc defines
    globals: SymbolTable;
    argumentsSymbol: Symbol;
    requireSymbol: Symbol;

TypeScript adds an arguments symbol but does not add it in scopes.

TS may do it, but it seems like a bad idea to me. Rather confusing, no?

For the record, I added this to the mangler
https://github.com/oxc-project/oxc/blob/0a2f68756f38f8ef003425e856061502b0c97a0a/crates/oxc_mangler/src/lib.rs#L229-L231

Personally I'm in favour of adding scopes for function bodies anyway for other reasons (#5017), so that'd resolve some of the questions above.


Missing flag?

Hi,
I'm getting this error since the last PR that was merged:
#!/bin/bash -eo pipefail
build-lambda-zip -o ${LAMBDA_FUNCTION_BINARY_ZIP} ${LAMBDA_FUNCTION_BINARY}
Incorrect Usage. flag provided but not defined: -o
NAME:
build-lambda-zip - Put an executable and supplemental files into a zip file that works with AWS Lambda.
USAGE:
build-lambda-zip [global options] command [command options] [arguments...]
VERSION:
0.0.0
COMMANDS:
help, h  Shows a list of commands or help for one command
GLOBAL OPTIONS:
--output value  output file path for the zip. Defaults to the first input file name.
--help, -h      show help (default: false)
--version, -v   print the version (default: false)
flag provided but not defined: -o
Exited with code 1

Hi @jonathangiber seems like your build-lambda-go was not updated.
From your output, the value --output value output file path for the zip. Defaults to the first input file name. should be like this    --output value, -o value  output file path for the zip. Defaults to the first input file name..

Changing -o for --output solved it, thanks

-o should still work. The problem is that go get is pulling master fir urfave/cli, which was recently merged with their v2 branch.
To ensure build-lambda-zip is build with the right version of its dependency, try installing it with GO111MODULE=on go get -u github.com/bmoffatt/aws-lambda-go/cmd/build-lambda-zip


[API] Step by Step Guide on how to Create a JavaScript Video Chat App with WebRTC

Topic Suggestion
Step by Step Guide on how to Create a JavaScript Video Chat App with WebRTC
Proposed title of article
Step by Step Guide on how to Create a JavaScript Video Chat App with WebRTC
Proposed article introduction
Web Real-time Communication (WebRTC) is a web transaction for capturing and sharing audio and video data between applications sites and browsers. This creates the ability for features like peer-to-peer teleconferencing. If you want to build your own video conferencing app to capitalize on the work from home, WebRTC is the API you need.
WebRTC allows you to establish a peer-to-peer connection between two or more browsers. You can exchange audio-video media directly without needing a third-party server or a native app. This article will help users understand WebRTC, how and when to use WebRTC, and have a hands-on exercise on how to create a JavaScript video Chat App with WebRTC.
Key takeaways

Overview of WebRTC
How WebRTC works
When to use WebRTC
Building a Video Chat App with JavaScript and WebRTC

Article quality
This is an interactive and well-detailed tutorial about WebRTC and how to use it by building a JavaScript Video Chat App with WebRTC to understand how it works in-depth. The content covered will be unique as this topic is not widely covered.
References
N/A

Good afternoon and thank you for submitting your topic to the EngEd program.
After some careful consideration it struck us that this topic may be a bit over saturated throughout other blog sites and official documentations. We typically refrain from publishing content that is covered widely on the net or other blogs. We're more interested in original, practitioner-focused content that takes a deeper dive into programming-centric concepts.
But in order to approve the topic it has to serve value to the larger developer community at large. Please feel free to suggest an alternate topic to explore. 🚀
An option and a great way to write this as an in-depth article and make it more add value to the greater developer community at large would be to walk the reader through the USE of methods and functions by building a unique, different, useful project.
https://www.google.com/search?q=Create+a+JavaScript+Video+Chat+App+with+WebRTC&rlz=1C1CHBF_enUS891US891&sourceid=chrome&ie=UTF-8


Add Discovery, update Leevy, add GitHub link for Spectrum, remove DJED from open-source

See title.

LGTM


Enable replies to trac notification emails

resolution_wontfix   |    by<EMAIL_ADDRESS>
Currently you can't reply to emails sent from the trac system. Trac should receive these emails and add them as ticket comments.

Issue migrated from trac:2 at 2024-01-31 17:50:25 +1100

<EMAIL_ADDRESS>changed priority from major to critical

<EMAIL_ADDRESS>changed milestone from `` to accessdev v1.0

<EMAIL_ADDRESS>commented

The plugin to do this is at https://oss.trac.surfsara.nl/email2trac

<EMAIL_ADDRESS>changed status from new to assigned

<EMAIL_ADDRESS>changed priority from critical to minor

<EMAIL_ADDRESS>changed reviews which not transferred by tractive

<EMAIL_ADDRESS>changed owner from `` to ibc599

<EMAIL_ADDRESS>removed milestone (was accessdev v1.0)

<EMAIL_ADDRESS>changed owner from ibc599 to saw562

<EMAIL_ADDRESS>changed status from assigned to closed

<EMAIL_ADDRESS>changed resolution from `` to wontfix

<EMAIL_ADDRESS>commented

Milestone accessdev v1.0 deleted


Token renewal

Hi there!
I'm trying to figure out if this library is somehow suited for handling token renewal.
It seems that extending AsyncHttpResponseHandler solves the problem of handling a 401 response in one place, handling the new response on the "onPreProcessResponse" method and parsing the new token, but how could I retry the same request then?
Many thanks in advance

Request not about library problems but about your integration model or similar place in different place, such as stackoverflow.com


updating Media Analytics demo URL

@sraje,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

#sign-off


emails: Show HHMM timezone on new login emails.

Email notifications for new logins displayed the login timestamp's timezone in the location format (e.g. "Asia/Taipei").
Since that can lead users to understand the login came from that place, the timezone in those emails is now represented in +/-HHMM format.
Fixes #10178.

Testing Plan: backend and lint tests passed locally.
Tried with multiple timezones by changing the TIME_ZONE setting in zproject/settings.py.
GIFs or Screenshots:
CET timezone

EST timezone

Nice, merged, thanks @YagoGG!


Flaky Test: TestEnvoyRDSProtocolError

https://k8s-gubernator.appspot.com/build/istio-prow/pr-logs/pull/istio_istio/14478/istio-unit-tests-master/1138

@ozevren I don't see any flakes on testgrid: https://k8s-testgrid.appspot.com/istio-presubmits-master#unit-tests
I also can't reproduce locally. Recommend closing this or moving it out of the 1.2 milestone.


A new name to this tool?

I know it is not a good practice to rename a tool, especially when there are lots of users are using it everyday.
Many people asked me questions that, ntttcp-for-linux actually is so different from the Windows version of ntttcp, why we still follow the name? Example of the difference is the tool options/usage. Keep such name (ntttcp-for-linux) would be confusing to some of us.
To be frankly, those are good questions.  For example, nspeed, or netspeed?

@thanasisk yes. Besides of FreeBSD, BlueCocoa has a PR to support macOS. I am thinking how to support them in a graceful way.


Simple-schema clean() parameters

templates:form call the simple-schema clean() method here.
The issue is that, as explain in [simple-schema doc](https://github.com/aldeed/meteor-simple-
schema#cleaning-data), clean() takes arguments that one might want to change. For example, removeEmptyStrings default value is painful and you often want to change it. See this discussion.
I see 2 ways to solve this:
1- Allow setting clean() parameters somewhere
2- Find a way to allow user to call clean() by himself if he wants to

Might be related or not:
At some point, if you decide to develop your own schema package, I will be happy to discuss about it and try it.

Hey--thanks for the offer on the schema package. I've thought about it, because Simple Schema is actually quite complex.
You can specify your own function to bypass the getValidationValue function when you create an element, using the validationValue method (shown in the example here):
https://github.com/meteortemplates/forms#reactiveformscreateelement
This allows you to call clean() by yourself. I think what I need to do here is simply allow you to pass the second argument in for the options.

Yes, I think your proposal would solve the issue.

However this is not the ideal solution.
ReactiveForms.createElement() is supposed to be used to declare generic and reusable elements, for example a bootstrapInput. So I don't think this is the right place to specify clean() arguments. Those arguments are tied more to a specific schema.
What you suggest is a nice and simple workaround, which I think is sufficient for now.
But in the end, my opinion is that you will need to replace simple-schema, whose purpose is really to serve as a foundation for collection2 and autoform.

Sure, the callback I mentioned is more for taking custom values out of HTML and converting them into data that would match an appropriate schema. For example, a multi-select form into an array of values or a toggle button into a boolean.
Perhaps the clean function should be removed from here altogether, and rather passed into the action function.
With a custom schema package I would try to keep the same format for input as Simple Schema, so that people who already use that package wouldn't have to rewrite their schemas to use this package.

I haven't studied in details what a minimalist schema package should look like, but I am not sure a clean() function should be part of it.
If you start a feature list, I will try to add some items.
Format compatibility with simple-schema is definitely a must. So is probably a conversion feature to generate from and to simple-schema objects.

Fix works great.


Add a Sound Iterator

I have a set of sounds that I would like played alternating, for footsteps mostly. I think this could act very similar to a polywad, just when you call play, it will play the next sound rather than the same sound. Here is some code I have that does this:
import Wad from 'web-audio-daw'

export default class SoundIterator{
	static defaultArgs = {
		files: [], // either sound files or Wad audio objects
		random: false, // either play a random order, or play in the order of a list
		// there could also be how many items should be played before a sound repeats if there is random.
	}

	constructor(args){
		args = Object.assign({}, SoundIterator.defaultArgs, args)
		this.files = args.files
		this.sounds = this.files.map(f=>f.play ? f : new Wad({source:f})) // checks if the item in the list is a wad or not.
		this.random. = args.random
		this.index = 0 // keeps track of what item in the list is playing
	}

	play(){
		if(!this.sounds.length) return 0
		if(this.random){
			const sound = this.sounds[Math.floor(Math.random()*this.sounds.length)]
			sound.play()
		} else {
			if(this.sounds[this.index]) this.sounds[this.index].play()
			this.index += 1
			if(this.index >= this.sounds.length){
				this.index = 0
			}
		}
	}
}

#112

Closed by:
https://github.com/rserota/wad/pull/112


[all] Federating FlutterFire platform interface technical debt

This issue is a centralized place to note things that aren't ideal about the way things are done, but that we're leaving in place for now, either because we don't have time or to avoid breaking changes in platform interfaces. If we do  platform interface breaking changes in the future we should consider addressing these.

[x] [cloud_firestore] FieldValuePlatform.verifyExtends is deprecated
[x] [cloud_firestore] FieldValueFactoryPlatform is using dynamic instead of generics
[x] [firebase_auth] FirebaseAuthPlatform is using isMock https://github.com/FirebaseExtended/flutterfire/issues/1939
[x] [firebase_core] firebase_core_platform_interface package should use PlatformInterface https://github.com/FirebaseExtended/flutterfire/issues/1940

When encountering additional platform interface technical debt, consider linking to this issue.

/cc @ditman @hterkelsen @amirh

This is great, thanks @collinjackson!!

This has since been resolved, thanks everyone.


Metadata: Stackoverflow in model building

protected class ApplicationUser3180
{
    public int Id { get; set; }
    public List<User3180> Followers { get; set; }
}

protected class User3180 : ApplicationUser3180
{
    public int Id { get; set; }
    public List<Character3180> Characters { get; set; }
    public List<ApplicationUser3180> Following { get; set; }
}

protected class Character3180 : ApplicationUser3180
{
    public int Id { get; set; }
    public int OwnerId { get; set; }
    public User3180 Owner { get; set; }
}

modelBuilder.Entity<ApplicationUser3180>(); // throws SOF

@AndriySvyryd - Valid model?

The model is valid, but that's irrelevant, since SOF should never be thrown.

The output I got running test
An existing connection was forcibly closed by the remote host Isn't that SOF?

Probably, what I'm saying is this needs to be fixed.


Model retrieved by findRecord does not update the client on delete

If you retrieve a model by findRecord('something', someId) on one client, then delete that object through a different client, or on the firebase server itself, then the first client doesn't receive any update.
If you transition to a route that fetches that model, then the model is returned in its previous state to the client (since the local cache doesn't get updated).
If you tried to retrieve a model via findRecord('something', someId) on one client, and find it didn't exist (then return a null), then create that object through another client, then the first client doesn't receive an update that the object got created. This might be harder to deal with, because it is keeping around refs to objects that don't currently exist on the server simply because it fetched them. This is probably more useful in a compound ("hash") model.
There is a didDelete method on a model that I'd expect to be called when the object is deleted, and I'd expect the model instance to somehow be purged from the local cache. The challenge there is what to do if it gets recreated.
At the very least, I'd hope to handle the single item delete case so the client can dynamically respond (ask to create it again, do a redirect, post a warning, whatever is necessary).
I think this could be rectified by using 'on' instead of 'once' for the object when fetching it, but I am concerned about E2E expectations on behavior here, and especially in dealing with leaking references. I don't have enough experience hacking on a data adapter to know that I got my changes right, or what the impact could be on existing clients.
I think this can be worked around by doing a query for the object by key, since the list/query hooks work well, but this does lead to a clunky implementation when you're really trying to implement single-item data access. It also wouldn't work if you're trying to restrict read access to sibling objects.
I think you can also work around it by calling the underlying ref's on hook: model.ref().on('value', function() { ... });. I saw this recommended as a work-around for Firebase's transaction support on another bug. This seems like it shouldn't be a permanent solution, though, because unlike transaction, Ember Data has an interface to support notifications and updating on delete.

This is related to #145 in how we handle deleted records. We need to unload them on delete, but there is a problem if the local record has changes, too.

We will track this also in #145

Actually, sorry, this is slightly different. reopening so that I can track it.

on v1.6.4 this is still a problem - how it is possible to handle it, where to start?

I think this bug description is slightly inaccurate: the record is updated on the client, but it isn't removed -- it remains in the store, with isDeletedand hasDirtyttribues set to true.
@tstirrat I think you're right that this is caused by the same root problem as #145 -- when a record is deleted in FB, the corresponding record should be unloaded from the ED store instead of deleted. Even with that, though, I'm not sure the  didDelete event @kavika13 is asking for would fire.
@cs3b The quick-fix workaround is to filter your records to hide deleted records, either using the ember-data-live-filter addon or, if you don't want the addon, as described here
For more background, see the blog post about this change is ember-data 2.0

when a record is deleted in FB, the corresponding record should be unloaded from the ED store instead of deleted. Even with that, though, I'm not sure the didDelete event @kavika13 is asking for would fire.

Anything I was stating above was just me trying to be thorough in reporting my "expected behavior" vs "actual behavior", so you could see the crux of the problem. I leave it up to you guys if it makes sense for didDelete to fire in this case.
Re the Ember Data 2.0 blog post -
Having flexibility to allow local changes to trump remote changes (but inform the user they're doing so) is great. Whatever the final solution for this issue, I'd also like simpler workflows (peers win, especially if you haven't edited anything locally) to be simple and painless to code. The more off-path I have to go to make Firebase "do its thing", the less interested I'll be in Ember + Firebase for rapid prototyping (which is half the reason I'm interested in FB to begin with). I can't really tell at this point if this is different from the current plan or implementation without digging in more, but I thought I'd chime in naively with my preference anyhow :)


draft of parent query documentation

added information about parent queries to documentation

Note: the link to the test suite is what I expect it to be in master when it's merged.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

That CLA might not apply to you.  We haven't gotten around to making an exception list.  I'll assume that someone will tell me if it is necessary.

@kwalcock, ah, thanks! I was mid-reading it, but I will pause on that until further notice then.

@kwalcock, thanks for checking!


Delete backing ipynbs as soon as remote session is created

For #12510
I tried @DonJayamanne's suggestion to just delete the backing files that we create for remote server connections right after the session has been created. Interestingly enough it doesn't appear to interfere with our ability to use the session. Might be the case that a session only needs to be created with a notebook, but doesn't need that notebook around for actually operating the session. I didn't find any Jupyter documentation to suggest that this might be a bad idea.
I've built and tested this locally with remote and local server connections, and everything looks fine.

[ ] Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
[ ] Title summarizes what is changing.
[ ] Has a news entry file (remember to thank yourself!).
[ ] Appropriate comments and documentation strings in the code.
[ ] Has sufficient logging.
[ ] Has telemetry for enhancements.
[ ] Unit tests & system/integration tests are added/updated.
[ ] Test plan is updated as appropriate.
[ ] package-lock.json has been regenerated by running npm install (if dependencies have changed).
[ ] The wiki is updated with any design decisions/details.

Codecov Report

Merging #13209 into master will decrease coverage by 0.03%.
The diff coverage is 14.28%.

@@            Coverage Diff             @@
##           master   #13209      +/-   ##
==========================================
- Coverage   59.64%   59.61%   -0.04%
==========================================
  Files         670      670
  Lines       36830    36822       -8
  Branches     5188     5188
==========================================
- Hits        21968    21950      -18
- Misses      13770    13776       +6
- Partials     1092     1096       +4

Impacted Files
Coverage Δ

src/client/datascience/jupyter/jupyterUtils.ts
50.00% <0.00%> (ø)

src/client/datascience/jupyter/jupyterSession.ts
73.33% <33.33%> (-3.78%)
:arrow_down:

src/client/common/utils/platform.ts
64.70% <0.00%> (-11.77%)
:arrow_down:

src/client/datascience/crossProcessLock.ts
79.41% <0.00%> (-11.77%)
:arrow_down:

src/client/linters/pydocstyle.ts
86.66% <0.00%> (-2.23%)
:arrow_down:

src/client/datascience/debugLocationTracker.ts
76.56% <0.00%> (-1.57%)
:arrow_down:

src/client/common/process/proc.ts
14.49% <0.00%> (-0.73%)
:arrow_down:

Continue to review full report at Codecov.

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


[WIP] Add color-utilities package

Color Utilities
WIP pr creating a color utility package and adding it to quilt.

Sorry Iv'e been swamped recently and haven't had time to push this through. Going to close it for now and hopefully find time to pick it up before the EoY 🤞  or early 2019


Run ARQ during task serialization

Stacked on #71

alright one final rebase I guess

Done!

LGTM, except some very minor things. Sorry it took me a little to read and understand what was going on.

Hey yeah sorry I'm doing some of my own experiments to understand this.

Pushed a test case that fails on main but not on this branch. It is technically failing on this branch because there's no Android SDK defined. Options are:

Add a local.properties file to the test project that points to a local Android SDK
Don't expect build success, but look for the Android SDK missing error, since that means that the dependency resolution succeeded

Downside to 1 is that it will require that anyone running tests has the Android SDK at that specific location. Downside to 2 is that it is brittle.

The test case was super helpful for me to understand the problem. We can apply a conditional run on the testcase using @EnabledIfEnvironmentVariable or something from junit5. Then we just add an android sdk to CI and always set the ENV to catch this at least in CI. But shouldn't break standard dev flows.

Adding the setup-android action requires using at least JDK 17 to build. Bumping that in the setup-java action should be fine (and updating Gradle to 8.5 should allow using JDK 21), as it's just used for building, and the target compat is set to 11.

True, so then I guess the best approach would be to special case Android, and deal with any other variant issues similarly when they come up.

OK I made those changes, and surprise! there's another issue :sweat_smile:
A Kotlin multiplatform (KMP) build that includes an android target would cause issues because the Android plugin is present, so we use the artifactView for aar-or-jar, but if you generate an sbom for the js target (for example, would apply to any non JVM target) then the klib dependencies aren't found (since the attribute filter is only looking for aar and jar).
So we can change the condition to only use the artifactView if the android plugin is present, and the KMP plugin is not present, but that will cause the variant errors when generating an sbom for the android target.
This might not be an issue in practice, since the user would probably be generating the sbom for a leaf module (e.g. an app), and with KMP those tend to only target one platform. What are your thoughts on that?

So I'm not familiar enough with kotlin multiplatform to know what's going on here. I think we get a version of this PR in now with what we kind of landed on earlier. And then we can deal with KMP in a followup.

Yes, it should be!


Error getting data from Home Center with version 1.2.2

Hello,
after updating to the new version the plugin stopped working.
I don't see the panels/climate endpoint on the swagger/docs.
[09/12/2021, 19:32:21] [FibaroHC] Error getting data from Home Center:  Error: Not Implemented
at Request.callback (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/index.js:879:15)
at IncomingMessage. (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/index.js:1130:18)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
status: 501,
response: <ref *1> Response {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: undefined,
socket: [Socket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
headers: [Object],
rawHeaders: [Array],
trailers: {},
rawTrailers: [],
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 501,
statusMessage: 'Not Implemented',
client: [Socket],
_consuming: true,
_dumped: false,
req: [ClientRequest],
text: '',
[Symbol(kCapture)]: false,
[Symbol(RequestTimeout)]: undefined
},
request: Request {
_events: [Object: null prototype],
_eventsCount: 1,
_maxListeners: undefined,
_enableHttp2: false,
_agent: false,
_formData: null,
method: 'GET',
url: 'http://<IP_ADDRESS>/api/panels/climate?detailed=false',
_header: [Object],
header: [Object],
writable: true,
_redirects: 0,
_maxRedirects: 5,
cookies: '',
qs: {},
_query: [],
qsRaw: [],
_redirectList: [],
_streamRequest: false,
throttle: [Throttle],
serial: false,
_maskedEnd: [Function (anonymous)],
end: [Function (anonymous)],
_ca: undefined,
_maskedCallback: [Function (anonymous)],
req: [ClientRequest],
protocol: 'http:',
host: '<IP_ADDRESS>',
_endCalled: true,
_callback: [Function: cleanup],
_fullfilledPromise: [Promise],
res: [IncomingMessage],
_resBuffered: true,
response: [Circular *1],
called: true,
[Symbol(kCapture)]: false
},
req: ClientRequest {
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: [Socket],
_header: 'GET /api/panels/climate?detailed=false HTTP/1.1\r\n' +
'Host: <IP_ADDRESS>\r\n' +
'Accept-Encoding: gzip, deflate\r\n' +
'Authorization: Basic XXX=\r\n' +
'accept: json\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: noopPendingOutput],
agent: [Agent],
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: '/api/panels/climate?detailed=false',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: '<IP_ADDRESS>',
protocol: 'http:',
[Symbol(kCapture)]: false,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype]
},
text: '',
body: {},
files: undefined,
buffered: true,
headers: {
server: 'nginx/1.8.0',
date: 'Thu, 09 Dec 2021 18:32:21 GMT',
'transfer-encoding': 'chunked',
connection: 'close'
},
header: {
server: 'nginx/1.8.0',
date: 'Thu, 09 Dec 2021 18:32:21 GMT',
'transfer-encoding': 'chunked',
connection: 'close'
},
statusCode: 501,
status: 501,
statusType: 5,
info: false,
ok: false,
redirect: false,
clientError: false,
serverError: true,
error: Error: cannot GET /api/panels/climate?detailed=false (501)
at Response.toError (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/response.js:95:15)
at Response._setStatusProperties (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/response-base.js:126:48)
at new Response (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/response.js:41:8)
at Request._emitResponse (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/index.js:928:20)
at IncomingMessage. (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/index.js:1130:38)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
status: 501,
text: '',
method: 'GET',
path: '/api/panels/climate?detailed=false'
},
created: false,
accepted: false,
noContent: false,
badRequest: false,
unauthorized: false,
notAcceptable: false,
forbidden: false,
notFound: false,
unprocessableEntity: false,
type: '',
links: {},
setEncoding: [Function: bound ],
redirects: [],
pipe: [Function (anonymous)],
[Symbol(kCapture)]: false
}
}
(node:11411) UnhandledPromiseRejectionWarning: Error: Not Implemented
at Request.callback (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/index.js:879:15)
at IncomingMessage. (/usr/local/lib/node_modules/homebridge-fibaro-home-center/node_modules/superagent/src/node/index.js:1130:18)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
(Use node --trace-warnings ... to show where the warning was created)
(node:11411) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:11411) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@richardtuboly, which home center do you have ? Can you share the first 4 characters of your serial number (should be HC2- or HC3- or something similar) ?

HCL (Home Center Lite)

@richardtuboly , can you update to version 1.2.3 ?

thank you! works perfectly now.