"curl: (22) The requested URL returned error: 403 Forbidden" in Travis-CI

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
Today my travis builds fail randomly with "curl: (22) The requested URL returned error: 403 Forbidden" error. Haven't faced this issue before. I believe this is kind a regression from #10278
Is there a real need in WWDR installing on travis instances? They do their own patch:

Fix WWDRCA Certificate
Unable to delete certificate matching "0950B6CD3D2F37EA246A1AAA20DFAADBD6FE1F75"security: AppleWWDRCA.cer: already in /Library/Keychains/System.keychain

Also, it's already included in macOS Sierra, so, is there a real need in this step? This failure is a bit annoying.
Complete output when running fastlane, including the stack trace and command used
[14:11:41]: ---------------------
[14:11:41]: --- Step: produce ---
[14:11:41]: ---------------------
+----------------+--------------------------------+
|           Summary for produce 2.56.0            |
+----------------+--------------------------------+
| app_identifier | com.app.id     |
| app_name       | Autogenerated com.app.id |
| skip_itc       | true                           |
| username       | [secure]               |
| sku            | [secure]                     |
| platform       | ios                            |
| language       | English                        |
| skip_devcenter | false                          |
| team_id        | [secure]                     |
| team_name      | [secure]     |
| itc_team_id    | [secure]                       |
+----------------+--------------------------------+
[14:11:44]: [DevCenter] App 'com.app.id' already exists, nothing to do on the Dev Center
[14:11:44]: -------------------
[14:11:44]: --- Step: is_ci ---
[14:11:44]: -------------------
[14:11:44]: --------------------------------------
[14:11:44]: --- Step: Switch to ios build lane ---
[14:11:44]: --------------------------------------
[14:11:44]: Cruising over to lane 'ios build' 🚖
[14:11:49]: -------------------
[14:11:49]: --- Step: match ---
[14:11:49]: -------------------
+-----------------------+----------------------------------------------+
|                       Summary for match 2.56.0                       |
+-----------------------+----------------------------------------------+
| git_branch            | master                                       |
| type                  | development                                  |
| app_identifier        | com.app.id                   |
| force_for_new_devices | true                                         |
| git_url               | [secure] |
| username              | [secure]                             |
| keychain_name         | ios-build.keychain                           |
| keychain_password     | ********                                     |
| readonly              | false                                        |
| team_id               | [secure]                                   |
| team_name             | [secure]                   |
| verbose               | false                                        |
| force                 | false                                        |
| skip_confirmation     | false                                        |
| shallow_clone         | false                                        |
| clone_branch_directly | false                                        |
| skip_docs             | false                                        |
| platform              | ios                                          |
+-----------------------+----------------------------------------------+
[14:11:49]: Cloning remote git repo...
[14:11:49]: If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.
[14:13:28]: 🔓  Successfully decrypted certificates repo
[14:13:28]: Verifying that the certificate and profile are still valid on the Dev Portal...
[14:13:29]: Installing certificate...
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 403 Forbidden
[14:13:30]: Sending crash report...
[14:13:30]: The stack trace is sanitized so no personal information is sent.
[14:13:30]: To see what we are sending, look here: /Users/travis/.fastlane/latest_crash.json
[14:13:30]: Learn more at https://github.com/fastlane/fastlane#crash-reporting
[14:13:30]: You can disable crash reporting by adding `opt_out_crash_reporting` at the top of your Fastfile

+------------------+-----------+
|         Lane Context         |
+------------------+-----------+
| DEFAULT_PLATFORM | ios       |
| PLATFORM_NAME    | ios       |
| LANE_NAME        | ios auto  |
| PRODUCE_APPLE_ID |           |
| VERSION_NUMBER   | 1.0.0 |
| BUILD_NUMBER     | 1.0.0 |
+------------------+-----------+
[14:13:33]: Could not install WWDR certificate
+------+---------------------------------------------------------------+-------------+
|                                  fastlane summary                                  |
+------+---------------------------------------------------------------+-------------+
| Step | Action                                                        | Time (in s) |
+------+---------------------------------------------------------------+-------------+
| 1    | default_platform                                              | 0           |
| 2    | git_branch                                                    | 0           |
| 3    | Switch to ios beta lane                                       | 0           |
| 4    | is_ci                                                         | 0           |
| 5    | update_app_identifier                                         | 0           |
| 6    | produce                                                       | 3           |
| 7    | is_ci                                                         | 0           |
| 8    | Switch to ios build lane                                      | 0           |
| 💥   | match                                                         | 101         |
+------+---------------------------------------------------------------+-------------+
[14:13:33]: fastlane finished with errors
[!] Could not install WWDR certificate

Environment
[14:13:32]: ▸ ✅ fastlane environment ✅
[14:13:32]: ▸ ### Stack
[14:13:32]: ▸ | Key                         | Value                                                      |
[14:13:32]: ▸ | --------------------------- | ---------------------------------------------------------- |
[14:13:32]: ▸ | OS                          | 10.12.1                                                    |
[14:13:32]: ▸ | Ruby                        | 2.3.1                                                      |
[14:13:32]: ▸ | Bundler?                    | true                                                       |
[14:13:32]: ▸ | Git                         | git version 2.11.0                                         |
[14:13:32]: ▸ | Installation Source         | ~/build/company/iOS/vendor/bundle/ruby/2.3.0/bin/fastlane |
[14:13:32]: ▸ | Host                        | Mac OS X 10.12.1 (16B2555)                                 |
[14:13:32]: ▸ | Ruby Lib Dir                | ~/.rvm/rubies/ruby-2.3.1/lib                               |
[14:13:32]: ▸ | OpenSSL Version             | OpenSSL 1.0.2j  26 Sep 2016                                |
[14:13:32]: ▸ | Is contained                | false                                                      |
[14:13:32]: ▸ | Is homebrew                 | false                                                      |
[14:13:32]: ▸ | Is installed via Fabric.app | false                                                      |
[14:13:32]: ▸ | Xcode Path                  | /Applications/Xcode.app/Contents/Developer/                |
[14:13:32]: ▸ | Xcode Version               | 8.2                                                        |
[14:13:32]: ▸ ### System Locale
[14:13:32]: ▸ | Variable | Value       |   |
[14:13:32]: ▸ | -------- | ----------- | - |
[14:13:32]: ▸ | LANG     | en_US.UTF-8 | ✅ |
[14:13:32]: ▸ | LC_ALL   | en_US.UTF-8 | ✅ |
[14:13:32]: ▸ | LANGUAGE |             |   |
[14:13:33]: ▸ ### fastlane gems
[14:13:33]: ▸ | Gem      | Version | Update-Status |
[14:13:33]: ▸ | -------- | ------- | ------------- |
[14:13:33]: ▸ | fastlane | 2.56.0  | ✅ Up-To-Date  |
[14:13:33]: ▸ ### Loaded fastlane plugins:
[14:13:33]: ▸ No plugins Loaded
[14:13:33]: ▸ Loaded gems
[14:13:33]: ▸ | Gem                       | Version      |
[14:13:33]: ▸ | ------------------------- | ------------ |
[14:13:33]: ▸ | io-console                | 0.4.5        |
[14:13:33]: ▸ | CFPropertyList            | 2.3.5        |
[14:13:33]: ▸ | i18n                      | 0.8.6        |
[14:13:33]: ▸ | minitest                  | 5.10.3       |
[14:13:33]: ▸ | thread_safe               | 0.3.6        |
[14:13:33]: ▸ | tzinfo                    | 1.2.3        |
[14:13:33]: ▸ | activesupport             | 4.2.9        |
[14:13:33]: ▸ | public_suffix             | 2.0.5        |
[14:13:33]: ▸ | addressable               | 2.5.2        |
[14:13:33]: ▸ | babosa                    | 1.0.2        |
[14:13:33]: ▸ | bundler                   | 1.15.4       |
[14:13:33]: ▸ | claide                    | 1.0.2        |
[14:13:33]: ▸ | colored                   | 1.2          |
[14:13:33]: ▸ | colored2                  | 3.1.2        |
[14:13:33]: ▸ | highline                  | 1.7.8        |
[14:13:33]: ▸ | commander-fastlane        | 4.4.5        |
[14:13:33]: ▸ | declarative               | 0.0.10       |
[14:13:33]: ▸ | declarative-option        | 0.1.0        |
[14:13:33]: ▸ | unf_ext                   | <IP_ADDRESS>      |
[14:13:33]: ▸ | unf                       | 0.1.4        |
[14:13:33]: ▸ | domain_name               | 0.5.20170404 |
[14:13:33]: ▸ | dotenv                    | 2.2.1        |
[14:13:33]: ▸ | excon                     | 0.59.0       |
[14:13:33]: ▸ | multipart-post            | 2.0.0        |
[14:13:33]: ▸ | faraday                   | 0.13.1       |
[14:13:33]: ▸ | http-cookie               | 1.0.3        |
[14:13:33]: ▸ | faraday-cookie_jar        | 0.0.6        |
[14:13:33]: ▸ | faraday_middleware        | 0.12.2       |
[14:13:33]: ▸ | fastimage                 | 2.1.0        |
[14:13:33]: ▸ | gh_inspector              | 1.0.3        |
[14:13:33]: ▸ | jwt                       | 1.5.6        |
[14:13:33]: ▸ | little-plugger            | 1.1.4        |
[14:13:33]: ▸ | multi_json                | 1.12.2       |
[14:13:33]: ▸ | logging                   | 2.2.2        |
[14:13:33]: ▸ | memoist                   | 0.16.0       |
[14:13:33]: ▸ | os                        | 0.9.6        |
[14:13:33]: ▸ | signet                    | 0.7.3        |
[14:13:33]: ▸ | googleauth                | 0.5.3        |
[14:13:33]: ▸ | httpclient                | 2.8.3        |
[14:13:33]: ▸ | mime-types-data           | 3.2016.0521  |
[14:13:33]: ▸ | mime-types                | 3.1          |
[14:13:33]: ▸ | uber                      | 0.1.0        |
[14:13:33]: ▸ | representable             | 3.0.4        |
[14:13:33]: ▸ | retriable                 | 3.1.1        |
[14:13:33]: ▸ | google-api-client         | 0.13.6       |
[14:13:33]: ▸ | json                      | 2.1.0        |
[14:13:33]: ▸ | mini_magick               | 4.5.1        |
[14:13:33]: ▸ | multi_xml                 | 0.6.0        |
[14:13:33]: ▸ | plist                     | 3.3.0        |
[14:13:33]: ▸ | rubyzip                   | 1.2.1        |
[14:13:33]: ▸ | security                  | 0.1.3        |
[14:13:33]: ▸ | slack-notifier            | 1.5.1        |
[14:13:33]: ▸ | terminal-notifier         | 1.8.0        |
[14:13:33]: ▸ | unicode-display_width     | 1.3.0        |
[14:13:33]: ▸ | terminal-table            | 1.8.0        |
[14:13:33]: ▸ | tty-screen                | 0.5.0        |
[14:13:33]: ▸ | word_wrap                 | 1.0.0        |
[14:13:33]: ▸ | nanaimo                   | 0.2.3        |
[14:13:33]: ▸ | xcodeproj                 | 1.5.1        |
[14:13:33]: ▸ | rouge                     | 2.0.7        |
[14:13:33]: ▸ | xcpretty                  | 0.2.8        |
[14:13:33]: ▸ | xcpretty-travis-formatter | 0.0.4        |
[14:13:33]: ▸ | ffi                       | 1.9.18       |
[14:13:33]: ▸ | mustache                  | 0.99.8       |
[14:13:33]: ▸ | mini_portile2             | 2.2.0        |
[14:13:33]: ▸ | nokogiri                  | 1.8.0        |
[14:13:33]: ▸ | redcarpet                 | 3.4.0        |
[14:13:33]: ▸ | rb-fsevent                | 0.10.2       |
[14:13:33]: ▸ | rb-inotify                | 0.9.10       |
[14:13:33]: ▸ | sass-listen               | 4.0.0        |
[14:13:33]: ▸ | sass                      | 3.5.1        |
[14:13:33]: ▸ | jazzy                     | 0.0.14       |
[14:13:33]: ▸
[14:13:33]: ▸ generated on: 2017-09-13
[14:13:33]: ▸

