[Sept Sprint] New exercise teaching pointers

This is part of our September Spring to get the Go Track in shape. Please read the Overview issue for more details. This exercise is unclaimed. To claim it, please comment below.

Before building this exercise (or exercises), please read up on the documentation.
We need an exercise for the pointers and nil concepts. These concepts go well together so it makes sense to teach them in the same exercise.
The exercise should teach:

What pointers are
Pointer types for primitives
Which types are already pointers
Explain that go has no pointer arithmetic
Referencing and dereferencing syntax
nil as zero value for the pointer
pitfalls when working with pointers (always check whether they are nil before dereferencing)

Keep in mind that the concept of pointers might be hard for people coming from languages that don't have explicit pointer types.

We have noticed in the exercise teaching zero-values that it might not make sense to create a separate concept for nil. You can also just include the info in the pointers concept instead and have this exercise just teach pointers.

have this exercise just teach pointers.

Sounds like that might be better actually, seeing how people often struggle with pointers.

Just to be clear, this actually requires the implementation of a concept + exercise, right?
If so, what would be the requirements for the concept?

Yes, exactly. The introduction file of the exercise should cover the list that you find in the issue description. Then you can use that same content as introduction file of the concept. You can also copy the content into about.md of the concept and then think about whether you would like to add more detailed content/examples there etc. Also if some item on the issue description list is not needed in the exercise and not needed to understand the concept in general, then it should be moved to that about.md file of the concept.
Besides introduction and about there is not much needed for a concept, you can find the general documentation on Concepts here https://exercism.org/docs/building/tracks/concepts.
TLDR If you focus on the exercise and its introduction, you have all the minimal things you need for the concept as well.

@andrerfcsantos I'm in the process of adding a new exercise, so you can check my PR to give you an idea of what it looks like: https://github.com/exercism/go/pull/1680 Note that it's perfectly fine to create the exercise in a series of smaller, incremental PRs if you'd like that.

@ErikSchierboom @junedev Thanks for the pointers. But I think I was not clear enough in my previous message, sorry for that. What I meant by "requirements"  is what concepts should come before this one, i.e what should we assume the student knows before getting to this concept. This would be relevant to know which examples of pointers we can include.

@andrerfcsantos 🙈 Sorry, totally misunderstood the question.
You can and should put "structs", "maps" and "slices" as prerequisites for this exercise so that you can talk about things like a slice already being a pointer etc. Also the student already knows about the primitive types of course. The student will learn about methods and pointer receivers AFTER this exercise so you should not go into that. If there are other concepts you feel you need as prerequisite and are unsure about, just leave me another comment.

Since no one seems to be claiming this one and we are near Oct 1, I'll work on this one.

@andrerfcsantos Let me know if there is anything I can do to help.

While making this exercise, I noticed something that we must also add to the exercise, and that is to talk about pointers to structs. When we have a pointer to a struct in Go, we don't need to dereference it to access its fields - Go does that automatically. I think it'd be important to show this.

That sounds like a good idea. There exercise with the structs concept  has only two prerequisites: conditionals-if and numbers, so I think you can safely add structs as a prerequisite. @junedev?

@ErikSchierboom Do you mean adding pointers as prerequisite?
I don't think that is necessary, it makes sense that structs are available rather early in the track. What @andrerfcsantos mentioned should be part of this exercise/concept (and this is also what he suggested I think). You don't need that information before you know how to create a pointer to a struct which is covered here.

@junedev I meant the opposite. structs as a prerequisite of pointers

Yes, thats what I wrote above.

You can and should put "structs", "maps" and "slices" as prerequisites

Ehm, you wrote:

@ErikSchierboom Do you mean adding pointers as prerequisite for the structs exercise?

Or am I misreading? :D
Anyways, we both want to have structs to be a prerequisite of pointers.

I meant further above https://github.com/exercism/go/issues/1643#issuecomment-925771557

Ah right

When writing the design.md for the exercise I noticed we haven't discussed what concepts should this unlock.
When looking at the current tree I don't immediate candidates. Maybe this will unlock functions when that concept is available? Should this not have any unlocks for now?

@andrerfcsantos The "this exercise unlocks ..." part in the design file should list the concepts that are included with the exercise, so pointers in your case. You don't have to think about what comes after your exercise in the concept tree.

@junedev Ah, totally misunderstood it. Thanks for clarifying.

Yes, I meant maps and slices. You might be right this deserves another exercise but it might take quite some time until someone gets around to creating one. So I would recommend at least adding a short bit on this here for now. It can be moved/removed later.

Ready to review #1724
I might to take another look at it tomorrow, but getting some feedback would be nice. This is my first exercise and I'm sure there are things to improve :)


add MongoDB plugin

This PR contains a few additional changes along with a MongoDB plugin:

testutil.Accumulator was using a Value and Values field and was using a specific one depending on whether the operation was Add vs AddValuesWithTime, this was causing tests that used AddValuesWithTime to not function properly so I removed Value and reworked how the Add function worked to be more inline with the actual Accumulator implementation.

I copied over stat_types.go from MongoDB Inc's mongo-tools project but removed any code that was requiring another dependency in that project as well as removed any unused code. That project is licensed under Apache V2 so I made note of the origination of work and any modifications in the file.

@otoolep I removed the unused serv variable as well as updated the sample config.toml and README

Great, thanks.
On Tue, Jul 7, 2015 at 10:27 AM, JP Phillips<EMAIL_ADDRESS>wrote:

@otoolep https://github.com/otoolep I removed the unused serv variable
as well as updated the sample config.toml and README
—
Reply to this email directly or view it on GitHub
https://github.com/influxdb/telegraf/pull/54#issuecomment-119260550.


pipreqs missing imports

Hi, thanks for working on this.
pipreqs 0.4.6 appears to miss some imports, including but not limited to the following:
(ve) [tdonahue@timdev backend]$pipreqs --print .
easysnmp==0.2.4
portal==0.3.1
psycopg2==2.6.2
pymodbus==1.2.0
pyodbc==3.1.1
pytz==2016.10
redis==2.10.5
urllib3==1.19.1
INFO: Successfully output requirements
(ve) [tdonahue@timdev backend]$!find
find . -type f -name "*.py" | xargs grep futures
./modbus_collector.py:from concurrent.futures import as_completed
./meter_collector.py:from concurrent.futures import as_completed
./rest_collector.py:from concurrent.futures import as_completed
./vfd_collector.py:from concurrent.futures import as_completed
./collection_main.py:from concurrent.futures import ThreadPoolExecutor
(ve) [tdonahue@timdev backend]$pipreqs --version
0.4.6
(ve) [tdonahue@timdev backend]$python --version
Python 2.7.9
I understand concurrent.futures is a back-ported Python3 feature.  If pipreqs is Python version-aware that might be good to know.  The overall goal is to split requirements files, which 'pip freeze' doesn't seem to support.
Thanks for any help.

concurrent.futures is part of the standard library, so it shouldn't be in a requirements.txt. Pipreqs only fetches those libraries that are external and need explicit installation.

Thanks for the fast reply.  Let me see if I can find another example (before you close the issue :)).

OK, there are other examples of the problem, but I'll retract my assertion that this is a pipreqs issue.  There is more likely some issue of our environment, bc. unless I install futures (at least) the interpreter raises a "No module named" exception at runtime.
Thanks again for your help, if I again think there may be an issue or have a nontrivial question I'll write.

Sure thing, if you find any problems let me know. Closing this issue for now.

This is not an issue with pipreqs but a request/improvement.
I use HDF5 with pandas. While pytables (tables) is never explicitly invoked/imported, it is a requirement. For that reason, it never shows up in requirements.txt and my code ends up breaking at the server level. Another example would be 'seaborn' and matplotlib although I have not explicitly tested for that.
I am not sure how to test for such dependencies, but there has to be a way, right? Thanks.


Force tables to have all columns that are defined in schema

In https://github.com/catalyst-cooperative/pudl/issues/2897 I found that we were missing some columns because the .unstack() in construct_dataframe doesn't create columns for values that don't show up at all, even if they're defined in the metadata. Applying a reindex makes sure we get everything.
This also was causing some integration test failures - when running the ETL in-process, we would:

write 2021 data for a table
construct dataframe for 2022 data, which has a slightly different column set because of different reported values
fail when trying to write 2022 data to SQLite

Lastly, I wonder if there's a way we could keep our extracted tables tidy - our transforms in PUDL promptly re-stack these wide tables in wide_to_tidy, so maybe we can skip that completely. But that's definitely out of scope of this PR.

Yeah, I think we plant our mental seeds now and then reap them when we have to integrate 2023 data 🌱


Multipart uploads for file saver?

Is there any plan to have the File Explorer saver support multipart uploads? We can't release with the current 100MB limit.
Thanks Vinod.

Hi Alex. Multipart uploads via the Saver require the destination cloud service the file is being uploaded to to support multipart-uploads. This is because the file is being uploaded to that destination cloud service. At the current time, we've only released this feature for s3 and azure. However, we prioritize new features partly based on demand, so I've made a note that you require this capability.
Were there any services you were looking to release support for sooner rather than later? For example, Box, Google Drive, etc.

Hey Vinod. We would currently like to release with the following services:
['dropbox', 'box', 'gdrive', 'skydrive', 'sharefile', 'copy', 'egnyte']

@vinodc Could we get an update on if/when these services will be covered? Thanks Vinod.

@lutherism We will be releasing multipart upload support for file storage services to our on-premises version next month. Our cloud version will have this support generally available following that release, tentatively scheduled for June. Note that skydrive and copy do not currently support multipart uploads.

OK thank you for the info Vinod.

@vinodc I'm a colleague of @lutherism, wondered if June was still on-target for multipart upload to the previously noted services.

@StuartPlanGrid Hi Stuart. This is still on track for early June (either our June 9 or June 16 release).

Excellent, thank you.
On Tue, May 5, 2015 at 3:31 PM, Vinod Chandru<EMAIL_ADDRESS>wrote:

@StuartPlanGrid https://github.com/StuartPlanGrid Hi Stuart. This is
still on track for early June (either our June 9 or June 16 release).
—
Reply to this email directly or view it on GitHub
https://github.com/Kloudless/file-explorer/issues/20#issuecomment-99251100
.

Checking in with an update.
We are aiming to release on June 16 with support for egnyte, dropbox, gdrive, skydrive, sharepoint, onedrivebiz and sharefile.

This feature has been released with support for the services I mentioned in my previous comment, in addition to s3 and azure. Feel free to send any feedback you have our way.

That is great, thanks for the update.


Add ci

@Kotochleb it's working here: https://github.com/MaximilienNaveau/agimus_controller/actions/runs/12279158761

Yes indeed!


Update generate_multiscale_DF2K.py

Utilize multithreading for this file to save much time.

Utilize multithreading for this file to save much time.

ty friend pls help me what to write to run the updated best upscaler with your great stuff in colab gradio.
could u pls share your git . ty so much


noopener