Hey @Sega-Zero! Would you mind sharing the output of running that same lane with --verbose so we can see the stack trace and some more context around the issue? Thank you!! 🚀

This happens very random. Caught that 4 times yesterday and none today. Cannot turn on --verbose forever, travis log drops all info after 10k lines, that's not comfortable for my team.

Ah totally understand that that is really frustrating. Apple's APIs have been having intermittent issues this week. Probably due to some internal changes they are making for the new releases. I'm glad to hear that you are not getting it today. I am going to close this issue for now, but please reopen it with the stack trace when if/when it reproduces. Thanks a lot! 🐙


write_file() log says it wrote to file when file was unchanged

write_file() will log when it writes to an existing file with the same content
Instead it shouldn't write to the file at all if the content is identical
PRs

https://github.com/silverstripe/module-standardiser/pull/8

PR merged


Are we overreporting bad blocks?

We store max 100, geth stores max 10.
Other ELs don't report them at all?
Do we record bad blocks when geth doesn't?

Yes, we are over-reporting. Changing it as part of #5058


Call for help: New website

I have come to the conclusion that the website (www.saltarelle-compiler.com) is not as good as the project deserves. This is an open thread where everyone can pitch in their ideas of what should be on the new site once it is created:
Some ideas of mine:

The layout needs to be replace (with what?). Should probably use Bootstrap.
Improved libary list: Should be able to show version history for libraries. Everyone should be able to add a library to the list (by creating an account on the site).
Examples and tutorials (the more the better)
Forum (replace the current one).
"Try It", a textbox where you write C# and see the generated JS. Bonus points if we can compile NRefactory and run it in the browser to provide auto-completion and syntax highlighting, but I have a feeling that it would be a sh*tload of work.
Tutorial videos.

Also, if you are willing to help with this, you are very welcome.

Looks like this issue can be safely closed as Bridge.NET and Deck.NET seem to implement much of what is discussed in this thread.


Support Service display names

Convert sample Light accessory to new API

Looks Nice. One small problem, HomeKit suggests developer to use "name" characteristic to decide if the service should be displayed to user... We shouldn't include "name" characteristic in all services.

Ok let me think on this a bit...

(force pushed) is that more as it should be?

Added some examples of service names in Light/Lock.


Small fixes to docs & init

removed useless commas from import
Moved ResultResponse to its origin
Add Method to init + all, so it fits the docs

Thanks your for your submission. Still not sure how those sneaky commas got in there.


Add readme

that tells about the project and how to use it.
and the following -
list of websites you take the news articles from.
List of techniques tried and what works the best
Current best performing model being used.

Fixed with the latest commit

Readme is added and is being worked on to improve it.


Enforce rate limit if not configured from external

When max_req_per_second is not set on config, we do not enforce any rate limit.
This can cause IB Gateway to hang up if the App sends out too many requests simultaneously.
This change enforces a 40 message per second limit (official TWS limit is 50).
This is only is a simply send [n] chunks than wait for the rest of the second algorithm, so it send a burst of messages first and than it wait for next tick.
I will keep a close eye on it to see if still get those Gateway hangs - if yes, we might need to add a traffic-shaping to get rid of the msg-burst and distributed packages evenly across the send-timeframe... but up to now it looks ok. No more hangs when I push my 100 market data requests into the API all at once.

Ok, managed to hang up Gateway again, but it has nothing todo with rate limit anymore. For some reason Gateway doesn't detect the closed connection on goes tilt trying to write into broken socket.
I will have a look on that, think we need to gracefully-close the socket on process termination somehow. Also it might be a good idea to start client on a random number, so that after a re-start we do not same client id again (and fail to connect because client id still is connected according to TWS).
Anyhow.. not related to this, so merging it.


Add docs for 64-bit apps on Azure App Service

As of 2.2, we're deploying the 64-bit runtime to Azure App Service. 64-bit is now fully supported for in-process hosting.
The SDK deployed to Antares continues to 32-bit, but that doesn't prevent you from publishing 64-bit apps via kudu.

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

ID: a2eab542-a420-d6c5-d314-a420837cf602
Version Independent ID: 48c12168-54f3-0b83-f136-565f483a03e9
Content: Deploy ASP.NET Core apps to Azure App Service
Content Source: aspnetcore/host-and-deploy/azure-apps/index.md
Product: aspnet-core
GitHub Login: @guardrex
Microsoft Alias: riande

via kudu

... or a publish profile with VS.
I suppose the best spot for this is in the Application configuration section of the overview topic: https://docs.microsoft.com/aspnet/core/host-and-deploy/azure-apps#application-configuration


Is there any type guards?

Is your feature request related to a problem? Please describe.
I imported plantuml-parser in my Next.js app, and I need some of type guards.
Now I just written a piece of type guards(only for what I need), and they are in my app project.
eg.   When I render UML in browser,

classify between interface and class to show some icon
classify between methods and member variable to separate div tag

Describe the solution you'd like

As far as I have been able to find in the repository, it does not appear that type guards are provided.
If I am mistaken and  type guards already exists in the project, please let me know.

May I create a pull request to add the type guard I coded?
It might help other users. (although it may not be necessary)
Currently I have only created type guards for a few classes I need, but
I consider that I can create type guards for all types defined in types.d.ts.

Here is an example of what I have created;
const isMethod = (maybeMethod: Object): maybeMethod is Method => {
  return (
    hasPrimitive(maybeMethod, 'name', 'string') &&
    hasPrimitive(maybeMethod, 'isStatic', 'boolean') &&
    hasStringLiteral(maybeMethod, 'accessor', isAccessor) &&
    hasPrimitive(maybeMethod, 'returnType', 'string') &&
    hasPrimitive(maybeMethod, '_arguments', 'string')
  );
};

const isMemberVariable = (maybeMemberVariable: Object): maybeMemberVariable is MemberVariable => {
  return (
    hasPrimitive(maybeMemberVariable, 'name', 'string') &&
    hasPrimitive(maybeMemberVariable, 'isStatic', 'boolean') &&
    hasStringLiteral(maybeMemberVariable, 'accessor', isAccessor) &&
    hasPrimitive(maybeMemberVariable, 'type', 'string')
  );
};

const isMember = (maybeMember: Object): maybeMember is Member => {
  return isMethod(maybeMember) || isMemberVariable(maybeMember);
};

// how to use
const renderClass = (c: Class) => {
  const variables = c.members.filter(member => isMemberVariable(member));
  const methods = c.members.filter(member => isMethod(member));

  return

{c.title}

    {variables.length > 0 &&

properties

{variables.map(v =>
{v.name}
)}

}
    {methods.length > 0 &&

methods

{methods.map(m =>
{m.name}
)}

}

}

Hello @hache9669 , and thank you for this issue.
You are right. There are no such type guards provided for any types in this project.
If you have a set of helpful typeguards and are willing to extend those to cover all types in this project. I am more than happy to review and merge a pull request for this :+1: .  i think the only point to discuss would be how we can easily integrate testing for those guards.


Project Status

I'm submitting a ...
[ ] bug report
[ ] feature request
[X] question about the decisions made in the repository
[ ] question about how to use this project

Summary
Just wondering what the status of the project is?

When starting a new project I try to use the latest versions of all packages and I notice that TypeScript for example is still using version 3.5.3.
Thanks!

same question... I really love this project personally.

I just cloned the project and ran npm run build without modifying anything and it fails with

I just cloned the project and ran npm run build without modifying anything and it fails with

update Ava dependency and it will resolve this problem.
they have fixed this issue after 3.x version but typescript-starter has old dependencies, so this is the reason that it does not work..
for more info: https://github.com/avajs/ava/pull/2308

Upgrading ava solved this problem, for me.
But now I get an error when I run npm run watch:
  ✖ ’sources’ has been removed. Use ’ignoredByWatcher’ to provide glob patterns of files that the watcher should ignore.

@magick93 tl;dr you can delete these three lines from your package.json to fix that:
  "ava": {
    "failFast": true,
    "files": [
      "build/main/**/*.spec.js"
-    ],
-    "sources": [
-      "build/main/**/*.js"
    ]
  },