@earthlng
dom.targetBlankNoOpener.enabled = true, as per user.js
dom.noopener.newprocess.enabled = true (default)
I have E's extension
At https://mathiasbynens.github.io/rel-noopener/ there are five yellow boxes with links. I swear on my luscious beard, that all five links used to report the same result .. but now the second link says "Why don’t you go back to the previous tab?" instead of "The previous tab is safe and intact..." like the others
What am I missing here? 🕵♀

you probably didn't allow JS on https://mathiasbynens.be/ ?

Yes, I did allow JS

because the other 4 are on mathiasbynens.github.io, not mathiasbynens.be
the last 3 are not vulnerable anyway, they're there to show devs ways to prevent the issue

Ahh .. good. That's why I pay you the big bucks: for when I miss things 💋


Integration Test - Release - 2019/02/04 15:44:58

Auto create for integration test. AnotherAuthorUpdatedArticleFlow

@bharney-msft : Thanks for your contribution! The author, @v-caxian, has been notified to review your proposed change.


Add support for cookie extraction from other versions of browsers (e.g. Firefox ESR, Edge Extended Stable, Chrome Canary, etc)

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm requesting a feature unrelated to a specific site
[X] I've looked through the README
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Provide a description that is worded well enough to be understood
Currently, yt-dlp only supports cookie extraction from the stable releases of Firefox, Opera, Safari, Chrome, etc etc.
I use firefox-esr on Pop!_OS 22.04, so cookies.py looks for those cookies in the following directories:
'~/.mozilla/firefox',
'~/snap/firefox/common/.mozilla/firefox',
'~/.var/app/org.mozilla.firefox/.mozilla/firefox',

And in my case, since my firefox path is ~/.mozilla/firefox-esr/[profiles], it doesn't find any cookies. Copy-pasting my profile to ~/.mozilla/firefox/ fixes this issue, but it'd be nice if yt-dlp supported this without the workaround.
I'm unsure how other OS's and browsers handle their different versions, but if, say, Chrome Canary's AppData is found in %LOCALAPPDATA%\Google\Chrome Canary\User Data, then this path should be added to the list of directories to search for cookies in.
Just about every major browser has multiple versions (even Brave has a beta and nightly version), so there's a bit of work involved here.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
yt-dlp --ignore-config -vU --cookies-from-browser firefox https://www.youtube.com/watch?v=69Ukg2BqIk0
[debug] Command-line config: ['--ignore-config', '-vU', '--cookies-from-browser', 'firefox', 'https://www.youtube.com/watch?v=69Ukg2BqIk0']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [65cf46cdd] (pip)
[debug] Python 3.10.12 (CPython x86_64 64bit) - Linux-6.9.3-76060903-generic-x86_64-with-glibc2.35 (OpenSSL 3.0.2 15 Mar 2022, glibc 2.35)
[debug] exe versions: ffmpeg 4.4.2 (setts), ffprobe 4.4.2
[debug] Optional libraries: Cryptodome-3.17, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.32.3, secretstorage-3.3.1, sqlite3-3.37.2, urllib3-2.1.0, websockets-13.1
[debug] Proxy map: {}
Extracting cookies from firefox
ERROR: could not find firefox cookies database in '/home/azzy/.mozilla/firefox', '/home/azzy/snap/firefox/common/.mozilla/firefox', '/home/azzy/.var/app/org.mozilla.firefox/.mozilla/firefox'
Traceback (most recent call last):
  File "/home/azzy/.local/lib/python3.10/site-packages/yt_dlp/cookies.py", line 99, in load_cookies
    extract_cookies_from_browser(browser_name, profile, YDLLogger(ydl), keyring=keyring, container=container))
  File "/home/azzy/.local/lib/python3.10/site-packages/yt_dlp/cookies.py", line 118, in extract_cookies_from_browser
    return _extract_firefox_cookies(profile, container, logger)
  File "/home/azzy/.local/lib/python3.10/site-packages/yt_dlp/cookies.py", line 144, in _extract_firefox_cookies
    raise FileNotFoundError(f'could not find firefox cookies database in {search_root}')
FileNotFoundError: could not find firefox cookies database in '/home/azzy/.mozilla/firefox', '/home/azzy/snap/firefox/common/.mozilla/firefox', '/home/azzy/.var/app/org.mozilla.firefox/.mozilla/firefox'

I was going to make a pull request myself to add Firefox ESR, Dev, Beta, and Nightly support, but then I realized I'd have to also add those paths for Windows and MacOS, and that I should also probably do the same for Chrome, Edge, Brave, and all the other browsers cookies.py supports... which hey I might still do but perhaps somebody already has these paths somewhere.

#2903 doesn't help?


[INTEGRATION] Update argilla/oasst_response_comparison to use RankingQuestion

Describe the bug
The FeedbackDataset uploaded to the Hugging Face Hub at https://huggingface.co/datasets/argilla/oasst_response_comparison is using a TextQuestion to ask the annotator to rank certain fields, while it could now use the RankingQuestion instead.
Taking into consideration that this dataset is being used in the Dockerfile.quickstart image as a default example, would be nice to actually showcase the Argilla feature to do that, rather than an outdated workaround.
Expected behaviour
The FeedbackDataset to be exported to the Hugging Face Hub using the RankingQuestion instead of the TextQuestion.
Environment:

Argilla Version [e.g. 1.0.0]: N/A

cc @nataliaElv @davidberenstein1957

cc @nataliaElv @davidberenstein1957

Not sure what you mean. I've always seen it as a RankingQuestion

So I saw this in some recent PRs, but maybe those were outdated, see the following screenshot:

I see that the argilla.cfg file does use the RankingQuestion, so I'll try to double-check.


Collect vuldb

https://vuldb.com/
License: cc by-nc-sa

The CC-BY-NC-SA is an issue as this is not open data. But we could add this vulntotal instead

A good start would be to index the ones that VulDB added to CVEs themselves (which I would assume are public). It would not be the full dataset of course.


OpenXLab issues

I see that OpenXLab has issues every day, is it possible that you hot DIffBIR on hugging face or replicate?
They're more reliable

Thanks for your suggestions! We will take them into consideration! 😄


Make it SEO friendly via SSR

Refer to: https://forum.casbin.com/t/75
As we know, SPA is not friendly for SEO like Googlebot. We need to add SSR (Server-Side Rendering) to this React app, like using Next.js: https://nextjs.org/

@oceanlvr can you take this task?

@oceanlvr can you take this task?

@hsluoyz I'll do this. This is a long time of work.

@hsluoyz I'll do this. This is a long time of work.

@hsluoyz can I take it up ?

@specter25 sure.

We can use cloud platform like vercel for deploying, for installation type yarn global add vercel on cmd and inside your project
type vercel on cmd so the project will be deployed using SSL certificate.
If that helps^

@hsluoyz  Can we use React Helmet?

@hsluoyz Can we use React Helmet?

@Hanaffi we use Go backend

@Kininaru

@Kininaru I think we can use this one: https://github.com/rendora/rendora

@hsluoyz Working on this.


Can you provide an example of using DirectX2D rendering to demonstrate Richedit (ITexthost) and APNG file

Can you provide an example of using DirectX2D rendering to demonstrate Richedit (ITexthost) and APNG file?

Your best option is to look at this sample. It demonstrates how to use Windows Imaging Component (WIC) to load a animated GIF and display it with Direct2D.
APNG is not supported by WIC, and isn't an official format per this article and has so far been rejected by the PNG group.

https://github.com/laizewei/ExduiR/blob/master/src/Class_Edit_ex.cpp
function:_edit_paint
line 715 to line 725
How do I go from ((ITextServices *) pits)-> TXDRAW to ((ITextServices *) pits)-> TXD2D
line 722
BitBlt((HDC) hDc, rcTmp.left, rcTmp.top, rcTmp.right - rcTmp.left, rcTmp.bottom - rcTmp.top, (HDC) mDc, 0, 0, SRCPAINT);
How does this sentence work with TXDrawD2D

Ah, the readme must have been incorrectly generated for that sample... The focus of that sample is how to do Animated GIF image reconstruction from metadata. There's another sample which shows WIC with D2D: here.


Refactor container app resources

The azurerm_container_app and azurerm_container_app_environment resources are now avaible from the provider.
This refactors the azapi resources, to use the real resources instead.
Note: This will destroy and recreate the resources, so we'll be better off removing/importing the remote Azure resources.

https://github.com/hashicorp/terraform-provider-azurerm/issues/20435

Just needs Custom Container Apps testing :) Paging @ryantk if you have the time to refactor ;)

Ran into this error after deleting a Container app secret env var.
│ Error: cannot remove secrets from Container Apps at this time due to a limitation in the Container Apps Service. Please see `https://github.com/microsoft/azure-container-apps/issues/395` for more details

https://github.com/microsoft/azure-container-apps/issues/395

Thanks for updating @Stretch96.
I'd like to see https://github.com/DFE-Digital/terraform-azurerm-container-apps-hosting/pull/245 refactored into this PR too
Additionally, can we add some extra outputs for the container app and CDN FQDNs so that folks can use those as references elsewhere?

https://github.com/hashicorp/terraform-provider-azurerm/issues/20535

🚢


gridMET recipe.

/run-recipe-test

/run-recipe-test

@sharkinsspatial looks great!
If you have any issues, I'm glad to help out.

Thanks @norlandrhagen 👍   As I mentioned here https://github.com/pangeo-forge/staged-recipes/issues/4#issuecomment-906779200 I was curious what basis you and @jhamman to develop the mask_opts settings for the Terraclimate recipe and if these are applicable for the gridMET data as well?

@norlandrhagen The CI just ran the pruned version of the recipe.  You can view the example output here https://github.com/sharkinsspatial/zarr_examples/blob/main/gridmet_sample.ipynb.  Feel free to have a look at the chunking and structure and let me know if things look suitable for you all.  Thanks again for the assistance 👍

@sharkinsspatial - I took a quick look at the data and it looks great as it. The terraclimate recipe needed a lot more work to handle some really odd mask value issues. This dataset is much better prepared so I think could go in like this.

/run-recipe-test

/run-recipe-test

/run-recipe-test

/run-recipe-test

/run-recipe-test

Curious if you have any timing information about the impact of copy_input_to_local_file=True?

@rabernat I don't.  I'm trying to diagnose some k8s pod scaling issues in our Azure environment but once I have that set I can include some instrumentation. A quick, manual review of the task timing shows that they are roughly equivalent.

/run-recipe-test


HA sends huge event to InfluxDB, causes permanent timeout

Home Assistant release with the issue:

0.91.2
Last working Home Assistant release (if known):
Operating environment (Hass.io/Docker/Windows/etc.):

hass.io on Docker
Component/platform:

influxdb
Description of problem:
I am trying to track down a specific situation where home assistant sends a very large (~10MB) event to influxdb which causes it to choke until influxdb is restarted. All influxdb events are lost in the meantime but home assistant continues to function.
Setting the logger component to debug homeassistant.components.influxdb doesn't provide very useful debugging information.
The debug entries in the log only state things like "Wrote N events" which is not very helpful.
To be useful debugging information it would need to have the contents of those events or at least the entity_id of the event being logged.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
logger:
  default: info
  logs:
    homeassistant.components.influxdb: debug