In Ava 3, an ignoredByWatcher array replaces the sources array but it acts in the opposite way. Instead of watching the specified files, all files are watched except those specified in the ignoredByWatcher array.

Hey everyone, sorry to keep you waiting on updates! typescript-starter has been upgraded to the latest version of all dependencies, and there are a few new improvements 🚀

migrated from tslint (deprecated) to eslint
added optional support for cspell checking
switch to AVA's new built-in debugging mode (for easier debugging in vscode)

Please open an issue if you notice any problems!


AttributeError when calling vanilla.TextEditor.enable(onOff)

Hi, when I do this:
self.w.textEditor = TextEditor((10, 10, 200, 200), "text")
self.w.textEditor.enable(False)

I get an:
File "/Applications/RoboFont.app/Contents/Resources/lib/python3.6/vanilla/vanillaBase.py", line 115, in enable
    self._nsObject.setEnabled_(onOff)
AttributeError: 'NSScrollView' object has no attribute 'setEnabled_'

Try EditText instead of TextEditor. Only certain controls support disabling, and the vanilla API isn't quite clear about that. Not sure how to solve this, but it's an interesting issue.

For what I need, that works, thanks. I didn't know that EditText supports multiline text.
I suppose TextEditor.enable(onOff) can be taken off the documentation for now—but I'm also not sure how up-to-date the doc is anyway.

yeah enable(value) is a method in the parent vanillaBaseClass... so that is the reason why its ending up in the docs.
I guess the best option is to move enable(value) from the vanillaBase to the VanillaBaseControl
https://github.com/typesupply/vanilla/blob/master/Lib/vanilla/vanillaBase.py#L111
similar to the method isEnabled()
An other option could be raise an error in the TextEditor subclass, and have an adjusted doc string, so it can be documented as such.

a combo of setEditable_, setSelectable_ and setAlphaValue_ mimics setEnabled_
from vanilla import *

w = Window((180, 260))
w.l = List((0, 0, 0, 0), [])
w.button1 = Button((10, 10, 160, 24), "Button Enabled")
w.button2 = Button((10, 50, 160, 24), "Button Disabled")
w.button2.enable(False)
w.et1 = EditText((10, 90, 160, 24), "EditText Enabled")
w.et2 = EditText((10, 130, 160, 24), "EditText Disabled")
w.et2.enable(False)
w.te1 = TextEditor((10, 170, 160, 26), "TextEditor Editable")
w.te2 = TextEditor((10, 210, 160, 26), "TextEditor not Editable")

# disable edits
w.te2._textView.setEditable_(False)
# disable selectable
w.te2._textView.setSelectable_(False)
# draw opaque
w.te2._textView.setAlphaValue_(.2)
w.open()

I used @typemytype's suggestion:
import vanilla

w = vanilla.Window((200, 200))
w.te = vanilla.TextEditor((0, 0, 0, 0), "Testing.")
w.te.enable(False)
w.open()


Mark the model API as officially deprecated

It's been unofficially deprecated for a while, and we need to let
users know what to do instead.

This change is

cc @kubernetes/heapster-maintainers

/lgtm


Total number of operators does not update when redoing search in new area

Minor issue with the caption on the Operators list.
To reproduce:

Search for Oakland, California.
Click Show Operators. The caption on the drop-down list says "7 operators".
Zoom out to see the whole Bay Area.
Click Redo search.
The map updates to show many more operators, but the drop-down list still says "7 operators". All the individual operators (there are about 40) are in the list.

Thanks for noticing this, @rmglennon!


Date selected in popup does not gets set in input field

I am currently using Angular 4. Integrated the module from the steps mentioned but when I select the date it is not getting set in the input field.
My input field is part of form.
Code Snippet:
<input "class = "form-control" formControlName ="test" [dateTimePicker]="test" (dateTimePickerChange)="setMoment($event)" readonly />
The date is present when printed from "setMoment" but the input box remains empty

you have to bind your variable to your input value


As a user, I want to see progress posted when stats is being collected.

Ideally user should not be watching the screen when stat is collected.
But it would be nice to see progress show when it is going to 100+ items! :-)

Possible contender
██▒░░░░░░ 26%

50% ░░░░░█████ 100%

50%
███████▒▒▒

Inspirations

https://www.npmjs.com/package/ascii-progress
https://github.com/superjojo140/ascii-bar
https://github.com/ctongfei/progressbar

Ended up using https://github.com/ctongfei/progressbar 🙌🏽

Followup PRs

#141
#142
#143


Use better asserts in voting lib

Supersedes #90 and #206
Closes #85

looks good, found one more one:
https://github.com/snapshot-labs/sx-core/blob/1551fbd2e2ee44220aa61af1a79bfcdd64bedc82/contracts/starknet/lib/voting.cairo#L440
If proposal doesnt exist then the vote will fail with "Voting has not started yet" so we should add an assert not zero


Unable to load css from azure-devops-ui library in my extension

I am trying to run azure-devops-extension-sample hub extension but It seems all css files are not loaded properly.
Any configuration is missed in the "webpack.config.js" file?
Here is the screenshot of my extension. button not loaded with default css.

I have the same problem. I tried a lot of things, but I couldn't get it to work. It seems that the CSS is transpiled into the component/js. Also, the HTML tags have the correct attributes like  but for some reason the style is not applied.


Generate sample analytics data & measure request/response timings for larger time range

Def. of done

[ ] Generate sample analytics data (that much, so it's enough for metrics collection)
[ ] Collect metrics for following date-ranges:

[ ] 6 months
[ ] 12 months
[ ] 1.5 year
[ ] 2 years

Done. Closing the issue.


In some cases, plugins cannot be used

Hi, I can use this plugin to preview numpy images normally in most cases. However, in some projects the plugin cannot be used. The phenomenon is that when the mouse is placed on the numpy variable, no matter how long it takes, the "view image" option will not pop up. I have found that in this situation, some strange logs will appear, as follows:
Backend TkAgg is interactive backend. Turning interactive mode on. [10/09 13:02:15]
Value(False) [10/09 13:02:16]
Value(False) [10/09 13:02:16]
Value(False) [10/09 13:02:16]
Value(False) [10/09 13:02:17]
Value(False) [10/09 13:02:17]
Value(False) [10/09 13:02:18]

The Backend TkAgg is interactive backend. Turning interactive mode on may also appear in other projects, but plugins can be used normally.

There are few things to check:

Please set the log to verbose via the settings and upload it here. It may be found in the VSCode "Output" tab in the panel.

The extension as also a tree-view in the debug view, please see if it has variables etc, and whether it can be used.

There's also a command in the command-palette, View Image, please try it and upload the log afterward.

Thanks

The log
13-View Image for Python.log

There is no available variable to view

The log after try View Image command
13-View Image for Python.log

Thanks. I'll start to look into it. I haven't found anything helpful enough in the log (means I need to improve my logs :) ), so I'm going to work toward better logs and also display errors/suggestions to the user. Hopefully to be done in the next week or two.
I have a suspicion which I need to check, but first I have to be able to reproduce it on my side. Does it happen even on a small-scale script? a deep-learning training session? multi-processing/threading?
In the meanwhile, there another command that I forgot about, Debug View Python: Run Setup, which forces the extension to re-rerun the python code it need for working. Please try that as well and see if it helps. If not, please upload the log after running it, might have additional information.

I've uploaded a pre-release version 4.0.3 of the extension with improved error messages etc.
Please try it and see if this can shed new information on the issue.

Hi, this is the log produced by pre-release 4.0.3
8-View Image for Python.log

Thanks. That might help further diagnose the problem.
I can see from the logs that the extension setup in the python side is indeed failing. It seems the setup is trying to run (repeatedly) but it seems it doesn't work at all (request to the debugger is emitted, but I got no informative error).
I have 2 questions for now, please:

Did you run the Debug View Python: Run Setup command after the breakpoint is hit? Please let the debugger settle before trying it, I want to see if the debugger is deciding from some reason to not execute the setup at all.
I want to try to reproduce it on my side:

Does this issue consistent, s.t. it always occurs on some scripts, while on other it works?
Does this issue happen during a multi-processing/multi-threading session?
Can you define or guess what scenarios it fails? What does change between the scenarios (different environment, script, deep-learning vs other stuff)?

For reference, I'm attaching the code I'm running on the python side that enables the extension. You can run it in the debug console and see if it works when you manually does that.
Setup Code

_python_view_image_mod_setup_result = "Starting setup"
try:
    _python_view_image_mod_setup_result = "Checking if module exists"
    _python_view_image_mod
    _python_view_image_mod_setup_result = "OK"
except:
    from types import ModuleType

    _python_view_image_mod_setup_result = "Creating module"
    _python_view_image_mod = ModuleType("python_view_image_mod", "")
    try:
        _python_view_image_mod_setup_result = "Running common setup"
        exec(
            """def keyvalue(pair):
    key, value = pair
    return f"{stringify(key)}: {stringify(value)}"

def sanitize(s):
    # s.replace(\\"'\\", \\"\\\\'\\").replace('\\"', '\\\\\\"')
    return s.replace("'", "").replace('"', '')

def stringify(value):
    if isinstance(value, list):
        return f"[{','.join(map(stringify, value))}]"
    elif isinstance(value, tuple):
        return f"({','.join(map(stringify, value))})"
    elif isinstance(value, dict):
        return f"{{{ ','.join(map(keyvalue, value.items())) }}}"
    elif isinstance(value, str):
        if value.startswith("Value(") or value.startswith("Error("):
            return value  # keep Value/Error without wrapping quoted
        else:
            return f'"{sanitize(value)}"'
    elif isinstance(value, Exception):
        return f'"{type(value).__name__}: {sanitize(str(value))}"'
    else:
        return str(value)

def eval_into_value(func):
    try:
        return f"Value({stringify(func())})"
    except Exception as e:
        return f"Error({stringify(e)})"

def eval_or_return_exception(func):
    try:
        return func()
    except Exception as e:
        return e

def same_value_multiple_callables(get_value, funcs):
    try:
        val = get_value()
        return [eval_into_value(lambda: f(val)) for f in funcs]
    except Exception as e:
        return [f"Error({stringify(e)})"] * len(funcs)

def object_shape_if_it_has_one(obj):
    if hasattr(obj, "shape"):
        shape = obj.shape
        return tuple(shape)
    elif hasattr(obj, "width") and hasattr(obj, "height") and hasattr(obj, "getbands"):
        bands = "".join(map(str, obj.getbands()))
        return {"width": obj.width, "height": obj.height, "channels": bands}
    else:
        return None
""",
            _python_view_image_mod.__dict__,
        )
    except Exception as e:
        _python_view_image_mod_setup_result = repr(e)
        del _python_view_image_mod
    else:
        _python_view_image_mod_setup_result = "Common setup no exceptions"
        try:
            _python_view_image_mod_setup_result = "Running socket client setup"
            exec(
                """import socket
import sys
import traceback
import struct
import numpy as np

MIN_INT32 = np.iinfo(np.int32).min
MAX_INT32 = np.iinfo(np.int32).max
MIN_UINT32 = np.iinfo(np.uint32).min
MAX_UINT32 = np.iinfo(np.uint32).max
MIN_FLOAT32 = np.finfo(np.float32).min
MAX_FLOAT32 = np.finfo(np.float32).max

DATATYPE_64BIT = ("int64", "uint64", "float64")
CORRESPONDING_32BIT_TYPE = {
    "int64": np.int32,
    "uint64": np.uint32,
    "float64": np.float32,
}

CHUNK_SIZE = 4 * 1024  # 4KB

# See webview/communication/protocol.ts for message format
PythonSender = 0x02
# MessageType
PythonSendingObject = 0x01
# ObjectType
NumpyArray = 0x01
ExceptionObject = 0xff
# ByteOrderType
LittleEndian = 0x01
BigEndian = 0x02
# ArrayDataType
UndefinedDatatype = 0x00
Float32 = 0x01
Float64 = 0x02
Int8 = 0x03
Int16 = 0x04
Int32 = 0x05
Int64 = 0x06
Uint8 = 0x07
Uint16 = 0x08
Uint32 = 0x09
Uint64 = 0x0a
Bool = 0x0b
# DimensionOrder
HWC = 0x01
CHW = 0x02
# ExceptionType
ExceptionTypes = {
    BaseException: 0x01,
    Exception: 0x02,
    RuntimeError: 0x03,
    TypeError: 0x04,
    ValueError: 0x05,
    None: 0xff,  # Unknown exception
}

MessageLengthType = np.uint32
MessageIdType = np.uint32
SenderType = np.uint8
MessageType = np.uint8
RequestIdType = np.uint32
ChunkCountType = np.uint32
ChunkIndexType = np.uint32
ChunkLengthType = np.uint32

ObjectIdType = np.uint32
ObjectType = np.uint8
StringLengthType = np.uint32
NumDimsType = np.uint8
DimType = np.uint32
ByteOrderType = np.uint8
StatsType = np.float32

array_dtype_to_array_data_type = {
    "float32": Float32,
    "float64": Float64,
    "int8": Int8,
    "int16": Int16,
    "int32": Int32,
    "int64": Int64,
    "uint8": Uint8,
    "uint16": Uint16,
    "uint32": Uint32,
    "uint64": Uint64,
    "bool": Bool,
    "bool_": Bool,
}

BYTE_ORDER = LittleEndian if sys.byteorder == 'little' else BigEndian

def generate_message_id():
    rng = np.random.default_rng()
    return rng.integers(0, 2**32, dtype=np.uint32)

def chunk_header(
    message_length,
    message_id,
    request_id,
    chunk_count,
    chunk_index,
    chunk_length,
):
    message_length = MessageLengthType(message_length)
    message_id  = MessageIdType(message_id)
    sender = SenderType(PythonSender)
    request_id = RequestIdType(request_id)
    message_type = MessageType(PythonSendingObject)
    chunk_count = ChunkCountType(chunk_count)
    chunk_index = ChunkIndexType(chunk_index)
    chunk_length = ChunkLengthType(chunk_length)

    # Create the message
    header = [
        message_length,
        message_id,
        sender,
        request_id,
        message_type,
        chunk_count,
        chunk_index,
        chunk_length,
    ]
    # print({
    #     'message_length': message_length,
    #     'message_id': message_id,
    #     'sender': sender,
    #     'request_id': request_id,
    #     'message_type': message_type,
    #     'chunk_count': chunk_count,
    #     'chunk_index': chunk_index,
    #     'chunk_length': chunk_length,
    # })

    # Create the message format string
    header_format = f'!IIBIBIII'

    return struct.pack(header_format, *header)

def is_64bit(array):
    return str(array.dtype) in DATATYPE_64BIT

def check_can_fit_in_32bit(array_64bit):
    corresponding_32bit_type = CORRESPONDING_32BIT_TYPE.get(str(array_64bit.dtype), None)
    if corresponding_32bit_type is None:
        return False
    array_min = np.min(array_64bit)
    array_max = np.max(array_64bit)
    return array_min >= MIN_INT32 and array_max <= MAX_INT32

def guess_image_dimensions(image):
    if not isinstance(image, np.ndarray):
        return None
    shape = image.shape

    if len(shape) < 2:
        return None

    if len(shape) == 2:
        return { 'width': DimType(shape[1]), 'height': DimType(shape[0]),'channels': DimType(1), 'order': HWC }

    if len(shape) == 4 and shape[0] == 1:
        # A batched image
        image = image[0]

    if len(shape) == 3:
        if shape[2] > 4:
            # Possibly a channel first image
            if shape[0] > 4:
                return None
            return { 'width': DimType(shape[2]), 'height': DimType(shape[1]), 'channels': DimType(shape[0]), 'order': CHW }
        else:
            return { 'width': DimType(shape[1]), 'height': DimType(shape[0]), 'channels': DimType(shape[2]), 'order': HWC }

    return None

def array_stats(array):
    if not isinstance(array, np.ndarray):
        return None
    shape = array.shape
    ndims = len(array.shape)

    if ndims < 2:
        return None

    if ndims == 2 or (ndims == 3 and shape[2] == 1):
        return { 'min': [StatsType(np.nanmin(array))], 'max': [StatsType(np.nanmax(array))] }

    if ndims == 4 and shape[0] == 1:
        # assume batched image
        image = array[0]

    if ndims == 3:
        # per channel stats
        if shape[2] > 4:
            # Possibly a channel first image
            if shape[0] > 4:
                return None
            return { 'min': StatsType(np.nanmin(array, axis=(1,2))), 'max': StatsType(np.nanmax(array, axis=(1,2))) }
        else:
            return { 'min': StatsType(np.nanmin(array, axis=(0,1))), 'max': StatsType(np.nanmax(array, axis=(0,1))) }

    return None

def create_numpy_message(
    array: np.ndarray,
):

    object_type     = ObjectType(NumpyArray)
    array_dtype     = array_dtype_to_array_data_type[str(array.dtype)]
    actual_datatype = UndefinedDatatype
    byte_order      = ByteOrderType(BYTE_ORDER)
    num_dimensions  = NumDimsType(len(array.shape))
    array_shape     = np.array(array.shape, dtype=DimType)

    dimensions = guess_image_dimensions(array) or {}
    w = dimensions.get('width', DimType(0))
    h = dimensions.get('height', DimType(0))
    c = dimensions.get('channels', DimType(0))
    order = dimensions.get('order', None)

    stats = array_stats(array) or {}
    min_stats = stats.get('min', [])
    max_stats = stats.get('max', [])
    assert len(min_stats) == len(max_stats)
    num_stats = len(min_stats)

    # The webview only supports up to 32 bit integers and floats. If the array is 64 bit, try to convert it to 32 bit.
    if is_64bit(array) and check_can_fit_in_32bit(array):
        array = array.astype(CORRESPONDING_32BIT_TYPE[str(array.dtype)])
        actual_datatype = array_dtype_to_array_data_type[str(array.dtype)]

    array_data = array.tobytes('C')

    metadata = [
        object_type,
        array_dtype,
        actual_datatype,
        byte_order,
        num_dimensions,
        *array_shape,
        w,
        h,
        c,
        order,
        num_stats,
        *min_stats,
        *max_stats,
    ]

    # add padding before the array data, making sure the offset is a multiple of the element size
    # metadata_size = 1 + 1 + 1 + 1 + num_dimensions * 4
    # bytes_per_element = array.dtype.itemsize
    # message_length_placeholder = 4
    # padding_size =  (bytes_per_element - (header_size + message_length_placeholder) % bytes_per_element) % bytes_per_element
    # padding = bytes(padding_size)

    message = [
        *metadata,
        array_data,
    ]

    # Create the message format string
    message_format = f'!BBBBB{num_dimensions}IIIIBB{num_stats}f{num_stats}f{len(array_data)}s'

    # Pack the message
    message_pack = struct.pack(message_format, *message)

    return message_pack

def create_pillow_message(
    image,
):
    image_np = np.asarray(image)
    return create_numpy_message(image_np)

def string_to_message(s):
    length = StringLengthType(len(s))
    bytes = s.encode()
    return (length, bytes)

def create_exception_message(
    exception: Exception,
):
    exception_type_name = getattr(type(exception), '__name__', 'Unknown')
    exception_message = str(exception)

    object_type = ObjectType(ExceptionObject)
    (exception_type_length, exception_type) = string_to_message(exception_type_name)
    (exception_message_length, exception_message) = string_to_message(exception_message)

    message = [
        object_type,
        exception_type_length,
        exception_type,
        exception_message_length,
        exception_message,
    ]

    # Create the message format string
    message_format = f'!BI{exception_type_length}sI{exception_message_length}s'

    # Pack the message
    message_pack = struct.pack(message_format, *message)

    return message_pack

    # Create the message body
    exception_type = ExceptionTypes.get(type(exception), ExceptionTypes[None])
    exception_message = traceback.format_exc().encode()

    # Create the message
    message = [
        message_type,
        request_id,
        object_id,
        object_type,
        exception_type,
        exception_message,
    ]

    # Create the message format string
    message_format = f'!BIIBB{len(exception_message)}s'

    # Pack the message
    message_pack = struct.pack(message_format, *message)

    return message_pack

def message_chunks(
    message_length,
    message_id,
    request_id,
    message,
):
    loc = 0
    chunk_count = len(message) // CHUNK_SIZE + 1
    for chunk_index in range(chunk_count):
        data = message[loc:loc+CHUNK_SIZE]
        chunk_length = len(data)
        header = chunk_header(
            message_length,
            message_id,
            request_id,
            chunk_count,
            chunk_index,
            chunk_length,
        )
        loc += CHUNK_SIZE
        yield header + data

def open_send_and_close(port, request_id, obj):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.connect(('localhost', port))

        try:
            if isinstance(obj, np.ndarray):
                message = create_numpy_message(obj)
            elif is_pillow_image(obj):
                message = create_pillow_message(obj)
            else:
                raise ValueError(f'Cant send object of type {type(obj)}')
        except Exception as e:
            message = create_exception_message(e)

        message_length = len(message)

        # Send the message data
        message_id = generate_message_id()
        # print(f'Sending message {message_id}')
        chunks = message_chunks(message_length, message_id, request_id, message)

        all_data = b''

        # Send the message
        for chunk in chunks:
            s.sendall(chunk)
            all_data += chunk

        # Close the socket
        s.close()""",
                _python_view_image_mod.__dict__,
            )
        except Exception as e:
            _python_view_image_mod_setup_result = repr(e)
        else:
            _python_view_image_mod_setup_result = "Socket client setup no exceptions"

            _python_view_image_mod_setup_result = "OK"