influxdb:
  host: influxdb
  port: 8086
  database: homeassistant
  username: hass
  password: !secret influx_password
  max_retries: 3
  default_measurement: state
  include:
    domains:
      - sensor
      - binary_sensor
      - climate
      - fan
      - light
      - lock
      - switch

Traceback (if applicable):
Example home assistant log leading up to the freeze:
2019-04-08 16:39:28 DEBUG (InfluxDB) [homeassistant.components.influxdb] Wrote 5 events,
2019-04-08 16:39:31 DEBUG (InfluxDB) [homeassistant.components.influxdb] Wrote 1 events,
2019-04-08 16:39:47 DEBUG (InfluxDB) [homeassistant.components.influxdb] Wrote 8 events,
2019-04-08 16:41:58 ERROR (InfluxDB) [homeassistant.components.influxdb] Write error,
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 384, in _make_request,
    six.raise_from(e, None),
  File "<string>", line 2, in raise_from,
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 380, in _make_request,
    httplib_response = conn.getresponse(),
  File "/usr/local/lib/python3.7/http/client.py", line 1321, in getresponse,
    response.begin(),
  File "/usr/local/lib/python3.7/http/client.py", line 296, in begin,
    version, status, reason = self._read_status(),
  File "/usr/local/lib/python3.7/http/client.py", line 257, in _read_status,
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1"),
  File "/usr/local/lib/python3.7/socket.py", line 589, in readinto,
    return self._sock.recv_into(b),
socket.timeout: timed out,
,
During handling of the above exception, another exception occurred:,
Traceback (most recent call last):,
  File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send,
    timeout=timeout,
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 638, in urlopen,
    _stacktrace=sys.exc_info()[2]),
  File "/usr/local/lib/python3.7/site-packages/urllib3/util/retry.py", line 367, in increment,
    raise six.reraise(type(error), error, _stacktrace),
  File "/usr/local/lib/python3.7/site-packages/urllib3/packages/six.py", line 686, in reraise,
    raise value,
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen,
    chunked=chunked),
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 386, in _make_request,
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout),
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout,
    raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value),
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='influxdb', port=8086): Read timed out. (read timeout=5),
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/influxdb/__init__.py", line 312, in write_to_influxdb,
    self.influx.write_points(json),
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 490, in write_points,
    tags=tags, protocol=protocol),
    protocol=protocol,
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 551, in _write_points,
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 327, in write,
    headers=headers,
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 267, in request,
    timeout=self._timeout,
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request,
    resp = self.send(prep, **send_kwargs),
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 646, in send,
    r = adapter.send(request, **kwargs),
  File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 529, in send,
    raise ReadTimeout(e, request=request),
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='influxdb', port=8086): Read timed out. (read timeout=5),
2019-04-08 16:41:59 WARNING (InfluxDB) [homeassistant.components.influxdb] Catching up, dropped 22 old events,
2019-04-08 16:44:01 WARNING (InfluxDB) [homeassistant.components.influxdb] Catching up, dropped 25 old events,
2019-04-08 16:46:04 WARNING (InfluxDB) [homeassistant.components.influxdb] Catching up, dropped 23 old events

From influxdb's own log. Note the incredibly large request size at the end of the lines that cause the timeout.

[httpd] <IP_ADDRESS> - hass [08/Apr/2019:20:39:28 +0000] "POST /write?db=homeassistant HTTP/1.1" 204 0 "-" "python-requests/2.21.0" 6787e253-5a3e-11e9-813c-0242ac1e2104 13427,
[httpd] <IP_ADDRESS> - hass [08/Apr/2019:20:39:31 +0000] "POST /write?db=homeassistant HTTP/1.1" 204 0 "-" "python-requests/2.21.0" 6929172d-5a3e-11e9-813d-0242ac1e2104 11550,
[httpd] <IP_ADDRESS> - hass [08/Apr/2019:20:39:47 +0000] "POST /write?db=homeassistant HTTP/1.1" 204 0 "-" "python-requests/2.21.0" 72bc74a7-5a3e-11e9-813e-0242ac1e2104 4146,
[httpd] <IP_ADDRESS> - hass [08/Apr/2019:20:39:58 +0000] "POST /write?db=homeassistant HTTP/1.1" 500 20 "-" "python-requests/2.21.0" 79671875-5a3e-11e9-813f-0242ac1e2104 10001089,
ts=2019-04-08T20:40:08.279422Z lvl=error msg="[500] - \"timeout\"" log_id=0EgdY3Ll000 service=httpd,
[httpd] <IP_ADDRESS> - hass [08/Apr/2019:20:40:03 +0000] "POST /write?db=homeassistant HTTP/1.1" 500 20 "-" "python-requests/2.21.0" 7c652483-5a3e-11e9-8140-0242ac1e2104 10000804,
ts=2019-04-08T20:40:13.299484Z lvl=error msg="[500] - \"timeout\"" log_id=0EgdY3Ll000 service=httpd,
[httpd] <IP_ADDRESS> - hass [08/Apr/2019:20:40:08 +0000] "POST /write?db=homeassistant HTTP/1.1" 500 20 "-" "python-requests/2.21.0" 7f635e76-5a3e-11e9-8141-0242ac1e2104 10000996,
ts=2019-04-08T20:40:18.321506Z lvl=error msg="[500] - \"timeout\"" log_id=0EgdY3Ll000 service=httpd

Additional information:

I have experienced this same problem but in a context unrelated to HA. I believe the HA client is okay but InfluxDB has an issue.
https://github.com/influxdata/influxdb/issues/13342

Looks like exactly what I'm experiencing, good find but a shame the other issue you referenced within it goes all the way back to 2017 with no resolution. At least there is newer activity.
I'm OK with having this report closed then unless improving the influxdb's debug logging output is on someone's to-do list.


SNI Support for CONNECT

Hi,
I am trying to use your module to connect to a SNI enforcing upstream.
I have compiled NGINX with SNI support, so when hitting NGINX with HTTP, based on a location rule, I am able to re-direct to upstream forcing HTTPS, NGINX's module then takes the lead and connects to upstream using SNI.
However, when I hit NGINX using HTTPS, a CONNECT request comes out of my app. (This is where I believe your module kicks in by providing CONNECT support for NGINX), however when NGINX attempts to contact upstream, I am getting this back:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=unknown state: tlsv1 unrecognized name
Which is the error indicating SNI is not being used to contact upstream. Therefore upstream errors out.
Are there any plans for your module to support SNI on CONNECT?
Thanks!

Hi @chobits,
thanks for the clear explanation. In my case, I am using Ruby 1.8.7 which lacks SNI support, to hit NGINX using your module, so then it can go to the upstream.
Thanks for detailed explanation, this then means, since Ruby does not send in SNI in the original request, the module will then not pass it along. Makes sense.
Since this module does not tamper with the original request as an interceptor, I think I'll just close this issue.
Thanks!


[BUG] ContentLength of File does not match the bytes transferred

Describe the bug
Uploading a file using .Upload(stream) is not uploading the full file.
Expected behavior
All bytes should be transferred
Actual behavior (include Exception or Stack Trace)
Seems like only the buffer boundary. 8200 kb is the file size when transferring over 10,000 kb
To Reproduce
using Azure.Storage;
using Azure.Storage.Files.DataLake;
using Azure.Storage.Files.DataLake.Models;
using System;
using System.IO;
using System.Linq;

namespace DataLake.LargeFileUploadTest
{
    public class SlowStream : Stream
    {

        long BlocksToMake { get; set; } = 1000;
        long MaxBytesPerBlock { get; set; } = 10 * 1024;

        long CurrentBlock { get; set; } = 0;

        public long TotalBytesSent{get;set;}

        public override bool CanRead => true;

        public override bool CanSeek => false;

        public override bool CanWrite => false;

        public override long Length => -1;

        public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

        public override void Flush() => throw new NotImplementedException();

        public override int Read(byte[] buffer, int offset, int count)
        {
            if (CurrentBlock > BlocksToMake) return 0;

            var fillAmmount = (int)Math.Min(count, MaxBytesPerBlock);
            Array.Fill(buffer, (byte)'A', offset, fillAmmount);
            CurrentBlock++;
            TotalBytesSent += fillAmmount;

            Console.WriteLine($"Reading offset {offset} and count {count} with current block {CurrentBlock} and total sent {TotalBytesSent}");

            return fillAmmount;
        }

        public override long Seek(long offset, SeekOrigin origin) => throw new NotImplementedException();

        public override void SetLength(long value) => throw new NotImplementedException();

        public override void Write(byte[] buffer, int offset, int count) => throw new NotImplementedException();
    }

    public class TestUpload
    {
        const string StorageAccountName = "youraccount";
        const string StorageAccountKey = "yourkey=";

        string Randomize(string prefix) => $"{prefix}-{Guid.NewGuid()}";

        Stream CreateSlowStream() => new SlowStream();

        /// <summary>
        /// Upload file by appending each part to a DataLake File.
        /// </summary>
        public void Upload(SlowStream streamToUpload)
        {

            // Make StorageSharedKeyCredential to pass to the serviceClient
            string storageAccountName = StorageAccountName;
            string storageAccountKey = StorageAccountKey;
            Uri serviceUri = new Uri("https://parquetteststore.dfs.core.windows.net");

            StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

            // Create DataLakeServiceClient using StorageSharedKeyCredentials
            DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential);

            // Get a reference to a filesystem named "sample-filesystem-append" and then create it
            DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient(Randomize("sample-filesystem-append"));
            filesystem.Create();
            try
            {
                // Get a reference to a file named "sample-file" in a filesystem
                DataLakeFileClient file = filesystem.GetFileClient(Randomize("sample-file"));

                //// Create the file
                //file.Create();

                //// Verify we created one file
                //if (filesystem.GetPaths().Count() != 1)
                //{
                //    Console.WriteLine("Failed to create our file in our special container");
                //    return;
                //}

                // Upload content to the file.  When using the Upload API, you don't need to create the file first.
                // If the file already exists, it will be overwritten.
                // For larger files, Upload() will upload the file in multiple sequential requests.
                var path  =file.Upload(streamToUpload);

                // Verify the contents of the file
                PathProperties properties = file.GetProperties();

                if(properties.ContentLength != streamToUpload.TotalBytesSent)
                    Console.WriteLine($"File size uploaded doesnt match expectations. {properties.ContentLength} !={streamToUpload.TotalBytesSent}");
                else
                    Console.WriteLine("File was uploaded succesfully");
            }
            finally
            {
                // Clean up after the test when we're finished
                filesystem.Delete();
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var slowStream = new SlowStream();
            var uploaded = new TestUpload();

            uploaded.Upload(slowStream);
        }
    }
}

Environment:
.NET Core 3.1
VS 2019
Windows 10

Thank you for your feedback.  Tagging and routing to the team best able to assist.