finally:
    globals()["_python_view_image_mod_setup_result"] = (
        _python_view_image_mod_setup_result
    )

Yes, I run Debug View Python: Run Setup command after the breakpoint is hit, then there will be some log on the console
Value(False) [19/09 10:53:02]
Value(False) [19/09 10:53:03]
Value(False) [19/09 10:53:05]
Value(False) [19/09 10:53:09]

And after a while, there will be an error

Does this issue consistent, s.t. it always occurs on some scripts, while on other it works?
YES

Does this issue happen during a multi-processing/multi-threading session?
Not very sure, but I think it is a single-threading code

Can you define or guess what scenarios it fails? What does change between the scenarios (different environment, script, deep-learning vs other stuff)?
It is a deep-learning code. This plugin was working fine in one project at first, but it stopped working one day. I don't know what I did. However, I used the same python environment in another project, the plugin worked fine.

That's a tough one..
Did you see the code I added in the previous message? Can you try to run it? This is the same code I'm running to set up the python side of the extension.
If it's working when you run it manually, then it basically means the issue is not with the code+environment, but something to do with either how I'm calling the debugger, or something related to it.
Also, if it's working, you can actually use it as a workaround to make the extension work. The extension only needs the module named _python_view_image_mod available in the global scope, which I create in the setup code (with all the utilities I'm adding to it).

I often get the "Not ready" message next to my Expressions, and an empty Variables section. The error message, using the pre-release version is:

Running your code in the above reply does not seem to help


Include IAM pivot role as part of the environment CDK stack

Is your idea related to a problem? Please describe.
I am always frustrated when the pivot role needs a new policy and I have to manually update the pivot role in all my data.all environment accounts.
Describe the solution you'd like
I would like an automatic way of creating and updating the IAM pivot role. As a suggestion, we could add it as part of the environment CDK stack. The downside of this is that we loose the explicit granting to data.all access to the account.
With the manual creation of the pivot role we ensure that an account manager has to create this role before data.all links it as an environment. However, this control is also present in the --trust of the bootstraping command that prevents data.all to deploy stacks in the chosen account. For this reason we could afford to add the pivot role in the environment stack and remove the manual creation of it.
In addition, this feature should also be backwards compatible with accounts that created the pivot role independently from the environment stack.

Hi @dosiennik, I am reviewing the code pieces that you added to the branch. Thank you for the contribution! I have rebased the branch onto v1.4.0 to get the latest changes.
There are 2 TODOs that you pointed out where we use the pivotRole to execute SDK calls directly from the environment stack. I am adding those points here for visibility and to discuss them:

Creation of Quicksight default group "dataall". Quicksight groups are used:
a) to add QS users when we register them. In this case we also check the existance of the default QS group and create it if the QS group does not exist --> not affected by removing QS group creation from environment
b) when a dataset is created we grant LF permissions to this group. As with the case a) we check if the group exists directly in the dataset stack (check cdkproxy/stacks/dataset.py) --> not affected by removing QS group creation from environment
c) !!!! when tables are shared we grant LF permissions to the requester account QS group. In this case we are directly adding the target QS group as principal in the share request (e.g. /backend/dataall/tasks/data_sharing/share_processors/lf_process_cross_account_share.py V1.4.0) If the QS group does not exist I am not sure how LakeFormation will treat it. --> I think we should do the same as with a) and b) and create the QS group in the target if it does not exist.

As a final note: We use one single QS group per AWS account, which does not follow the ata.all principle of data access at team level. This is legacy from the initial implementation, but in the future QS groups should match data.all teams. In other words, the changes in c) will help us whenever we want to implement this QS change.

check_sagemaker_studio is a function that checks existing domains created by dataall or outside of data.all and then creates a domain if needed. The studio domain is used later in the ML Studio sessions. I think we can use this opportunity to move this code from the environment to the ML Studio and create it in a lazy mode. --> So we need some changes

I am adding this third point. Use of the pivot role in the LF and Glue custom resources --> I checked that you added the pivot role construct and there are no hardcoded API calls with the pivot role so we should be fine :)

Changes needed for:

Quicksight group in the sharing tasks
SageMaker domain in the MLStudio stack

@dosiennik, right now it is possible to create the pivotRole as part of the environment stack:

For existing deployments of data.all that want to switch to environmentCreatedPivotRole. To update previously created environments we have 4 options:

Manually click on "Update stack" on the Environment UI > Stack tab
Wait for the daily scheduled task that updated all stacks. "stack_updater"
Manually trigger the "stack_updated" task with the following command:
aws ecs run-task --task-definition "arn:aws:ecs:eu-central-1:111111111111:task-definition/dataall-dev-stacks-updater:340" --cluster "arn:aws:ecs:eu-central-1:111111111111:cluster/dataall-dev-cluster" --launch-type "FARGATE" --network-configuration "awsvpcConfiguration={subnets=[subnet-.....,subnet-....,subnet-....], securityGroups=[sg-....],assignPublicIp=DISABLED}"
Develop a new stage in the CICD pipeline that triggers the stack updater task with every run of the CodePipeline pipeline

Completed in #409


Not all fields should be full width#188

It seems like size is doing double duty at the moment, which is confusing. I think we should rename the old size property to scale (sm, md, lg, etc) and keep that behaviour: it changes the text size and the padding, not the width specifically. @alexivanenko ?

@alexivanenko right the 'size' property doesn't affect the width, I agree with you, will update and push changes quickly

@andrewwhitehead @alexivanenko There are other components that have size and changing font size example buttons and badges, should I change all to scale?

@andrewwhitehead @alexivanenko There are other components that have size and changing font size example buttons and badges, should I change all to scale?

@razinabrahamyan I think yes for consistency. But we need to update app-js after this.

@alexivanenko ok, got it


Code actions commands are not run automatically as they were in the past with vscode-languageclient

When our extension used version 6.1.3 of vscode-languageclient and code actions were run, a call to workspace/executeCommand would be called with the appropriate command for the code action, without our extension needing to call that command manually.
With version 7.0.0, this stopped happening. I noticed version 3.16 of the LSP introduced the codeAction/resolve request, and I noticed that those requests are being sent, but the command in the codeAction/resolve response is not being run.
The protocol specification suggests that the command will be executed:
	/**
	 * A command this code action executes. If a code action
	 * provides an edit and a command, first the edit is
	 * executed and then the command.
	 */
	command?: Command;

I've implemented a fix in our extension using middleware, but I have a feeling this shouldn't be needed:
            async resolveCodeAction(item, token, next): Promise<CodeAction> {
                const { command } = await next(item, token);
                if (command) {
                    sendCommandRequest(command.command, command.arguments);
                    return null;
                }
                return next(item, token);
            },

Is there an issue with vscode-languageclient, or am I misunderstanding something?

Actually, VS Code has NO support to resolve the command lazy. It must be filled in when the code action is returned. The protocol specifies the properties that can be resolved lazy in the client capability textDocument.codeAction.resolveSupport.properties which VS Code sets to ['edit']. See https://github.com/microsoft/vscode-languageserver-node/blob/caf2317bb661c066860c76f36ed841e44f06339b/client/src/common/client.ts#L2066
Closing the issue since this works as expected.

To clarify further. The resolve request should only be used if the code action request return a CodeAction literal and not a Command literal.

Thanks for the details. I'm don't think I'm really following, though.

The resolve request should only be used if the code action request return a CodeAction literal and not a Command literal. Are you seeing this with the resolve request already returning a Command?

Here's an example of a complete interaction from my editor, from getting the available code actions at a position in the editor, to selecting one in the menu, then seeing the change applied in the editor.
When I select a code action in the menu that pops up, a codeAction/resolve request is automatically sent, then the codeAction/resolve response contains a command. We then send that command ourselves.
I just want to verify that the protocol is being used as intended, both from the server and the client perspective, with regards to this scenario.
[Trace - 8:15:29 PM] Sending request 'textDocument/codeAction - (7)'.
Params: {
    "textDocument": {
        "uri": "file:///Users/brandon/development/clojure-test/src/core.clj"
    },
    "range": {
        "start": {
            "line": 3,
            "character": 5
        },
        "end": {
            "line": 3,
            "character": 5
        }
    },
    "context": {
        "diagnostics": []
    }
}

[Trace - 8:15:29 PM] Received response 'textDocument/codeAction - (7)' in 5ms.
Result: [
    {
        "title": "Change coll to map",
        "kind": "refactor",
        "data": {
            "id": "refactor-change-coll",
            "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
            "line": 3,
            "character": 5,
            "coll": "map"
        }
    },
    {
        "title": "Change coll to vector",
        "kind": "refactor",
        "data": {
            "id": "refactor-change-coll",
            "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
            "line": 3,
            "character": 5,
            "coll": "vector"
        }
    },
    {
        "title": "Change coll to set",
        "kind": "refactor",
        "data": {
            "id": "refactor-change-coll",
            "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
            "line": 3,
            "character": 5,
            "coll": "set"
        }
    },
    {
        "title": "Cycle privacy",
        "kind": "refactor.rewrite",
        "data": {
            "id": "refactor-cycle-privacy",
            "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
            "line": 3,
            "character": 5
        }
    },
    {
        "title": "Extract function",
        "kind": "refactor.extract",
        "data": {
            "id": "refactor-extract-function",
            "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
            "line": 3,
            "character": 5
        }
    },
    {
        "title": "Clean namespace",
        "kind": "source.organizeImports",
        "data": {
            "id": "clean-ns",
            "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
            "line": 3,
            "character": 5
        }
    }
]

[Trace - 8:15:33 PM] Sending request 'codeAction/resolve - (8)'.
Params: {
    "title": "Cycle privacy",
    "data": {
        "id": "refactor-cycle-privacy",
        "uri": "file:///Users/brandon/development/clojure-test/src/core.clj",
        "line": 3,
        "character": 5
    },
    "kind": "refactor.rewrite"
}

[Trace - 8:15:33 PM] Received response 'codeAction/resolve - (8)' in 11ms.
Result: {
    "title": "Cycle privacy",
    "kind": "refactor.rewrite",
    "command": {
        "title": "Cycle privacy",
        "command": "cycle-privacy",
        "arguments": [
            "file:///Users/brandon/development/clojure-test/src/core.clj",
            3,
            5
        ]
    }
}

[Trace - 8:15:33 PM] Sending request 'workspace/executeCommand - (9)'.
Params: {
    "command": "cycle-privacy",
    "arguments": [
        "file:///Users/brandon/development/clojure-test/src/core.clj",
        3,
        5
    ]
}

As said VS Code doesn't support filling in a command in a resolve request. Only the edit property can be set in a resolve request. Reason is that a command is already somehow lazy and not hard to compute. A full edit tree however is. This is why only this property of a Code action can be added in a resolve request: https://github.com/microsoft/vscode-languageserver-node/blob/1fe84c5b656d9db07f812cb573d2c0d82f9d8366/types/src/main.ts#L3091 The command property https://github.com/microsoft/vscode-languageserver-node/blob/1fe84c5b656d9db07f812cb573d2c0d82f9d8366/types/src/main.ts#L3098 CAN'T be filled in in a resolve request.

Thanks for the clarification!


[FEATURE] Add links to the team's GitHub profiles

Detailed description
For those who have a GitHub profile and work in Dev Protocol, we might want to add a link to their profile.
Context
This is useful so you can actually know who they actually are at GitHub, the work they do, etc..
Possible implementation
Add a link to the team's respective GitHub profiles.
Additional information
I'd like to work on this!
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Looks like this is already implemented 👀 Closing.
Will add a link to their profile photos, though.


sdk/dotnet-code_snippets

csharp snippets: multiple_events and setup

Your setup.csharpsnippet should mirror what setup.gosnippet is doing. Can you please adjust?

Updated

Thanks for making those changes! Note that the concept of store is going away and being replaced simply by signals in version 0.21.0.

Merged, thanks!


Wrong highlight of the source of error.

It looks like a corner case, btw. If there is an error after evaling the defprotocol form with a problem, e.g. var mapped to the java interface, Sublime highlights only the comment placed above protocol declaration and not the source of the Exception.

Code to reproduce:
;; Readable is already mapped to java interface java.lang.Readable
(defprotocol Readable
  (read [this search-clause]))

Might be Clojure problem (reporting wrong line number) or nREPL or mine :) Will look into it, thanks

Should be fixed in 6daeabc68af9d6b7492d2d59a6a63241a641b7f5


session-service: send the user to dex with their connector selected already

:nut_and_bolt: Description: What code changed, and why?
When a user's session cannot be refreshed anymore, they'll be sent to the Sign In page. There, they'll have to select a method to use for Sign In, although we know what they had used before.
With this change, we'll make use of that knowledge, and send them to the right method immediately.
❕Note: The Back link is a bit wonky: It'll send them back to Automate, but they'll lack an ID token, so they'll be sent back to dex, but since there's no ID token, they'll see the selection. So, it works, but in a very odd way. Unfortunately, a proper fix is a bit more involved.
❕ Note: For SAML, there's no back button. So, to abort, and get back to the selection once you've used SAML, you'll need to browse to Automate again manually.
🚧 Depends on #1243 to get in first, this needs dex v2.18.0. ✔
:chains: Related Resources
None.
:+1: Definition of Done
A user that's logged out no longer needs to select their login method. But if they want to, they can.
:athletic_shoe: How to Build and Test the Change

rebuild components/session-service
get the UI to be rebuilt (devproxy etc)
login as a local user
kill all sessions: chef-automate dev psql chef_session_service -- -c 'delete from sessions'
wait for a minute, see that you're sent to the username/password form directly

:white_check_mark: Checklist

[x] Tests added/updated?
[ ] Docs added/updated?

☑ Added a test.


Make local from demo

Adding back in old "make dev" functionality to give folks the demo box as a 'local' install.

Thanks for putting this up @dannylamb
Working through this I am getting the following error when running make local-from-demo and on the     $(MAKE) update-settings-php ENVIROMENT=demo step from the call to the demo task.
Starting ksul-isle-dc_matomo_1  ... done
make[2]: Entering directory '/klib/app/isle-dc'
realpath: The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located./sites: No such file or directory
The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
chmod: /settings.php: No such file or directory
make[2]: *** [Makefile:128: update-settings-php] Error 1
make[2]: Leaving directory '/klib/app/isle-dc'
make[1]: *** [Makefile:327: demo] Error 2
make[1]: Leaving directory '/klib/app/isle-dc'
make: *** [Makefile:359: local-from-demo] Error 2

However if I run make demo it seems to build correctly as expected.

Thanks for this @misilot , I'll circle back soon and investigate.

This is an extremely useful task for us to be able to run. Our use case: we want to generate a codebase folder with all of the latest islandora_defaults (with taxonomy definitions, Islandora Models content, etc.) fully installed, and use that as a foundation for further development.
During the 2021-05-25 Open Meeting, @dannylamb did a walk-through of the local-from-demo task, and we isolated an issue where the codebase downloaded from the task was outdated and didn't include a number of taxonomy definitions currently in islandora_defaults (re: https://github.com/Islandora/documentation/issues/1818) After some investigation, we found that this task skipped over enabling islandora_defaults, thus the hydrate task never imported the config from it b/c there was already existing config in the codebase.
Proposed solution was to add some kind of flag/logic that lets the user state whether or not they want to force an install of cmu_defaults.

@misilot Would you mind giving this another go?  I've made some changes and have managed to get this working for @mdlincoln , @hachacha and @bondjimbond.
Curious to see if it works for  you as well.  Thanks for being patient with us while we sort this out.

@mdlincoln I just pushed up a toggle for enabling islandora defaults when you run make local.  In your .env file, set ENABLE_ISLANDORA_DEFAULTS to control the behaviour (defaults to 'true').

@dannylamb
grep: /var/www/drupal/web/sites/default/settings.php: No such file or directory

In Filesystem.php line 202:

  Failed to chmod file "/var/www/drupal/web/sites/default/settings.php".

islandora:settings:set-hash-salt [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-d|--debug] [-y|--yes] [--no] [--remote-host REMOTE-HOST] [--remote-user REMOTE-USER] [-r|--root ROOT] [-l|--uri URI] [--simulate] [--pipe] [-D|--define DEFINE] [--xh-link XH-LINK] [--notify [NOTIFY]] [--druplicon] [--] <command> <salt>

In Filesystem.php line 202:

  Failed to chmod file "/var/www/drupal/web/sites/default/settings.php".

islandora:settings:set-flystem-fedora-url [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-d|--debug] [-y|--yes] [--no] [--remote-host REMOTE-HOST] [--remote-user REMOTE-USER] [-r|--root ROOT] [-l|--uri URI] [--simulate] [--pipe] [-D|--define DEFINE] [--xh-link XH-LINK] [--notify [NOTIFY]] [--druplicon] [--] <command> <url>

PHP Notice:  Uninitialized string offset: 0 in /var/www/drupal/vendor/drush/drush/src/Preflight/ArgsPreprocessor.php on line 72
make[2]: *** [Makefile:128: update-settings-php] Error 129
make[2]: Leaving directory '/klib/app/isle-dc'
make[1]: *** [Makefile:327: demo] Error 2
make[1]: Leaving directory '/klib/app/isle-dc'
make: *** [Makefile:359: local-from-demo] Error 2

When running make local-from-demo

This is super duper obsolete


Help : About Make Dataset -- NUS wide seq

Hello！
I cannot download NUS-WIDE images from the URL in NUS-WIDE-urls.txt.
Can you put the downloaded images into the Baidu network disk?
Thank you!
Looking forward to your reply!

Hi! Sadly, we cannot download the images and store it on the Baidu network for you...
Consider contacting the original authors of NUS-WIDE dataset here.


cannot find package "gopkg.in/fsnotify.v1"

I'm not sure if this is a problem with my Go setup, or missing deps.  I'm running Fedora 21 and Go 1.3.3 (also tried 1.4).
[jborg@borg-lpt-linux lime]$ cd $GOPATH/src/github.com/limetext/lime
[jborg@borg-lpt-linux lime]$ go test github.com/limetext/lime/backend/...
backend/watch/watch.go:14:2: cannot find package "gopkg.in/fsnotify.v1" in any of:
	/opt/google/go/src/pkg/gopkg.in/fsnotify.v1 (from $GOROOT)
	/home/jborg/Projects/lime/src/gopkg.in/fsnotify.v1 (from $GOPATH)
[jborg@borg-lpt-linux lime]$
[jborg@borg-lpt-linux lime]$ go test github.com/limetext/lime/frontend/...
frontend/html/main.go:22:2: cannot find package "golang.org/x/net/websocket" in any of:
	/opt/google/go/src/pkg/golang.org/x/net/websocket (from $GOROOT)
	/home/jborg/Projects/lime/src/golang.org/x/net/websocket (from $GOPATH)
backend/watch/watch.go:14:2: cannot find package "gopkg.in/fsnotify.v1" in any of:
	/opt/google/go/src/pkg/gopkg.in/fsnotify.v1 (from $GOROOT)
	/home/jborg/Projects/lime/src/gopkg.in/fsnotify.v1 (from $GOPATH)