Hi thanks for providing the reproduceable program. I was able to put a fiddler trace on it and something weird is happening where the last request we send in the upload has the content length of 0. So we are basically appending nothing in the last request of the upload which I suspect is where things might be going wrong.
Is this an error that happens occassionally and that's why you created the SlowStream to ensure the error can happen every time for troubleshooting purposes?
I will update the issue as I investigate further to why the last request we are sending has no content.

I wonder if this has something to do with the stream being nonseekable and nonlength. Have you tried using OpenWrite, because that seems like the purpose of your stream to fill up the blocks slowly.


React Component with local state

State should be managed with NestedModel facilities. This is the point we're departing from the backbone.
(!) model changes in componentWillReceiveProps needs to be silent (!) Need to support that in Nested.transaction.
FINAL API:
var C = React.createClass({
    // react on properties events...
    updateOnProps : {
         prop1 : 'change',
         prop2 : 'sync change:attr' // should handle optional props.
    },

    // react on model events
    updateOnModel : 'change:attr sync', // false turn updates off

    // model definition
    Model : BaseMode, // optional base model class to extend
    attributes : { // must be optional, may be specified in mixins also
        attr : Type,
        attr2 : Type2
    },

    render : function(){
        return ( ... ); // use this.model and this.props
    }
});

Fixed in f/nested-view branch


Fix/allure report no parent steps

There is a case when you have Before/BeforeSuite/AfterSuite/After with allure report enabled
Feature('Login functionality');

BeforeSuite( (I) => {
    I.amOnPage('/login-old');
})

AfterSuite( (I) => {
    I.amOnPage('/login-old');
})

Scenario('See login page', (I) => {
    I.dontSee('Welcome', 'span');
});

you will see something like this

allure-js-commons: Unexpected startStep() of Context: BeforeSuite . There is no parent step

Login functionality --
    [1] Starting recording promises
    Emitted | suite.before ([object Object])
 › [Session] Starting singleton browser session
    Emitted | hook.start ([object Object])
    Emitted | step.before (I am on page "/login-old")
    Emitted | step.after (I am on page "/login-old")
    Emitted | step.start (I am on page "/login-old")
allure-js-commons: Unexpected startStep() of Context: BeforeSuite . There is no parent step
allure-js-commons: Unexpected startStep() of I am on page "/login-old". There is no parent step
    Context: BeforeSuite
      I am on page "/login-old"
      › [Url] https://app-develop.mcmakler.com/login-old
    Emitted | step.passed (I am on page "/login-old")
allure-js-commons: Unexpected endStep(). There are no any steps running
    Emitted | step.finish (I am on page "/login-old")
    Emitted | hook.passed ([object Object])
  See login page
    Emitted | test.before ([object Object])
    Emitted | test.start ([object Object])
    Emitted | step.before (I dont see "Welcome", "span")
    Emitted | step.after (I dont see "Welcome", "span")
    Emitted | step.start (I dont see "Welcome", "span")
allure-js-commons: Unexpected endStep(). There are no any steps running
    I dont see "Welcome", "span"
    [1] Error | Error

Thank you!


[Bugfix] Fix the problem that the specified feature_columns will be ignored

Issue #, if available: https://github.com/awslabs/autogluon/issues/647
Description of changes:

[x] Fix the issue that the specified feature columns will be ignored.

Job PR-653-1 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-653/1/index.html

Job PR-653-2 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-653/2/index.html

Job PR-653-3 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-653/3/index.html


Error: "can't convert nil into Hash" for muliple record updates

I have an error that arises when this gem is installed on the form below:
Error:
TypeError in Hours#edit
can't convert nil into Hash
Extracted source (around line #6):
3: <%= form_for :hour, :url => {:action => 'update'}, :validate => false, :method => :put do -%>
4: 	<% @hours.each do |hour| %>
5:
6: 		<%= day_to_text(hour.day) %>: <%= hour_to_time(hour.open) %> to <%= hour_to_time(hour.close) %>
7: 		<%= fields_for "hours[]", hour do |f| %>
8: 			<%= render 'shared/error_messages', :object => f.object %>
9: 			<%= f.hidden_field :open, :id => "open_range_"+hour.day.to_s %>
It has to do with the "fields_for" block and the way it is structured. This is the way that a railscast tutorial demonstrated for multiple record updating, and it works perfectly until I installed this gem. I really want to use this gem for validating other forms, I don't want to validate this form with it, which is why I put false in the form but it still gives me the error.
I have tried just about everything, including pulling :validate => false in the fields_for which gives another error. Any help would be greatly appreciated!
Thanks,
Louis

Ignore the weird spacing at line 6, the error is because of line 7

Can you gist your form template?

https://gist.github.com/1685165

gisted

Thank-you. I'll take a look at this soon,

Any help would be greatly appreciated


[pod-gateway] Permit overriding DNSPolicy

Description of the change
Hey gang! pod-gateway is a work of genius! This PR introduces a small optional changes to allow the operator to alter the DNSPolicy on the mutated pod.
Why? In my use-case, I mutate pods which run initContainers, and these initContainers require working DNS / network connectivity. Without this change, the webhook will always apply DNSPolicy: None to the pod, and then explicitly specify the VXLAN gateway endpoint as the DNS server using dnsConfig. This only works when the sidecar is up though, and so breaks DNS resolution for initContainers.
If a user doesn't care about routing DNS traffic over the gateway, they can set DNSPolicy: ClusterFirst, which will effectively ignore the dnsConfig values, and cause the pod to use the clusterDNS (which is Kubernetes' default pod behavior)
Benefits
Users who (a) need initContainers to have DNS and (b) don't care about routing this DNS traffic over the gateway can now do so.
Possible drawbacks
None
Additional information

Checklist

[X] Title of the PR starts with chart name (e.g. [home-assistant])
[X] Chart version bumped in Chart.yaml according to semver.
[X] Chart artifacthub.io/changes changelog annotation has been updated in Chart.yaml. See Artifact Hub documentation for more info.
[X] Variables have been documented in the values.yaml file.

@angelnu what do you think of this change?

Thanks for the change @funkypenguin - I could not think of a usage for the option so I did not add a config for it in the chart. But your use case does make sense - good explanation!

The a couple of trailing spaces to remove in the values.yaml comments - could you please fix those @funkypenguin so we can merge? Thanks in advance.

Fast response guys! :) I've zapped the two little invisible buggers! 👾


Update documentation about VRPLIB

The VRPLIB format consists of two parts: a problem specification part and a problem data part.

The problem specification part consists of entries that are of the form <keyword> : <value>, where <keyword> denotes an alphanumerical keyword and <value> denotes alphanumerical or numerical data. Specifically, <value> is zero-dimensional data.
The problem data part consists of data sections. Each data section starts with with the corresponding keyword in uppercase followed by _SECTION, e.g., NODE_COORD_SECTION. Each row of a section contains a sequence of alphanumerical or numerical values. The length of the section is either implicitly known (e.g., the number of customers), or up until the next section. Sections are parsed as nonzero-dimensional arrays.
The file ends with EOF.


Optimise Everything

Performance is all that matters, Rust is a systems programming language.
This commit implements the following optimisations:

Avoid using the format! machinery (via println! in a tight loop).
Avoid allocating a Vec of arguments when we just need the second one.
Avoid locking stdout over and over again in a tight loop, by hoisting
stdout.lock() outside the loop.
Use buffered output.

Points 1, 3 and 4 improve overall performance, while point 2 improves start up speed. Please review carefully.
This commit increases output throughput as measured by (short)
target/release/yes | pv > /dev/null

and (long)
target/release/yes aaaaaaaaaaaaaaaa | pv > /dev/null

after 20s from:

Implementation
Throughput (short)
Throughput (long)

Old
3.8 MB/s
30.2 MB/s

New
411 MB/s
916 MB/s

GNU coreutils 8.21
140MB/s
769MB/s

This commit also improves error handling by breaking out of the loop on an I/O error.
This commit is also ridiculous.

hey @cgati and @cristicbz , would you be willing to license to code in an MIT-compatible way? This is definitely higher throughput (having just tested) than the current version in uutils/coreutils

I get speeds of 10.4 GB/s with yes and 10.2 GB/s with yes yyyyyyyyyyyyyyyyyyyy with the following code. GNU coreutils v8.25 has exactly the same speed with the yes and 10.4 GB/s with the long invocation. I'm not sure why it wins with the long invocation.
With the current code in this PR, I get ~790 MB/s with the short invocation and ~1.1 GB/s with the long invocation. The problem here seems to lie in that BufWriter's write implementation will be fastest when writing the bytes immediately; I've removed buffering entirely to get the speeds above. It's possible the startup time could be further optimized through reducing allocations.
use std::env;
use std::io::{self, Write};
use std::process;

const PER_WRITE: usize = 8 * 1024;

fn main() {
    {
        // Move all locals into a scope, so that `process::exit()` is called after all destructors.
        let output = env::args().nth(1)
            .map(|x| x + "\n")
            .unwrap_or("y\n".to_owned());
        let stdout = io::stdout();
        let mut locked = stdout.lock();

        let len = PER_WRITE / output.len();
        let buffer = std::iter::repeat(output).take(len).collect::<String>();

        loop {
            if locked.write(buffer.as_bytes()).is_err() {
                break;
            }
        }
    }
    process::exit(1);
}

FYI, constructing the buffer that way will reallocate the string multiple times (collect has no way of knowing how long each of the output strings is). Instead, I recommend:
let mut buffer = String::with_capacity(PER_WRITE);
buffer.extend(std::iter::repeat(output).take(len));

(although the syscalls will dominate anyways so this is probably a useless optimization...)

That may have helped with startup time, difficult to check...
However, I did just check another thing: while ....is_ok() instead of the loop/break in the code above is slower.

If the string is smaller than 4kb then it should be repeated to that size. Then print with http://mainisusuallyafunction.blogspot.ca/2014/09/raw-system-calls-for-rust.html (syscalls crate now supports more than x86_64 linux)

@serpex Unbuffered stdout calls write which ends up in the syscall. There should be no overhead other than the calls themselves.

@nathanross absolutely. I'm currently out of town without my laptop for my sister's graduation, but as soon as I'm home this evening I'd be happy to.

That code fails if the input string is longer than the buffer. You should do
let len = PER_WRITE / output.len() + 1;

to avoid that. Further, all of these break if locked.write doesn't write all of the bytes - they should be using write_all. That can have a performance overhead (I dunno, I never checked), so really you want:
let len = std::cmp::max(PER_WRITE, output.len());
let buffer: Vec<u8> = output.bytes().cycle().take(len).collect();

let mut offset = 0;
while let Ok(bytes) = locked.write(&buffer[offset..]) {
    offset += bytes;
    offset %= output.len();
}