frontend/qml/main.go:20:2: cannot find package "gopkg.in/fsnotify.v0" in any of:
	/opt/google/go/src/pkg/gopkg.in/fsnotify.v0 (from $GOROOT)
	/home/jborg/Projects/lime/src/gopkg.in/fsnotify.v0 (from $GOPATH)
frontend/qml/main.go:21:2: cannot find package "gopkg.in/qml.v1" in any of:
	/opt/google/go/src/pkg/gopkg.in/qml.v1 (from $GOROOT)
	/home/jborg/Projects/lime/src/gopkg.in/qml.v1 (from $GOPATH)
[jborg@borg-lpt-linux lime]$
[jborg@borg-lpt-linux lime]$ go version
go version go1.3.3 linux/amd64

<bountysource-plugin>

---
Want to back this issue? **[Place a bounty on it!](https://www.bountysource.com/issues/7679817-cannot-find-package-gopkg-in-fsnotify-v1?utm_campaign=plugin&utm_content=tracker%2F282001&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F282001&utm_medium=issues&utm_source=github).
</bountysource-plugin>

As stated in the readme, this belongs in https://github.com/limetext/support. Please reopen the issue there.


PDF with a TOC

This is just a minor request for a cosmetic change regarding the PDF format: Would it be possible to publish the PDF output with a TOC usable for navigation? While it is not a big problem to generate a version with a TOC by oneself, it leads to multiple customized copies of the standard in different places.

in version
https://www.vda.de/dam/jcr:f0c9c019-1506-4dee-998a-e92723fbf025/EN-VDA5050-V2_0_0.pdf
the TOC is usable.


[NEW THEME]: Tasha's Cauldron for Everything (TCE)

ToDo

[x] Snippets

[x] Comment note
[x] Blue header
[ ] Page Art Border (need more stains)
[ ] image description font:

Would it be desirable to use this as a test case for the "naturacrit user" user themes?

Would it be desirable to use this as a test case for the "naturacrit user" user themes?

Actually, with your brew themes PR, we'd want to start this from scratch using https://homebrewery.naturalcrit.com/share/10_ZaGXAzLWNcn_ybM9K1uiMZ_o31Lt4f5CxliV-7LFuV as a start.
Don't remember if we needed special snippets, hope not.

I'm going to look into what's needed to move this into a Brew theme

If i remember correctly, the only thing left for this PR were assets, specifically, header page art:

The discussion ended with needing more of those (at least 10) in order to move forward, because we could not use the official art. And we don't really have an artist in the house.

The discussion ended with needing more of those (at least 10) in order to move forward, because we could not use the official art. And we don't really have an artist in the house.

So 10 flowery watercolor headers?

The discussion ended with needing more of those (at least 10) in order to move forward, because we could not use the official art. And we don't really have an artist in the house.

So 10 flowery watercolor headers?

If i remember correctly, yes

Do you want to take the time to get Master merged into this?  It doesn't seem like it even has Themes selector at this point?

yea or nay?  i can make several these, but takes a little bit of time.

Just occurring to me that kaiburr has a template for this already: https://homebrewery.naturalcrit.com/share/5CxliV-7LFuV
Should i just stop and this PR get closed out?

His art is exctracted from tashas, not sure it can be used even in dmsguild, but I am no going to be making the decals anyway, this was here waiting in case some artist showed up or something. close if you want.

Perhaps then, we should close this?


supporting utf-8 in key deletions

Fixes #1198

Coverage decreased (-0.2%) to 92.872% when pulling 69c0855071b09ecb7d832559b16db9873df0e805 on JackDanger:jack/supporting-utf-8-in-key-deletions into b17136e36c3a975aa2cebed15aec766bc6776260 on spulec:master.


Add cool styles and components

Description
We're CMD, the website should look like we're CMD students. Just awesome. Also we should add some more components.
Acceptance criteria

[ ] Look at cool websites for types of animations and micro-animations
[x] Look at what components are needed now
[ ] Impelement design
[ ] Implement new components

@kriskuiper wat is exact de definition of done hier?


HTML and Javascript code cleanup

currently the  html and javascript for the passkeys package is separated into multiple files which can be combined into one html and one javascript file for easier integration
The javascript contains django template tags, is poorly structured, should be done by function parameters instead
files with .js ending are actually django templates which confuses text editors

You can open PR for that

Also check #27


implementation of command new

The steel new command shares its purpose with tools like cargo new and stack new - it creates the initial boilerplate to kickstart programming.
There are various considerations to ponder:

What should the folder structure look like? (e.g., src, lib, tests...)
Should we offer a main manifest (like package.json or cargo.toml)?
Do we encourage separate test files or embedding tests within source files?
Is main.scm fixed as the root, or can it be configured in the manifest?
Any other considerations?

In this implementation, I've made certain choices: a flat file structure, an example test file, main.scm as the root, and cogs.scm as the manifest.
$ steel new myproject
$ tree myproject
myproject
├── cog.scm
├── main.scm
├── mysum.scm
└── mysum-test.scm

I don't have strong preferences and usually go with defaults I like. But I'm open to making changes and improvements, also in the code.
Please feel free to suggest any improvements.

First off, thanks for the PR - overall looks good, one comment so far and just want to address some of the considerations you made in the description:

There are various considerations to ponder:

What should the folder structure look like? (e.g., src, lib, tests...)
Should we offer a main manifest (like package.json or cargo.toml)?
Do we encourage separate test files or embedding tests within source files?
Is main.scm fixed as the root, or can it be configured in the manifest?
Any other considerations?

I don't particularly have an explicit structure in mind. I do like having some sort of top level lib.scm or info.scm file that has the majority of the exports, however I don't have anything in particular in mind nor strong preference. I'm inclined to see what grows organically here. The structure you've picked is what I tend to go for.
The manifest is hard, I think we should have something. The cog.scm file works for that.
I prefer keeping test files and the source files aligned, however I don't think it should be impossible to separate them.
Having a default main.scm seems fine, although maybe we should have that be a part of the manifest? I guess typically you'd call the entrypoint via something like steel dir/main.scm, but I'm open for discussion on that.

each ecosystem have its structure and various manifests, for instance
elixir:
$ mix new myproject
myproject
├── lib
│   └── myproject.ex
├── mix.exs
├── README.md
└── test
    ├── myproject_test.exs
    └── test_helper.exs

haskell:
$ stack new myproject
myproject
├── app
│   └── Main.hs
├── CHANGELOG.md
├── LICENSE
├── myproject.cabal
├── package.yaml
├── README.md
├── Setup.hs
├── src
│   └── Lib.hs
├── stack.yaml
└── test
    └── Spec.hs

java have a cultural tendency of structuring project so (but can depend from tool used... eclipse, netbeans, intellij, maven vs gradle...)
$ tree myproject
myproject
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── org
    │   │       └── example
    │   │           └── Main.java
    │   └── resources
    └── test
        └── java

less structured are javascript, golang and python. I don't know them well and I see lot of different approach...
$ mkdir myproject && cd myproject
$ npm init
$ tree myproject
myproject
└── package.json

$ mkdir myproject && cd myproject
$ go mod init myproject
$ tree myproject
myproject
└── go.mod

in golang are born some defaults, for example here: https://github.com/golang-standards/project-layout
but I don't know if these languages have well accepted tools that enforce a project structure.

If we consider Rust toolchain inspirational for Steel
$ cargo new myproject
$ tree myproject
myproject
├── Cargo.toml
└── src
    └── main.rs

rust is pretty light in the scaffolding.

For the testing side, I'm super fun of the testing approach used by Golang that enforce test files in the same folder of source file:
├── prune-junit-xml
│   ├── OWNERS
│   ├── prunexml.go
│   └── prunexml_test.go
└── yamlfmt
    ├── OWNERS
    ├── yamlfmt.go
    └── yamlfmt_test.go

instead languages like Rust and Zig have tends to put unit tests and sources in the same file...
I don't dislike to have tests in sources, but I have a little preference in the Golang testing approach, no one avoid us to allow both approach.
My final proposal is this one:
myproject
├── cog.scm
└── src
    ├── main.scm
    ├── mysum.scm
    └── mysum-test.scm

Test running is interesting, and I plan to create a new issue for implementing steel test where we can discuss it further.
but do you want keep the file extension .scm?

Couple points - the way the current library installer works is that it verbatim copies the directory to the $STEEL_HOME prefixed with the package name, so something like
(define package-name 'steel/logging)
(define version "0.1.0")

;; Core library, requires no dependencies
(define dependencies '())

with the structure:
logging
├── cog.scm
└── log.scm

Would then be installed to $STEEL_HOME/steel/logging/log.scm
We could change the behavior to ignore src in that, if we wanted all the files to be packaged under src - it would just need to be changed in the installer, and the existing packages in the SDK will need to be updated accordingly.
Personally I don't feel the need to enforce a src directory, however I'll need to think on that a little bit. I'm inclined okay with it, but if we go that route we'll need to adjust the installer like I mentioned before.
Also - I think tests in libraries and not separate is fine - I like the ability to test private methods as well as public ones. Public ones can be tested externally.

Of course, let me know your decision, and I'm here to help with any fixes if needed.

I think I quite like the flat structure - this is how racket projects are built with raco pkg new <name>:
├── info.rkt
├── main.rkt
├── README.md
└── scribblings
    └── test.scrbl

So lets go without the src directory for now and a flat structure. I think we can revisit this later if necessary, but for now I think just giving the option of adding the directory yourself is fine if you want to.

Sure thing! Do you think the current commit is okay, or should we consider either putting mysum-test.scm inside mysum.scm or using myproject.scm as the root, as specified in the package-name of cog.scm?

I think the current structure is fine

rust project structure is good, I vouch for such project layout!

Hi @mattwparas, does it make sense to refresh this PR, or if it's too early to make a decision, I can close it for now?

@AngeloChecked  If you'd like to refresh the PR that would be fine!

hi @mattwparas,
I added the following to the test:
(define dummy-provide 1)
(provide dummy-provide)

This is just to allow the steel new hello-world && cd hello-world && steel test as first workflow "experience", as tests won’t run without a provided value.
Let me know if you have any new insights or ideas about the starting scaffolding "experience"

Hi @AngeloChecked - I think I'd like it better if this command were a part of the package manager, akin to cargo new and not as part of the binary for the interpreter.
I'm scaffolding that up now, and will follow up once its ready

Hi @AngeloChecked - I think I'd like it better if this command were a part of the package manager, akin to cargo new and not as part of the binary for the interpreter.
I'm scaffolding that up now, and will follow up once its ready

pkg manager will be a part of steel binary? that would be nice. just like go get or deno install


Script is not running in addon domain or in hosting

As i want to install the ph7cms in my addon domain but its not working after installation from softcolous its show website coming soon but again it show advertisements of domain sites

You didn't point your addon domain correctly to your web host. Please check your DNS. Please contact the provider if you cannot figure out by yourself.


Trying to use derive with flatten, remote type and field to tuple struct conversion

I'm trying to use serde for (de)serializing the following json format:
{
    "batt": 100,
    "lon": 31.123434343,
    "lat": 54.123532323
}

Into the following Rust struct:
pub struct Location {
    pub battery: Option<u8>,
    pub point: PgPoint
}

where PgPoint is an external type from diesel_geometry crate.
In order to do this, I'm trying to apply multiple serde attributes:

flatten
with for remote derive of PgPoint

I also need to represent fields lon and lat as a tuple struct (PgPoint) instead of a field struct (e.g. something like PgPointHelper in the following code)
I've come up with this solution (which doesn't compile):
use diesel_geometry::data_types::PgPoint;
use serde::{Serialize, Serializer, Deserialize, Deserializer};

#[derive(Serialize, Deserialize, Debug)]
pub struct Location {
    #[serde(rename = "batt")]
    pub battery: Option<u8>,
    #[serde(with = "PgPointDef")]
    #[serde(flatten)]
    pub point: PgPoint
}

// json conversion hacks begin here

#[derive(Serialize, Deserialize, Debug)]
#[serde(remote = "PgPoint")]
struct PgPointDef(pub f64, pub f64);

#[derive(Serialize, Deserialize, Debug)]
struct PgPointHelper {
    pub lat: f64,
    pub lon: f64
}

impl<'se> Serialize for PgPointDef {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
        where S: Serializer
    {
        PgPointHelper { lat: self.0, lon: self.1 }.serialize(serializer)
    }
}

impl<'de> Deserialize<'de> for PgPointDef {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
        where D: Deserializer<'de>
    {
        Deserialize::deserialize(deserializer)
            .map(|PgPointHelper { lat, lon }| PgPointDef(lat, lon))
    }
}

The problem is that serde seems to ignore #[serde(with = "PgPointDef")] attribute when I add #[serde(flatten)] attribute for the point field:
error[E0277]: the trait bound `diesel_geometry::data_types::PgPoint: serde::Deserialize<'_>` is not satisfied
 --> src/location.rs:5:21
  |
5 | #[derive(Serialize, Deserialize, Debug)]
  |                     ^^^^^^^^^^^ the trait `serde::Deserialize<'_>` is not implemented for `diesel_geometry::data_types::PgPoint`
  |
  = note: required by `serde::Deserialize::deserialize`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.

If I remove flatten attribute, the code compiles successfully.
I'm also not sure if it will work correctly because I'm deriving Serialize, Deserialize for PgPointDef and then implementing them myself (I can't do it for PgPoint directly because it's in a remote crate).
Is there a better (working) way to do this?
Or should I just implement Serializer/Deserializer myself without deriving?
Sorry if I'm doing something stupid, I'm kind of a newbie when it comes to Rust.
Thanks.

I fixed the bug that was causing #[serde(flatten, with = "PgPointDef")] to generate broken code -- #1240. Please update to serde 1.0.44.
I would implement this as:
#[derive(Serialize, Deserialize, Debug)]
struct Location {
    #[serde(rename = "batt")]
    battery: Option<u8>,
    #[serde(flatten, with = "serde_pg_point")]
    point: PgPoint,
}

mod serde_pg_point {
    use diesel_geometry::data_types::PgPoint;
    use serde::{Serialize, Serializer, Deserialize, Deserializer};

    #[derive(Serialize, Deserialize)]
    struct PgPointHelper {
        lat: f64,
        lon: f64,
    }

    pub fn serialize<S>(point: &PgPoint, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        PgPointHelper { lat: point.0, lon: point.1 }.serialize(serializer)
    }

    pub fn deserialize<'de, D>(deserializer: D) -> Result<PgPoint, D::Error>
    where
        D: Deserializer<'de>,
    {
        let point = PgPointHelper::deserialize(deserializer)?;
        Ok(PgPoint(point.lat, point.lon))
    }
}

My code snippet compiles successfully with v1.0.44 and your implementation does exactly what I need.
Thanks!


⚠ API - Lens has degraded performance

In 8589894, API - Lens ($LENS_API_URL) experienced degraded performance:

HTTP code: 502
Response time: 340 ms

Resolved: API - Lens performance has improved in 0403b92 after 8 minutes.


YouTube Age Restriction issue reappeared in the latest version (2021.06.06)

C:\Users\Username\Videos\new>youtube-dl https://www.youtube.com/watch?v=812LFaEZlkg [youtube] 812LFaEZlkg: Downloading webpage [youtube] 812LFaEZlkg: Refetching age-gated info webpage WARNING: unable to download video info webpage: HTTP Error 404: Not Found ERROR: Sign in to confirm your age This video may be inappropriate for some users.
This wasn't an issue two days ago with the latest version and used to work fine before (like two days ago it could handle age restricted videos properly). I suppose maybe YouTube did again a change behind the scenes and it broke it again?

Related: https://github.com/ytdl-org/youtube-dl/issues/29086

I confirm this. The problem is back.

Youtube-dl definitely doesn't download age-restricted videos from youtube like this one "https://www.youtube.com/watch?v=xcRUPMf6scs" (NSFW) anymore. Is there any way to get youtube-dl to download those videos properly, especially for people who don't know how to do advanced computer programming and simply want a program like youtube-dl they can just use that works properly? Thanks.

Youtube-dl definitely doesn't download age-restricted videos from youtube like this one "https://www.youtube.com/watch?v=xcRUPMf6scs" (NSFW) anymore. Is there any way to get youtube-dl to download those videos properly, especially for people who don't know how to do advanced computer programming and simply want a program like youtube-dl they can just use that works properly? Thanks.

No only youtube-dl, I have other programs and I get in all "confirm your age".
@dstftw You closed an issue that is still unsolved.


Bump Quarkus version to 2.5.0.Final

Please review and merge

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) optaplanner-quickstarts check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

it looks like something broke in org.kie.kogito.quarkus.dmn.KogitoDMNCodeCodestartIT
located in kogito-quarkus-decisions-extension/kogito-quarkus-decisions-integration-test/src/test/java/org/kie/kogito/quarkus/dmn/KogitoDMNCodeCodestartIT.java
it looks like this line
https://github.com/kiegroup/kogito-runtimes/blob/173b53ac4634dfe2c4c31e6db25c4d52a15f6195/quarkus/extensions/kogito-quarkus-decisions-extension/kogito-quarkus-decisions-integration-test/src/test/java/org/kie/kogito/quarkus/dmn/KogitoDMNCodeCodestartIT.java#L46
no longer generates the correct dep in the generated pom.xml:
   <dependency>
     <groupId>org.kie.kogito</groupId>
     <artifactId>kogito-quarkus-decisions</artifactId>
   </dependency>

instead of
    <dependency>
      <groupId>org.kie.kogito</groupId>
      <artifactId>kogito-quarkus-decisions</artifactId>
      <version>2.0.0-SNAPSHOT</version>
    </dependency>

which is correct on main. This is the approach that we've been using, so it looks like a regression in QuarkusCodestartTest.builder() in 2.5.0.Final (?)
are you aware of this issue @ia3andy ?

The (build) kogito-apps check has failed. Please check the logs.

it looks like something change in the GraphQL API @tiagodolphine @cristianonicolai

This might be the reason: https://github.com/quarkusio/quarkus/pull/20892

This is a tricky problem, removing the version from the builder call would make it fail to link the codestart, and having the version makes it alter the pom.xml
The problem is on my end, I need to put my head around it.

The (build) kogito-runtimes check has failed. Please check the logs.

also @cristianonicolai is there any reason why the last number should be 1.0 in MonitoringIT ?
expected:
kogito_process_instance_started_total{app_id="default-process-monitoring-listener",artifactId="integration-tests-quarkus-processes",process_id="monitoring",version="2.0.0-SNAPSHOT",} 1.0

but the log reads:
[2021-11-18T13:34:28.050Z] kogito_process_instance_started_total{app_id="default-process-monitoring-listener",artifactId="integration-tests-quarkus-processes",process_id="monitoring",version="2.0.0-SNAPSHOT",} 0.0

notice 0.0 at the end
running seems correct
[2021-11-18T13:34:28.050Z] kogito_process_instance_running_total{app_id="default-process-monitoring-listener",artifactId="integration-tests-quarkus-processes",process_id="monitoring",version="2.0.0-SNAPSHOT",} 1.0

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

it looks there is a similar issue for DRL and processes on Examples

expected 1.0 at the end:
kogito_process_instance_started_total{app_id="default-process-monitoring-listener",artifactId="integration-tests-quarkus-processes",process_id="monitoring",version="2.0.0-SNAPSHOT",} 1.0

but the log reads:
[2021-11-18T13:34:28.050Z] kogito_process_instance_started_total{app_id="default-process-monitoring-listener",artifactId="integration-tests-quarkus-processes",process_id="monitoring",version="2.0.0-SNAPSHOT",} 0.0

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

This is due to a regression for which I provided a PR on Quarkus core (https://github.com/quarkusio/quarkus/pull/21562):

I provided a sustainable solution to @evacchi  for 1.5.0.Final (remove the default dependency in the codestart.yml).
The next patch version of Quarkus should contain the regression fix (but no need to add the dependency again in the codestart.yml)

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

jenkins retest this

The (build) kogito-apps check has failed. Please check the logs.

jenkins rerun kogito-apps tests

jenkins rerun kogito-apps tests