You probably also want to use args_os, since yes doesn't require unicode. I don't know a pleasant platform-independant way to turn an OsStr to a &[u8], so you'll need platform-specific code. It just so turns out that yes actually takes multiple arguments, too, separating them with spaces. And a --help argument, and a --version argument... we should support those. And the yes -- foo argument syntax.  But that's fine... let's let's optimize the startup time too. that would be a Good Idea. How about we dispatch off of the env::args and IF it's length one then IF the argument is longer than PER_WRITE we just convert it to a Vec<u8> directly (except on Windows) because that avoids generating the buffer but we should Also specialize on zer0 length because we can generate that with specialized code buffer = vec![b'\n'; PER_WRITE]; for i in 0..PER_WRITE / 2 { buffer[i * 2] = b'y'; } but then for other lengths we can use memcpy -based doubling like while i < buffer.len() { let (lhs, mut rhs) = buffer.split_at_mut(i); let _ = rhs.write(lhs); i *= 2; } then it's fast.

Excellent, thanks a lot @eddyb, @withoutboats, @Stebalien and @Veedrac , I implemented your suggestions, for a grand total of 4.5 GB/s throughput! See 08116fb.

Hey @nathanross , despite the extreme innovation displayed in this PR, I will generously dual licence my contributions as MIT/Apache-2.0. Though I imagine that for uutils, you want more features like --version etc, right?

@cristicbz @cgati great! Thank you.
@cristicbz yes, that the uutils yes will support that flag; I will build the commit next weekend if no one else has by then.

I implemented all your suggestions, including OsString to support non-unicode strings (though on non-unix, I still roundtrip through UTF-8; we can leave this for another PR). OS specific support is encapsulated in the platform module.
Also fixed the edge cases around the buffer size vs output size.
cc @cgati @llogiq @Stebalien @Stebalien @eddyb @Veedrac
Come on, let's have one last look, pull together and land this momentous PR.

LGTM. I'll go ahead and merge this in. Thank you everyone for your suggestions and all the work done here!

The GNU yes command actually accepts multiple arguments, instead of just the first argument.

@mmstick I originally wrote this to mimic the BSD yes as found on macOS (which is non-obvious, as I never stated that before.) That could probably be filed as an issue, however.

@mmstick I was wondering whether that was standard or a GNU extension.
GNU yes also tries to parse options, which I believe is nonstandard. Eg:
$ yes --verbose
yes: invalid option -- '-'
Try 'yes --help' for more information.

yes is not POSIX, so it's hard to say what are extensions.


Tests show warning for draft6 tests

UserWarning: No schema validator for draft6

This is going to be because my library ended up being "blessed" here to actually be the one that runs tests against the test suite, specifically e.g. one that verifies test cases against the JSON schema for test cases.
It doesn't have Draft 6 support yet, so hence the error.
If there's already a metaschema for Draft 6 though, should be fairly easy to add enough to remove the warning.

@Julian I see... That's fine if you're going to add draft-6 support. Or I can add tests with Ajv - it could run both draft 4 and draft 6 tests...

If there's already a metaschema for Draft 6 though

I'm not sure it's finalised. @handrews?

Official word: Not yet

At the moment, there's nothing proposed for Draft 06 that would further change the meta-schema, but yes, officially, it is not yet finalized.

OK, even a WIP would be good enough to get rid of the warning then I think -- if the draft is feature complete I can cut a prerelease version with support for the new metaschema.
Where's the new canonical place that it lives?
https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json#L2 appears to use a versionless URL? Is that correct?

@Julian I believe we intend / intended to change this so the URLs include the draft id in the URI. I can't look into it right now though, sorry.

@Julian @Relequestual is right (and there's a comment to that effect in the spec from when @awwright removed the versionless URL from it).
It should be these, since we are going to skip over 05:
http://json-schema.org/draft-06/schema#
http://json-schema.org/draft-06/hyper-schema#
Maybe instead of a warning an info message noting that it's provisional or something?  I don't want people to get confused when they can't find a schema at those URLs.


Typeguard wrongly assumed to be always true

TypeScript Version:  3.5.1
Search Terms:
typeguards never true
Code
class A {
  isB(): this is B {
    return this instanceof B
  }

  isC(): this is C {
    return this instanceof C
  }

}

class B extends A {}
class C extends A {}

const cObj = new C()

if (cObj.isB() || cObj.isC()) {
    console.log('why')
}

Expected behavior:
I'd expect this to compile without issues.
Actual behavior:
Compiler assumes that cObj.isB() is always true in the condition.
Playground Link:
http://www.typescriptlang.org/play/#code/FAYwNghgzlAECCsDexawJZQEIAoCUAXLAC4AWmGcWyqasATgKbECu9AdieXOu1MRHYhGAewBmsLLQC+wWpgDC+ImQoUFNOg2ZtOqnnwFDREhTLmzQkGJNiMAHsUbsAJnERJZ4aHA0Onru7IliAihrAgAPIARgBWsAC8sOyMAO6wSnhy6BI4UXEAdJi4eLAAPmURMbFFUJmlKFqhfCJgjAVgIgDmOADkqaQAnr1ZskA
Related Issues:

Your B and C are structurally the same

Your B and C are structurally the same

Yep, as far as the compiler is concerned they are the exact same type.  Therefore TS already knows a priori that if the object is not a B, it can't possibly be a C either.  The error disappears if you do something to make the types distinguishable.
Refer to this FAQ entry:
https://github.com/Microsoft/TypeScript/wiki/FAQ#why-do-these-empty-classes-behave-strangely


Set fixed pytest cache dir

What was wrong?
The directory was renamed to .pytest_cache in Pytest 3.4.0 so the directory was coming up in version control when using a newer Pytest version
How was it fixed?
Configured it to be set to .cache as it was before.
Cute Animal Picture

I think it'd be better to just add the new directory to the .gitignore

Sure, no problem. Updated.


DL Subcription - adding input as msg.path and options to control the node actions as msg.action

Hi,
Thx a lot for cool node-red-contrib-ctrlx-automation nodes.
I have 2 topics that maybe you would like to address with the next releases (I use currently version: 1.8.19):

Do you think that this would be a potential benefit if for the DL subscribe node we would have the property "path" as optional input e.g. msg.path (used to set the path to the Data Layer node which shall be subscribed to.) In a form of an array probably? Same as for "mqtt" node where it is called dynamic subscription and node gets input anchor.

Currently when using the DL subscription node I have to (but I would prefer not) hard code the DL path in the flow configuration via node-red GUI. I would prefer to send it with some payload and be able to catch potential problems afterwards.
BTW: I understand that one DL subscribe node makes one SSE call to the ctrlX DL node with a specific keepalive and subscriptions’ times. But at least sending more paths (e.g. as array of DL paths) in msg.path to this subscription node would be cool. E.g. subscription for same parameter but from different servo drives (the SSE REST allows such list of nodes).

It happens that when the machine which includes the drives is down/restarted - the corresponding DL paths are not existing anymore (or the DL paths were deleted automatically or due app failure) and ctrlX is still online we got error on the DL subscription node. It is OK I can catch it and at least I am aware. Do you think that adding also e.g. msg.action with names of the action the node should perform e.g.: "connect", "disconnect", "subscribe" and "unsubscribe".

In general: I want to subscribe to DL but only after some preparation of environment (=the ctrlX DL) for this operation - e.g. servodrives are up, everything is checked and ready to start the DL subscription and react on potential errors.
Best regards,
Kookoolinoo

Hi @kookoolinoo,
I think both proposals are very valuable feature extensions. 👍
Can't give you a date at the moment, but stay tuned for the next release. ;-)
BTW: Multiple "Data Layer Subscribe" nodes and their paths will be grouped together to a single SSE subscription. You can control this via the Data Layer Subscription Config Node". See also
https://github.com/boschrexroth/node-red-contrib-ctrlx-automation/blob/master/doc/DEVELOPMENT.md for the detailed architecture.
Best Regards
Sebastian

Finally added with #71


FeignAutoConfiguration doesn't allow to externalise feign client configuration

Hi guys!
I'm using FeignAutoConfiguration to instantiate the feign client which is located in the separate jar and implemented with no custom Configuration defined in its annotation.
In my app I need to add extra configuration to this client (e.g add extra Interceptors), and I thought that I had successfully accomplished the task by creating a FeignClientSpecification bean for that client. But this won't work due to the following:
Clients are registered in the spring context with FeignClientsRegistrar. FeignClientsRegistrar associates FeignClientSpecification for every client, in case the particular client has no default configuration specified the a FeignClientSpecification instance with an empty array of configurations is created.
Finally in the FeignAutoConfiguration I've got a collection of two FeignClientSpecifications one of which contains no configurations as I described above and another one contains configuration class. Both of them have the same name because they were specified for the same client. And when these FeignClientSpecifications are being set to the FeignContext class the last  FeignClientSpecifications (with empty config classes) overrides the instance with configuration...
From my perspective it would be great if  FeignClientSpecifications with empty configuration aren't included into the FeignContext or another approach is that external Configurations override configuration specified within the feign client annotation.

Can you deal with this by specifying the packages to scan in @ComponentScan?

@mpryahin FeignClientsRegistrar and FeignClientSpecification were not really meant to be used outside of @EnableFeignClients. @EnableFeignClients has basePackages and basePackageClasses attributes to let you scan for clients outside of the package where the annotation is used. You can also use the clients attribute to specify specific clients without scanning.

Outside of those, I'd recommend using the feign api directly to create the clients. See https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#creating-feign-clients-manually

Thanks a lot for all your replies!! will try all your suggestions
and just to make things clear, I'd like to clarify things
I've got the following configuration:
@EnableAutoConfiguration
@EnableFeignClients(clients = CloudClient.class)
@Configuration
public class Application {

    @Bean
    public FeignClientSpecification feignClientSpecification() {
        return new FeignClientSpecification(
            "mySericeId", new Class<?>[] {MyCloudClientConfig.class}
        );
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

and in a separate jar I've got the client defined:
@FeignClient("myServiceId")
public interface CloudClient extends Client {
}

Finally in the FeignAutoConfiguration class I've got the following property List configurations set with two FeignClientSpecification instances:
one that is instantiated by FeignClientsRegistrar that has the following properties:
name = "myServiceId"
configuration = empty array

another one that is defined by myself with properties set:
name = "myServiceId"
configuration = [MyCloudClientConfig.class]

and finally the FeignContext is instantiated in the FeignAutoConfiguration with those configurations like the following:
@Bean
public FeignContext feignContext() {
	FeignContext context = new FeignContext();
	context.setConfigurations(this.configurations);
	return context;
}

where #context.setConfigurations(this.configurations) looks like the following:
public void setConfigurations(List<C> configurations) {
	for (C client : configurations) {
		this.configurations.put(client.getName(), client);
	}
}

these leads to that one FeignClientSpecification that has no configuration overrides another FeignClientSpecification because both of them have the same names.

Don't scan for CloudClient.class the one in the external jar, just scan the one locally.

spencergibb thanks a lot!
Do you mean that Configuration is meant to be specified in the CloudClient class directly in the annotation like this?
@FeignClient(name= "myServiceId", configuration = MyCloudClientConfig.class)
public interface CloudClient extends Client {
}

and not elsewhere in the spring context by means of specifying custom FeignClientSpecification?
thank you!

yes it is.


alpine and golang images updated

What this PR does / why we need it:
to fix the vulnerability scans
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Release note:

Base image updated to alpine `v3.15.4` and build image to golang `1.17.9`.

/invite @shaoyongfeng


adding user group recording

Signed-off-by: jetzlstorfer<EMAIL_ADDRESS>

Preview: https://deploy-preview-841--keptn.netlify.app/resources/user-adoption/


No 'version' key in the manifest file for custom integration 'tedee'.

In future versions of HA the manifest.json needs a version key.
2021-03-03 22:22:17 WARNING (MainThread) [homeassistant.loader] No 'version' key in the manifest file for custom integration 'tedee'. This will not be allowed in a future version of Home Assistant. Please report this to the maintainer of 'tedee'

Thank you for notification. It's done: https://github.com/joerg65/tedee_lock/commit/125c7b429bdfadc3e596fa64ad679331005c687f


Coalesce based on feature

I looking for an option to coalesce based on a property in the geojson. For example we are mapping lots of small areas, and we've coloured the areas based on data values for that area. I would like to preserve the boundaries of the different small areas and coalesce features that are coloured the same.

Zooming out

Note how the area with the arrow is coalesced into a region with a different colour. When it would be better to coalesce the highlighted region.
As far as I can tell this functionality doesn't exist but I may have missed something.
Part 2 (optional). It would be great if I could set the conditions for coalescing based on the property e.g. coalesce features with data less than X, more than X but less than Y, more than Y but less than Z, more than Z. This isn't as important as I could do this externally by creating another field and code it A,B,C,D etc based on data values and coalesce on that field but I'd like to keep the data as a property so I can query it with click or other interactions.

Is this with --coalesce-densest-as-needed or plain --coalesce? If you do --coalesce --reorder all the features with exactly the same attributes should be merged together.
It does seem like it would be useful to be able to coalesce based only on certain properties and conditions, and I'll try to think about how that could be done.

Just giving this a bump -- it would be very useful for a dataset I'm working on to be able to coalesce based on a single given property -- in my case a zoning classification. Thanks!

Just giving this a bump -- it would be very useful for a dataset I'm working on to be able to coalesce based on a single given property -- in my case a zoning classification. Thanks!

This is pretty much my use case as well. If feasible, this would be a super helpful addition. Thanks!


Cannot set spacing and border thickness on a shapes text directly

Hello,
when using the function to specify a text an an arrow and set a border i am not able to set a spacing or border thickness nor color... would you consider enabling that? This also applies to other shapes. I just used arrows as an example.

This is a known issue. As a workaround try using HTML for the borders:


[bdwgc] Update to v8.2.2

Change REF from 5fab1a019 (v8.2.0-20211115) to v8.2.2

Update version, reset port-version

Use https in homepage

Describe the pull request

What does your PR fix?
Update from intermediate snapshot to a stable release

Which triplets are supported/not supported? Have you updated the CI baseline?
all

Does your PR follow the maintainer guide?

Yes

If you are still working on the PR, open it as a Draft: https://github.blog/2019-02-14-introducing-draft-pull-requests/

@Adela0814 please re-review it

Thank you!


bug: Publisher typo

Description
Fixes the intended font extension ttf - no idea what tff is.
Checklist:

[X] Securely signed commits
[X] Component(s) with PHPDoc blocks, only if necessary or adds value
[ ] Unit testing, with >80% coverage
[ ] User guide updated
[X] Conforms to style guide

Fixed the documentation: #5792


sdp_answer messages with no SSRC cause crashes in EndpointBin

I've been seeing occasional errors in our tests (using chromedriver), with the following stacktrace:
13:24:46.613 [error] GenServer #PID<0.1510.0> terminating
** (KeyError) key<PHONE_NUMBER> not found in: %{}
    :erlang.map_get(2790623163, %{})
    (membrane_webrtc_plugin 0.1.0) lib/membrane_webrtc_plugin/endpoint_bin.ex:236: Membrane.WebRTC.EndpointBin.handle_notification/4
    (membrane_core 0.6.1) lib/membrane/core/callback_handler.ex:129: Membrane.Core.CallbackHandler.exec_callback/4
    (membrane_core 0.6.1) lib/membrane/core/callback_handler.ex:70: Membrane.Core.CallbackHandler.exec_and_handle_callback/5
    (membrane_core 0.6.1) lib/membrane/core/parent/message_dispatcher.ex:29: Membrane.Core.Parent.MessageDispatcher.handle_message/2
    (stdlib 3.15) gen_server.erl:699: :gen_server.try_dispatch/4
    (stdlib 3.15) gen_server.erl:775: :gen_server.handle_msg/6
    (stdlib 3.15) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Last message: {Membrane.Core.Message, :notification, [:rtp, {:new_rtp_stream,<PHONE_NUMBER>, 120}], []}

I've traced this to sdp_answer messages which do not include ssrc attributes. I've found that changing the handle_other callback for answers to check for this makes the crashes disappear, but am not sure if there are any unintended consequences:
    if ssrc_to_mid == %{} do
      {:ok, state}
    else
      {{:ok, forward: {:ice, {:set_remote_credentials, remote_credentials}}},
       Map.put(state, :ssrc_to_mid, ssrc_to_mid)}
    end

I'm happy to issue a pull request for this change, or to pull down changes if you want solve for this yourselves. Let me know if I can help!

Maybe this is related to the issues?
https://bugs.chromium.org/p/webrtc/issues/detail?id=11983

Hi @sax,
thanks for your investigation!
I am not sure if such SDP answers are incorrect. In fact ssrc attribute should be assigined by endpoint that sends data so maybe we should fix our parser.
Is it possible to reproduce somehow this error?
Do you know when it happens?

We also filter tracks to have only :sendonly ones https://github.com/membraneframework/membrane_webrtc_plugin/blob/master/lib/membrane_webrtc_plugin/endpoint_bin.ex#L298
so it's not exactly the case described on bugs.chromium.org

One thing to note is that when the SDP messages came through with no ssrc, they were also missing :sendonly. ssrc_to_mid resolves to an empty map, causing a crash here when the notification bubbles up from the ice bin.
I think that I saw the error very occasionally when running the pipeline locally, connecting via a few Chrome windows. We've set up some feature tests using Wallaby with chromedriver, with the following configuration:
config :wallaby,
  driver: Wallaby.Chrome,
  chromedriver: [
    capabilities: %{
      chromeOptions: %{
        args: [
          "--use-fake-ui-for-media-stream",
          "--use-fake-device-for-media-stream"
        ]
      }
    },
    headless: true
    # Uncomment below to run feature tests in-browser
    #    headless: false
  ],
  hackney_options: [hackney: [pool: false]],
  otp_app: :apex,
  screenshot_dir: "tmp/screenshots",
  screenshot_on_failure: true

With three browser sessions connecting to the video room, I could not get the tests to pass locally on Friday without some change. Our tests verify that candidates are received by each browser session, but not that inbound video tracks are successfully wired up.

Also of note: I did not see these test failures prior to Friday, when I updated the following:

ex_libnice: ec9cebbca102908e7f7bef069e0090fb041b077d -> 97641db72e8eccb502c0929aa8d0da6fdff14ced
membrane_core: 478fb7726ca85fe88d7bfb044cae290fa286c7d6 -> 153e86bade232c3095b032e405facf362acf2d2b
membrane_rtp_plugin: 37bd1f2d000444c35200d07363e85d53fb64eee4 -> 83981ab597c7101ec9c266f51b5bb65c5185ecc0
membrane_webrtc_plugin: 54b2f2e33d924dfba3b9bff30ea74361855029b6 -> 2cd4a8395264894107b86043a5a996c4eca88e5c

I'm poking around in these changesets to see if a change in the membrane plugins might have caused the problem, but I do not see an obvious culprit. Another possibility is that my version of Chrome upgraded. The timestamp on my Chrome executable is May 7, but I don't know if that's the install date, or the date it was compiled upstream.

One thing to note is that when the SDP messages came through with no ssrc, they were also missing :sendonly

I have to take a look at some RFCs to check it out but if I recall correctly lacking direction attribute (sendrecv, sendonly, recvonly or inactive) means we should assume sendrecv one but in such a case I would expect ssrc to be present.
We have also deployed videoroom and test it on different video calls but we didn't encounter similar problem.
In your config there is a fake device for media stream but is it possible that no media were sent? I mean scenario with blocked microphone and camera.
Also are you able to provide example SDP offer/answer from failing scenario?
I will dive more into RFCs describing SDP offer and answer formats but probably tomorrow.

I haven't found anything about missing ssrc so far but I will take a look at  JSEP RFC tomorrow

Here's an example of an answer with no SSRC:
v=0
o=-<PHONE_NUMBER>48971313 3 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=group:BUNDLE 9FD4FB3AD296EE1D 91C8E2AFD848456C
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:jYux
a=ice-pwd:avl7t/S9mUpAa8JPCrhu1R0j
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:9FD4FB3AD296EE1D
a=extmap:6 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=inactive
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 minptime=10;useinbandfec=1
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:jYux
a=ice-pwd:avl7t/S9mUpAa8JPCrhu1R0j
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:91C8E2AFD848456C
a=inactive
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 ccm fir
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f

This was the offer generated by this process:
v=0
o=-<PHONE_NUMBER>2347214 0 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=group:BUNDLE 9FD4FB3AD296EE1D 91C8E2AFD848456C
a=extmap:6 urn:ietf:params:rtp-hdrext:ssrc-audio-level vad=on
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=recvonly
a=ice-ufrag:FPdh
a=ice-pwd:1tujnqDBYWBGXvNQ2Tz5Xy
a=ice-options:trickle
a=fingerprint:sha-256 73:7B:02:0F:0B:B9:30:0D:BE:1A:E7:A6:C9:09:38:92:FE:EE:1E:5E:61:62:1D:36:19:F8:0A:0D:B9:F7:AB:FE
a=setup:actpass
a=mid:9FD4FB3AD296EE1D
a=msid:e5d02968-6f7a-42fe-9412-c52c4126e673 f034deb6-3e45-42dd-8ba2-5fb983e176b3
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 useinbandfec=1
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=recvonly
a=ice-ufrag:FPdh
a=ice-pwd:1tujnqDBYWBGXvNQ2Tz5Xy
a=ice-options:trickle
a=fingerprint:sha-256 73:7B:02:0F:0B:B9:30:0D:BE:1A:E7:A6:C9:09:38:92:FE:EE:1E:5E:61:62:1D:36:19:F8:0A:0D:B9:F7:AB:FE
a=setup:actpass
a=mid:91C8E2AFD848456C
a=msid:e5d02968-6f7a-42fe-9412-c52c4126e673 8b389c2e-e081-45f3-bf51-5dae4f8c3682
a=rtcp-mux
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1
a=rtcp-fb:96 ccm fir
a=rtcp-rsize

With the change in place to avoid crashes, the process then generates a new offer:
v=0
o=-<PHONE_NUMBER>9624285 0 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=group:BUNDLE 9FD4FB3AD296EE1D 91C8E2AFD848456C C49A60E56DA2470F EEC6C5494B6784B5
a=extmap:6 urn:ietf:params:rtp-hdrext:ssrc-audio-level vad=on
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=recvonly
a=ice-ufrag:E9JQ
a=ice-pwd:D0flxfNzGFVr/PBdnApJdA
a=ice-options:trickle
a=fingerprint:sha-256 73:7B:02:0F:0B:B9:30:0D:BE:1A:E7:A6:C9:09:38:92:FE:EE:1E:5E:61:62:1D:36:19:F8:0A:0D:B9:F7:AB:FE
a=setup:actpass
a=mid:9FD4FB3AD296EE1D
a=msid:e5d02968-6f7a-42fe-9412-c52c4126e673 07e3fc0d-a914-4b4b-ab87-53a32bcfe340
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 useinbandfec=1
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=recvonly
a=ice-ufrag:E9JQ
a=ice-pwd:D0flxfNzGFVr/PBdnApJdA
a=ice-options:trickle
a=fingerprint:sha-256 73:7B:02:0F:0B:B9:30:0D:BE:1A:E7:A6:C9:09:38:92:FE:EE:1E:5E:61:62:1D:36:19:F8:0A:0D:B9:F7:AB:FE
a=setup:actpass
a=mid:91C8E2AFD848456C
a=msid:e5d02968-6f7a-42fe-9412-c52c4126e673 d79fe39d-1788-4038-855e-0719d0804bfd
a=rtcp-mux
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1
a=rtcp-fb:96 ccm fir
a=rtcp-rsize
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=sendonly
a=ice-ufrag:E9JQ
a=ice-pwd:D0flxfNzGFVr/PBdnApJdA
a=ice-options:trickle
a=fingerprint:sha-256 73:7B:02:0F:0B:B9:30:0D:BE:1A:E7:A6:C9:09:38:92:FE:EE:1E:5E:61:62:1D:36:19:F8:0A:0D:B9:F7:AB:FE
a=setup:actpass
a=mid:C49A60E56DA2470F
a=msid:2b7ee2e2-2d5f-4204-b7d6-10ce3b1ac940 8d009b36-99a0-4e81-bcda-41cf3f18ad0e
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 useinbandfec=1
a=ssrc:3499189166 cname:C49A60E56DA2470F-audio-2b7ee2e2-2d5f-4204-b7d6-10ce3b1ac940
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=sendonly
a=ice-ufrag:E9JQ
a=ice-pwd:D0flxfNzGFVr/PBdnApJdA
a=ice-options:trickle
a=fingerprint:sha-256 73:7B:02:0F:0B:B9:30:0D:BE:1A:E7:A6:C9:09:38:92:FE:EE:1E:5E:61:62:1D:36:19:F8:0A:0D:B9:F7:AB:FE
a=setup:actpass
a=mid:EEC6C5494B6784B5
a=msid:2b7ee2e2-2d5f-4204-b7d6-10ce3b1ac940 17b3332a-950a-4363-9f46-b0ce411bbaf7
a=rtcp-mux
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1
a=rtcp-fb:96 ccm fir
a=rtcp-rsize
a=ssrc:3576231999 cname:EEC6C5494B6784B5-video-2b7ee2e2-2d5f-4204-b7d6-10ce3b1ac940

Which elicits this answer:
v=0
o=-<PHONE_NUMBER>48971313 5 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=group:BUNDLE 9FD4FB3AD296EE1D 91C8E2AFD848456C C49A60E56DA2470F EEC6C5494B6784B5
a=msid-semantic: WMS lTpP8mY32BbIVsOByUrC7YyofuwubM5B536C
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:nvCE
a=ice-pwd:+iYZLQTbgBnLNfGwxWemWgTZ
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:9FD4FB3AD296EE1D
a=extmap:6 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendonly
a=msid:lTpP8mY32BbIVsOByUrC7YyofuwubM5B536C 792f7021-9f95-4ab4-a7f1-68ba0989a32d
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 minptime=10;useinbandfec=1
a=ssrc:435896142 cname:gWdd6i1/HATyVFuM
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:nvCE
a=ice-pwd:+iYZLQTbgBnLNfGwxWemWgTZ
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:91C8E2AFD848456C
a=sendonly
a=msid:lTpP8mY32BbIVsOByUrC7YyofuwubM5B536C 2e7acf50-5961-44c3-bbdf-1f8a1c99bf79
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 ccm fir
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=ssrc:2414121414 cname:gWdd6i1/HATyVFuM
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:nvCE
a=ice-pwd:+iYZLQTbgBnLNfGwxWemWgTZ
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:C49A60E56DA2470F
a=extmap:6 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=recvonly
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 minptime=10;useinbandfec=1
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:nvCE
a=ice-pwd:+iYZLQTbgBnLNfGwxWemWgTZ
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:EEC6C5494B6784B5
a=recvonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 ccm fir
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f

Here's an example of an answer with no SSRC:
v=0
o=-<PHONE_NUMBER>48971313 3 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=group:BUNDLE 9FD4FB3AD296EE1D 91C8E2AFD848456C
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 120
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:jYux
a=ice-pwd:avl7t/S9mUpAa8JPCrhu1R0j
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:9FD4FB3AD296EE1D
a=extmap:6 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=inactive
a=rtcp-mux
a=rtpmap:120 OPUS/48000/2
a=fmtp:120 minptime=10;useinbandfec=1
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:jYux
a=ice-pwd:avl7t/S9mUpAa8JPCrhu1R0j
a=ice-options:trickle
a=fingerprint:sha-256 5C:80:6D:DC:DB:F2:03:BA:E7:33:64:E3:26:38:E3:FE:D0:4A:20:79:19:BB:87:60:38:C9:10:15:2E:6F:7C:AD
a=setup:active
a=mid:91C8E2AFD848456C
a=inactive
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 ccm fir
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f

The answer marks both tracks as inactive which means no media will be sent on any of them. I think that this might be a reason of missing ssrc :thinking:

With the change in place to avoid crashes, the process then generates a new offer:

Could you elaborate? Is it your change in source code that generates a new SDP offer?

Could you elaborate? Is it your change in source code that generates a new SDP offer?

This is with #22 applied. Our pipeline does not have any special code, but if we ignore the answer in the EndpointBin, I see a second offer generated by the same process, and an answer to that with ssrc included.


Fix service bus and event hub command loaders

View a preview at https://prompt.ws/r/Azure/azure-cli/5836
This is an experimental preview for @microsoft users.


Bug: Search bar is not working properly

What happened?
Here if you search with t, all the options related to t will be shown, and in this project as far as my knowledge toaster UI and the themes both start with t should come, but only toaster UI is coming.
If you search with the then thea theme should come but completely a different project is coming.
Add screenshots

What browsers are you seeing the problem on?
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

yeah we need to show all projects regarding to a letter(if available)

Completed. Thanks for your contributions 🎉 ❤


Add new actions and badge to show regular build and check of the conda environment

As a developer I want to know as soon as possible if there are any problems with conda resolving the conflicts between different project dependencies in the conda enviroment so that i know i always have a stable development environment or so that I can decide to upgrade or downgrade dependency versions in the conda build
Context

the conda environment file lists min depenendcies e.g. numpy>=1.19
the build process is dynamic,
each time the build is run, newer dependency versions may be picked up

Required solution

github action with cron
optional weekly or monthly builds
note in readme to reflect current status like a dashboard

Done


Updater

Making confirm before update default behavior. Adding full site backup prior to upstream update, stops process if backup fails. Adding in process informational output. - EHM

Need to see why the build is failing, but since I can't reach travis right now, it's possibly something on their end.

Waiting on testing then we'll merge.


last input for the targetFolder has misleading description

it reads "File Path for..." while in reality it should be a Directory Path node. It's a quick fix.

description now reads Directory Path to Hydra Folder


Proper message for problem with addons

Motivation/Description of the PR
Getting frustrated when I see some unreadable error.

Logging what went wrong

Type of change

[ ] Breaking changes (its not)

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 12

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 10

See the complete overview on Codacy

Can someone please help me to for that in a proper way?

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 4

See the complete overview on Codacy

Can someone please help me to fork that in a proper way?

@orihomie clicking fork button didn't work for you?

Can someone please help me to fork that in a proper way?

@orihomie clicking fork button didn't work for you?

Sry I was talking about that Hound violations

Can someone please help me to fork that in a proper way?

@orihomie clicking fork button didn't work for you?

Sry I was talking about that Hound violations

better to run on your local with npm run lint-fix that will fix all possible lint issues.


Adding jglick to packer

Description
Hoping to release https://github.com/jenkinsci/packer-plugin/pull/22, assuming @jdamick agrees.

Submitter checklist for changing permissions

Always

[X] Add link to plugin/component Git repository in description above

When adding new uploaders (this includes newly created permissions files)

[X] Make sure to @mention an existing maintainer to confirm the permissions request, if applicable
[X] Use the Jenkins community (LDAP) account name in the YAML file, not the GitHub account name
[X] All newly added users have logged in to Artifactory at least once

go ahead, for whatever reason the maven-release-plugin is not working for me and i don't want to hold up releasing it.


Card update - Added Hover and backlight effect to card component

Added Hover and backlight effect to card component

It seems correct; ]I don't see any errors .

Great.


Relabel Request for MONDO:0018760 "WAC-related facial dysmorphism-developmental delay-behavioral abnormalities syndrome"

Mondo term (ID and Label):
WAC-related facial dysmorphism-developmental delay-behavioral abnormalities syndrome (MONDO:0018760)
Suggested new label:
DeSanto-Shinawi syndrome (MONDO:0018760)
Your nano-attribution (ORCID)
This relabel is requested by the ClinGen ID/Autism GCEP: https://clinicalgenome.org/affiliation/40006/
Optional: Any additional information (like supporting evidence, PubMed ID, etc.)
In the literature, this syndrome is referred to as DeSanto-Shinawi syndrome. Additionally, patient support networks (https://www.dessh.org/) use the term DeSanto-Shinawi syndrome and have expressed concern about the negative connotation of the word "wack," which sounds the same as the current MonDO term.
Additionally, the phrase "developmental delay" is not appropriate for individuals over the age of six. There are currently adults with intellectual disability who have DeSanto-Shinawi syndrome (PMID:25356899).
DeSanto-Shinawi syndrome is also caused by 10p11.21p12.31 microdeletions (PMID:35266333, PMID:22258158, PMID:18080323) and describing the disease using the gene name does not adequately capture these individuals.
Preferred synonyms include: "DESSH syndrome" and the original term "WAC-related facial dysmorphism-developmental delay-behavioral abnormalities syndrome"
Child terms should be "facial dysmorphism-developmental delay-behavioral abnormalities syndrome due to WAC point mutation" (MONDO:0014741) and “facial dysmorphism-developmental delay-behavioral abnormalities syndrome due to 10p11.21p12.31 microdeletion” (MONDO:0017283).
We will be requesting a relabel term for MONDO:0014741 and MONDO:0017283 as well.
CC: @ErinRiggs

@ARosselClinGen DeSanto-Shinawi syndrome is the preferred name in OMIM for facial dysmorphism-developmental delay-behavioral abnormalities syndrome due to WAC point mutation
is is appropriate to rename this term instead of WAC-related facial dysmorphism-developmental delay-behavioral abnormalities syndrome?

I looked at the other tickets and now I better understand the request. I believe this is what you asked for:

I updated the synonyms accordingly.


AOT Runner Design

[ ] Find a way to output a shared object from the LLVM pipeline
[ ] Find a way to link and load said shared object into the running process
[ ] Gather requirements on entrypoints and parameter and return values passing
[ ] Rename NativeExecutor to NativeJITExecutor
[ ] Create NativeAOTExecutor stub

The output of this issue should be a design and specification for the AOT compilation api, mechanism and runner.

Some useful links related
https://github.com/llvm/llvm-project/blob/llvmorg-17.0.5/mlir/lib/Tools/mlir-translate/MlirTranslateMain.cpp
https://mlir.llvm.org/doxygen/classmlir_1_1LLVM_1_1ModuleTranslation.html#ac7e657a04e78a09ffd38c2f6cde6b905
https://mlir.llvm.org/docs/TargetLLVMIR/
https://mlir.llvm.org/doxygen/namespacemlir.html#adc149979459c3123124db882fb765dba

first bullet point done in https://github.com/lambdaclass/cairo_native/pull/352

Completed in #390


Fix lx-select in Angular 1.4.0

Angular 1.4.0 changes the behaviour of the "filter" filter.
If it does not receive an array an error is thrown.
Relevant commit:
https://github.com/angular/angular.js/commit/cea8e75144e6910b806b63a6ec2a6d118316fddd#diff-ea6dc49a7f9836eb439e02fd27e86217
I've created a custom filter, which handles non array arguments and falls back to the standard one if arguments are valid.

thanks for PR!

+1

Hi! Thanks for the PR. I did not used it because we needed to still filter the objects. But I used part of your solution with some optimizations.
It also comes with some performance optimizations for the lx-select and some memory leaks fixed.
I'll deploy a new version right away.


only one GPU was occupied

When training, I run: torchpack dist-run -np 2 python tools/train.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth --load_from pretrained/lidar-only-det.pth --run-dir output/bev_result/
I looked at the GPU usage and found that only one GPU was occupied, how do I make the other piece also occupied.

When training, I run: torchpack dist-run -np 2 python tools/train.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth --load_from pretrained/lidar-only-det.pth --run-dir output/bev_result/ I looked at the GPU usage and found that only one GPU was occupied, how do I make the other piece also occupied.

Hi Have you solved the problem? It seems I'm using the CPU rather than the GPU...

I'm facing the same issue now. Have you solved this?

I'm facing the same issue now. Have you solved this?

vram, I think

我现在面临同样的问题。你解决了这个问题吗？

弗拉姆，我想

I think the memory was not freed when running torchpack before. I first looked at the GPU usage and found that there was a process that kept taking up memory, so I killed it. But killing it remains. Then I'll reboot just fine.


Fails on Live URL

Hi @davidtheclark, thanks for this library!
When I run this with the following MDX content...

  freeCodeCamp: A Beginner’s Guide to GraphQL

...it fails as in the error message below:
$ yarn remark index.md
index.md
  2:9-2:86  warning  Link to https://www.freecodecamp.org/news/a-beginners-guide-to-graphql-86f849ce1bec/" is dead  no-dead-urls  remark-lint

⚠ 1 warning

remark-lint-no-dead-urls appears to be taking the " at the end along with the link.
cc @wooorm

Ahh, sorry, just realized that this is an incompatibility between Markdown and MDX.
Markdown does not allow for that syntax (at least on https://markdownlivepreview.com/):

I guess that it wouldn't make sense for remark to support this.
I will see what I can do with gotOptions or something...
Closing.

Ah yeah, HTML like this is not supported by Markdown. See CommonMark. So the URL, in GFM, is seen as an actual URL.
If you want to ignore MDX, you can use the remark-mdx plugin. Although it won’t check href props

Right, thanks for the explanation 👍
I'm looking to lint all of my .mdx files for broken links, don't have any .md files at the moment...

Hmm... I guess I'll use patch-package to remove the " from the end of node.url. 😅

why not use remark-mdx?

Hm, maybe I misunderstood your comment above:

If you want to ignore MDX, you can use the remark-mdx plugin. Although it won’t check href props

I don't want to ignore MDX - I want to check it :)

Looking at remark-mdx, can't tell - does it work with remark-lint and remark-cli?
Edit: I guess it does - my package.json:
{
  "remarkConfig": {
    "plugins": [
      "remark-mdx",
      "remark-lint-no-dead-urls"
    ]
  }
}

I don't want to ignore MDX - I want to check it :)

Well, this plugin works on markdown syntax. remark-mdx makes sure MDX is understood, but it’s still a different syntax that isn’t markdown. I don’t think there exists a project like remark-lint-no-dead-links for MDX. Would <Icon src="..."> also be checked? Etc., many new problems!

Ah, understood. So the links in format of  are not recognized as a link with a node.url by remark-mdx, I suppose...

That is correct, remark/markdown does not understand HTML. And while MDX understands JSX, it does not map JSX to “equivalents” in Markdown.


Wannier centers inconsistent with Wannier90 when 'guiding_centres' is used.

I've encountered a case where the Wannier centers computed by Wannier90 and wannier90-utils are inconsistent. Unfortunately I'm not allowed to share the input files[*], but the root cause is that in
https://github.com/jimustafa/wannier90-utils/blob/c22ae9249c19ada8f45711aebe89ab20802c1654/src/w90utils/sprd.py#L19
the np.imag(np.log(mii[:, i])) is well-defined only up to multiples of 2π.
This is the same "branch cut" problem that is worked around in Wannier90 by setting the guiding_centres=.true. option.
I'm not sure what the best approach would be here - do you think it would make sense to add a similar option that selects the closest Wannier center to a given "reference"?
[*] I'll try to come up with some other example that reproduces this behavior..

Hello @greschd. Thanks for reporting this issue. Yes, an option to specify "reference" centers, in order to fix the phases of the logarithm, seems like a reasonable approach. Been looking through the wann_phases routine in wannier90, but cannot quite understand how the phases are determined from the guiding centers. Presumably, for a set of centers, it is straightforward to compute the appropriate phases; and that this may differ from guiding_centres during the spread minimization.

I've also been looking at wann_phases, and didn't completely manage to parse it either. This e-mail thread from long ago helped somewhat: https://lists.quantum-espresso.org/pipermail/wannier/2013-November/000726.html
From what I understand so far:

csum(i, b) = \sum_k M_{i,i}^{k, k+b}  is used to obtain a "decent guess" for the average phase of the M_{i,i}^{k,k+b}s
the first three (in b) xx(i, b) are chosen as -Im(log(csum(i, b))
the other xx(i, b) are chosen to be close to b.rguide(i)
that all is used somehow to update rguide(i).. I don't completely understand the logic there

This "updated" rguide is then used to compute sheet(i, b, k) = b.rguide(i), and csheet = e^{1j * sheet}.
The csheet and sheet are then used in other parts of Wannier90 (also when computing the spreads etc.).
I've played around with it a tiny bit, but haven't gotten to reproduce the same Wannier centers as Wannier90 yet.


Typedoc does not play well with alias type arguments

Hi
I was playing with the parsing capabilities from typedoc on my codebase and I found a possible issue.
How do I use:
const app = new Application(typedocOptions)
app.convert(listOfFilePaths);

Consider the following case:
in package core
export interface IContextInput {
  [key: string]: any;
};

export type IContext<T extends IContextInput, U extends IContextInput = {}> = {[P in keyof T]: T[P]} & {[C in keyof U]: U[C]};

in package main
import {IContext, IContextInput} from "core";

interface TestInput extends IContextInput {
     param: boolean;
}

interface TestContext extends IContext<TestInput> {}

I can't get the information I want for extendedTypes, like "this interface extends IContext with type argument TestInput"
I have tried to debug a little bit the code and got to Converter.convertType method. The type object contains the information I want:

And it gets into the UnionIntersectionConverter (because the union in IContext).
So extendedTypes get:

0.20 has improved support for this, along with a large number of other things. Rendering the example in the OP, I see:


Add RAS local interrupt fields to {m,s,vs}{ie,ip} CSRs

@jhauser-us @aswaterman
Is the AIA spec integration imminent into Priv 1.13? If not should we introduce the interrupt numbers 35 and 43 defined by AIA spec as local interrupts for low-priority and high-priority RAS events as a temporary measure?

cc @gfavor

I'd say yes, let's go ahead and incorporate the interrupt #35/#43 definitions from AIA into the Priv spec since it will be a while before AIA gets properly integrated (i.e. next year).

Without extension Smaia/Ssaia, the Priv spec says that interrupt numbers 16 and higher are "designated for platform or custom use", meaning the Priv spec doesn't determine what they mean.  How then can the Priv spec (without Smaia/Ssaia) provide definitions for interrupt numbers 35 and 43 that it expressly doesn't control?
Ved wrote:

If not should we introduce the interrupt numbers 35 and 43 defined by AIA spec as local interrupts for low-priority and high-priority RAS events as a temporary measure?

Temporary measure for what purpose?  For people who don't implement Smaia/Ssaia?  I'm going to go out on a limb and suggest that people who do implement Smaia/Ssaia are probably aware of the AIA document.

I would take back my last post and instead agree with John.  Even when AIA is "properly integrated", the Priv spec should continue to say what it says and it is the AIA extensions that gives specific meaning to interrupt numbers 35 and 43.
Put the other way around, John argues that as even other bits among bits 16+ are defined over time by other extensions, the Priv spec should not change and each other extension will document the specific meaning it introduces around specific interrupt numbers.

OK to close this issue, then, Ved?

I was hoping to get some clarifications to the Priv spec.
The Priv spec states "Bits 15:0 are allocated to standard interrupt causes only, while bits 16 and above are designated for platform or custom use.". Is "platform use" synonymous with "custom use"?  Even if not it is still stated as designated for custom use. The Smaia/Ssaia defines codes 16-12 and 32-47 as reserved for standard extensions.
This may seem like a contradiction to the Non-standard encoding space guarantee provided otherwise. Should this change in designation reflect in Priv. specification (retroactively) to avoid the contradiction?

Platform use means the hardware platform defines the usage.  I know that sounds circular, but the point is, it isn't synonymous with custom, since custom uses might conflict with platform uses.
Platforms might be standard, in which case they may allocate some of these interrupts for standard use; a correct implementation of that platform cannot reallocate those interrupts for custom uses.  However, a standard platform is free to designate a subset of the platform-use interrupts as custom.
(Platforms might also be custom, but then the intended behavior is obvious.)
@gfavor and I concluded the best resolution is to delete the words "or custom".  This doesn't prevent those interrupts being used for custom purposes, but it makes it clear that the platform gets to make the decision.