Heroku fails to build vessel (Desktop wallet for steem blockchain)

Heroku is a platform as a service (PAAS) that lets you deploy apps online. It is an amazing service which is very popular and free for light use.
I tried to deploy the vessel wallet for steam through heroku. The build failed. I will first explain simple step by step procedure to replicate the problem and then I will share the build log.
This is how you duplicate the problem:

Clone the github repository into your own repository.

Login to your heroku account.  If you don't have an account create one. It is an almost instantaneous process. You will only need to verify your email.

Click on New and then select Create an app.

Give the app any name. I will name it vesselwallet (vessel name is unavailable). Then click on Create app.

4.Page, as shown below, appears. Dont choose any pipeline. Choose github as deployment method.

Select your cloned repository. A message as shown below will be displayed which tells you that your github repository has been sucessfully connected.

In Manual Deployment, just select deploy branch.

The app build fails with log:

-----> Node.js app detected
-----> Creating runtime environment

       NPM_CONFIG_LOGLEVEL=error
       NPM_CONFIG_PRODUCTION=true
       NODE_VERBOSE=false
       NODE_ENV=production
       NODE_MODULES_CACHE=true
-----> Installing binaries
       engines.node (package.json):  unspecified
       engines.npm (package.json):   unspecified (use default)
       engines.yarn (package.json):  unspecified (use default)

       Resolving node version 6.x...
       Downloading and installing node 6.12.0...
       Using default npm version: 3.10.10
       Resolving yarn version 0.28.4...
       Downloading and installing yarn (0.28.4)...
       Installed yarn 0.28.4
-----> Restoring cache
       Skipping cache restore (not-found)
-----> Building dependencies
       Installing node modules (yarn.lock)
       yarn install v0.28.4
       [1/4] Resolving packages...
       error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed
 !     Outdated Yarn lockfile
       Your application contains a Yarn lockfile (yarn.lock) which does not
       match the dependencies in package.json. This can happen if you use npm
       to install or update a dependency instead of Yarn.
       Please run the following command in your application directory and check
       in the new yarn.lock file:
       $ yarn install
       $ git add yarn.lock
       $ git commit -m "Updated Yarn lockfile"
       $ git push heroku master

       https://kb.heroku.com/why-is-my-node-js-build-failing-because-of-an-outdated-yarn-lockfile
 !     Push rejected, failed to compile Node.js app.
 !     Push failed

Thanks You.
Open Source Contribution posted via Utopian.io

Vessel won't work on Heroku - since heroku is designed to host web applications. Vessel is designed to be a desktop application (using electron) and not to be run a browser.
Not sure what you're trying to do - but this won't work 😄

Can docker deploy it though ? Trying to test out the code as a noob and learn in the process !!

Docker could build the executable but I'm not really sure it would work for development.
Vessel outputs an executable file which then runs a GUI - both Docker and Heroku are headless environments without a GUI interface, which is why I don't think it would work.


Could NOT find qtpaths executable

https://github.com/trialuser02/qt6ct/blob/e41923da5723e310310f183dd28dee64293e00ae/CMakeLists.txt#L42-L43
problem is:

lrelease is part of the qttools module
qtpaths is part of the qtbase module

so, on nixos, these have different prefixes
fixed by using the commented code blocks
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,14 +24,14 @@

 find_package(Qt6 COMPONENTS BuildInternals Widgets Concurrent LinguistTools REQUIRED)

-#get_target_property(QT_QTPATHS_EXECUTABLE Qt6::qtpaths IMPORTED_LOCATION)
+get_target_property(QT_QTPATHS_EXECUTABLE Qt6::qtpaths IMPORTED_LOCATION)
 get_target_property(QT_LRELEASE_EXECUTABLE Qt6::lrelease IMPORTED_LOCATION)

-#if(QT_QTPATHS_EXECUTABLE)
-#    message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
-#else()
-#    message(FATAL_ERROR "Could NOT find qtpaths executable")
-#endif()
+if(QT_QTPATHS_EXECUTABLE)
+    message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
+else()
+    message(FATAL_ERROR "Could NOT find qtpaths executable")
+endif()

 if(QT_LRELEASE_EXECUTABLE)
     message(STATUS "Found lrelease executable: " ${QT_LRELEASE_EXECUTABLE})
@@ -39,15 +39,6 @@
     message(FATAL_ERROR "Could NOT find lrelease executable")
 endif()

-get_filename_component(QT_QTPATHS_EXECUTABLE ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
-set(QT_QTPATHS_EXECUTABLE ${QT_QTPATHS_EXECUTABLE}/qtpaths)
-
-if(EXISTS ${QT_QTPATHS_EXECUTABLE})
-    message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
-else()
-    message(FATAL_ERROR "Could NOT find qtpaths executable")
-endif()
-
 #execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} -query QT_INSTALL_PLUGINS OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
 execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
 message(STATUS "Plugin path: " ${PLUGINDIR})

fixed by using the commented code blocks

is there a good reason this code is commented?
maybe use the current code as fallback?

Is this the reason that it can't find my kvantum theme? All I have is "Fusion" and "Windows" when I try to configure via the GUI.

Obviously this needs to be called with pkgs.qt6.callPackage and not the other two.
It compiles perfectly fine but doesn't find the Kvantum (or any other) themes.
{
  stdenv,
  lib,
  fetchFromGitHub,
  wrapQtAppsHook,
  qtbase,
  qtsvg,
  qttools,
  qmake,
  qtwayland,
}:
stdenv.mkDerivation rec {
  pname = "qt6ct";
  version = "0.7";

  src = fetchFromGitHub {
    owner = "trialuser02";
    repo = "qt6ct";
    rev = version;
    sha256 = "sha256-7WuHdb7gmdC/YqrPDT7OYbD6BEm++EcIkmORW7cSPDE=";
  };

  nativeBuildInputs = [qmake qttools qtwayland wrapQtAppsHook];

  buildInputs = [qtbase qtsvg];

  qmakeFlags = [
    "LRELEASE_EXECUTABLE=${lib.getDev qttools}/bin/lrelease"
    "PLUGINDIR=${placeholder "out"}/${qtbase.qtPluginPrefix}"
  ];

  # meta = with lib; {
  #   description = "Qt5 Configuration Tool";
  #   homepage = "https://www.opendesktop.org/content/show.php?content=168066";
  #   platforms = platforms.linux;
  #   license = licenses.bsd2;
  #   maintainers = with maintainers; [ralith];
  # };
}

Is this the reason that it can't find my kvantum theme?

no. qt themes should be in $QT_PLUGIN_PATH on runtime (not on compiletime)

  qmakeFlags = [
    "LRELEASE_EXECUTABLE=${lib.getDev qttools}/bin/lrelease"

see also https://github.com/NixOS/nixpkgs/pull/214943

#31 should fix this.
Not sure what the idea behind setting the qtpaths executable from the path to lconvert, but I made it fallback to that only if qtpaths is not found normally.


Modify frontend Compliance suggestion API

Coverage decreased (-0.1%) to 19.506% when pulling 1f11d8c2990b296572270d2c02807157fa2f49d8 on alyiwang:kafka into 50e37279c6d343b1d3efb0fbb8957381cfff139f on linkedin:master.

Coverage decreased (-0.1%) to 19.506% when pulling 626cc469c1cc1075f35955240d1fdb6e45540197 on alyiwang:kafka into 50e37279c6d343b1d3efb0fbb8957381cfff139f on linkedin:master.


HDDS-8664. Support CodecBuffer for some of the remaining protobuf v2 codecs in hadoop-ozone.

What changes were proposed in this pull request?
HDDS-8582 added CodecBuffer for protobuf v2 codecs. In this JIRA, we change the remaining protobuf v2 codecs in hadoop-ozone.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-8664
How was this patch tested?
By existing unit tests.

SnapshotInfo seems not working well with copyObject(..); see HDDS-8665.

@adoroszlai , thanks a lot for reviewing this!


PTY support for TMUX, Script, etc.

I've tried running tmux and script on webvm/cheerpx with no success. I suspect it has something to do with partial pty support.
Would it be possible to make at least tmux work? I'm not sure what the precise issue is because I can't use tools like strace in the vm.
I have a webvm instance with a modified debian image that has tmux installed here: https://xenocide.wiki/webvm/
You can also find it in my forked repo.
Tmux would be great for not having to be stuck with one terminal only, but having the option to have multiple windows/panes open to run different commands in.

FWIW for things like script the problem was with the "openpty" function, for tmux im not sure.


Make Lookup react better to keyboard events

Make the OptionsMenu prevent default actions for events it handles, but only have LookupInput send events to OptionsMenu in the first place when the menu is actually being shown, so that default actions aren’t being prevented when the menu is hidden (e.g. after an option was selected).
Preventing the default Enter action (form submit) when the OptionsMenu is open is what we want for T305359; the Escape and Tab versions aren’t directly related, but feel sensible to me.
Bug: T305359

Not yet sure if this is really the way to go, but putting it up for discussion. It seems to work well when I make the equivalent edits to my<EMAIL_ADDRESS>file; trying to create a build in Wikit and copy that into node_modules/ produced some strange errors that I don’t understand.

Mh, that deploy to netlify is broken for me and when I try it out locally, it doesn't seem to filter results in the storybook lookup anymore?
Looking at the code it makes sense to me to treat Enter this way. But I'm not so sure about Tab, the desired behavior there is to "Select highlighted option and move focus to next element in the tab-order". Wouldn't the event.preventDefault(); interfere with moving the focus?
What is the behavior that is prevented for the Esc press?

Looking at the code it makes sense to me to treat Enter this way. But I'm not so sure about Tab, the desired behavior there is to "Select highlighted option and move focus to next element in the tab-order". Wouldn't the event.preventDefault(); interfere with moving the focus? What is the behavior that is prevented for the Esc press?

When I looked at the code, I felt like it made sense to generally prevent the default behavior for every event that we handle (since the ArrowUp and ArrowDown cases did this already). But I didn’t think about it too much, so let’s just remove the Tab and Esc parts again.

Mh, that deploy to netlify is broken for me and when I try it out locally, it doesn't seem to filter results in the storybook lookup anymore?

Let’s see if this works better when we only prevent default for Enter…

Pushed a new commit, but it still doesn’t seem to work properly in storybook…

Hm, the strange storybook behavior already seems to happen on the next branch without this change…

Okay, but with npm -C vue-components/ run build in wikit, and cp -a ~/git/wikit/vue-components/dist/ node_modules/@wmde/wikit-vue-components/ in new-lexeme, the lookup seems to work fine and the Enter behavior is as I would expect it.

Storybook fixed in #592, turned out to be not directly related.

Hm, should we cherry pick this to the master branch as well? (Though I’m not sure how the showMenu access would work there, tbh.)

Not sure. Apparently, this is not an issue for query builder or mismatch finder, so I think we can keep it in the next branch until someone there complains. And I don't foresee any new Vue2 projects that would use Wikit.


Expecting value: line 1 column 1 (char 0).

No matter which button is clicked on the page, it always reports an error: Something went wrong
Expecting value: line 1 column 1 (char 0).

I have tried Using Single Tool (https://github.com/OpenBMB/BMTools#22-use-a-single-tool), it failed with the RPM limit:

Thought:Retrying langchain.chat_models.openai.ChatOpenAI.completion_with_retry.._completion_with_retry in 1.0 seconds as it raised RateLimitError: Rate limit reached for default-gpt-3.5-turbo in organization org-5uHfrthyQsaRhlJTx3smBKQT on requests per min. Limit: 3 / min. Please try again in 20s. Contact us through our help center at help.openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://platform.openai.com/account/billing to add a payment method..

So, pay for it or give up.

Could you provide more detailed error information such as the exceptions raised by the backend?

There is no error in the backend, it should be a JSON parsing problem, because OpenAI’s limit of 3 requests per minute is triggered, the output of the model is not the expected JSON format, but an error text, so Expecting value: line 1 column 1 (char 0).

Could you provide more detailed error information such as the exceptions raised by the backend?

So it seems that your openai-key is limited by OpenAI. You can use another one and try it again. If you have other problem, please let us know to improve this repo. Thank you.

So it seems that your openai-key is limited by OpenAI. You can use another one and try it again. If you have other problem, please let us know to improve this repo. Thank you.

The Agent in LangChain supports using exponential backoff to retry when the number reaches the limit to avoid interruption. Can we learn from this aspect?


Enable OpenJ9 Attach API for JCK tests on zOS

This has done the trick, sanity.jck 400 jvmti tests now pass, overall results back down to only 45 failing out of 34,000


Goose AI

'''
Goose AI

pip install openai

Uses GPT-NeoX 20B to generate text.

input_query - A string, the input query (e.g. "what is a dog?")

output - A string, the generated text

openai.api_key - your GooseAI API key
'''
def GooseAI(input_query: str):
    openai.api_key = "YOUR_API_KEY"
    openai.api_base = "https://api.goose.ai/v1"
    # Create a completion, return results streaming as they are generated.
    # Run with `python3 -u` to ensure unbuffered output.
    completion = openai.Completion.create(
        engine="gpt-neo-20b",
        prompt=input_query,
        max_tokens=160
        )
    return completion.choices[0].text

No strong opinion. Huggingface API tool overlaps with this one.


Fix gray color variable

It seems that CSS variable name was inappropriate.
--gray-darken-10 -> --color-gray-darken-10
check-css-vars catch this bug and triggers error in CI in another PR.
❯❯❯ npm run check-css-vars

> check-css-vars
> scripts/check-css-vars.mjs

🚨 Error! 1 undefined CSS variables used:

--gray-darken-10

nice! thanks


[Examples Browser] UI updates

Includes enhancements and fixes for the examples browser application.

The code editor pane is now resizable, starts opened and at 30% width. #3602

The code editor pane now includes buttons to reload the example, switch the code language and view the examples source code. #3601

The PlayCanvas icon now opens the PlayCanvas github page on click

Fixes an issue where the examples list would not close #3603

Updated mobile UI:

I confirm I have read the contributing guidelines and signed the Contributor License Agreement.

Good improvements!
Although, that double padding (padding in the panel and then empty space around it, is losing usable space, especially on mobile.
More minimalistic UI would definitely work better on mobile.


Set the stylization of the code and configure the editor

[ ] Turn on the editor sync
[ ] Use the EditorConfig
[ ] Config the Prettier


Fix some layout issues in German translation

Please open a single big PR instead of individuals ones for every commit.

Please open a single big PR instead of individuals ones for every commit.

Oops, I'm sorry, I'll do that from now on


Use the new Google Tag Manager code

Its now best practice to use the Google Tag Manager code instead of the old Google Analytics code.
With Google Tag Manager you can use all kind of additional features.
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<id here>"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', '<id here>');
</script>

Done


feat: confirmation email on signup

"Press the link in the email we just sent you to confirm account creation"

You should check out React Email. It lets you use React to build email templates, simplifying what would otherwise be a tedious process. Most email clients only support outdated HTML standards, but React Email abstracts those complexities away, making it much easier.


Update Go versions in travis file to 1.6.4 and 1.7.4

Remove GO15VENDOREXPERIMENT which is unnecessary.
Remove go fmt call which didn't do anything.
Remove redundant go test -i call.

LGTM

@wallyqs I made one more change since your LGTM. I removed go get github.com/appc/spec/discovery because it wasn't being used anywhere.

LGTM


Assignment two

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)

submit assignment 2

What did you learn from the changes you have made?

sql coding (update, insert, delete, cross join)

Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?

na

Were there any challenges? If so, what issue(s) did you face? How did you overcome it?

na

How were these changes tested?

I run code in sqlite

A reference to a related issue in your repository (if applicable)

na

Checklist

[Y] I can confirm that my changes are working as intended

Dear Ernani Fantinatti @efantinatti ,
Thank you for checking and your comments!
#1 "1 - Partial. Almost good. Check the date table connection requirements to what is asked in the question."
Could you please add more details why points were reduced for this ?
The only thing that I found in task text in regard to date table connection is the following:
Additionally, include a date table.
Date table was included under name calendar_date. I also specified possible connection of this table with other tables in the commentary above the table. Have you expected something else here ?
#2 "2 - Partial.
-- Windowed Functions - Q3: Query is not correct. You can think in a simpler approach with COUNT() and Partition."
Could you please specify why this query is not correct?
Task: /* 3. Using a COUNT() window function, include a value along with each row of the
customer_purchases table that indicates how many different times that customer has purchased that product_id. */
Query in submission:
select *
, count() over (partition by customer_id, product_id order by customer_id, product_id) as total_times_product_id_purchased_by_customer
, count() over (partition by customer_id, product_id, market_date order by customer_id, product_id, market_date) as total_times_product_id_purchased_by_customer_during_visit
from customer_purchases
Field total_times_product_id_purchased_by_customer shows number of times product was purchased by customer for every row in customer_purchases table. I have manually checked on two customers and two products and quantities are correct, but it is possible that I am missing something...
#3
"Session 3:
3 - Partial.
-- DELETE - Q1: The WHERE clause condition is hardcoded. Think of a solution that it might process it without hardcoding a value. HINT. Think of minimal values,. Which function could find the minal value?"
Thank you for the hint, it should be fixed now:
delete from temp.product_units
where 1=1
and product_name = 'Apple Pie'
and snapshot_timestamp = (select min(snapshot_timestamp)
from temp.product_units )
BR,
Anna


How to manually update on R3nzskin, I still want to use it in 2024

Hi! Can someone guide me on how to manually update R3nzskin? I play on the China server, and since there's no Vanguard, I still want to use this application as it remains usable.

Hey, man, we are on the same server.

Hey, man, we are on the same server.

Do you know how to manually update, i still really want to use this app xd?

You know, we can only use 13.24 file injection to ensure the normal operation of the game without flashback. This is the only method that I can actually test before the author makes 14.1 optimization, although there are some risks.
原始邮件
发件人："Maqpwa"< @.*** >;
发件时间：2024/1/11 9:59
收件人："R3nzTheCodeGOD/R3nzSkin"< @.*** >;
抄送人："tangmuduo"< @.*** >;"Comment"< @.*** >;
主题：Re: [R3nzTheCodeGOD/R3nzSkin] How to manually update on R3nzskin, Istill want to use it in 2024 (Issue #1000)
Hey, man, we are on the same server.
Do you know how to manually update, i still really want to use this app xd?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

嘿，伙计，我们在同一个服务器上。

你知道怎么手动更新吗，我还真想用这个app xd？
Because the version 14.1 updated last night will flash back today and will not work normally, so my suggestion is to use it temporarily as I said, and wait for the optimized version.

No, guys, vanguard will be integreted into TP developed by Tentent.
It's hard to say we can fix it easily to use in China Server.

You will need a bypass to inject the DLL into the game.


Game Details View

Any chance of adding a game details view with box art, game description, rating, genre, players, etc similar to gameOS?

Would be great !


warning: suffixes on a tuple index are invalid

tower-web version: 0.3.7
rustc versions: stable-x86_64-unknown-linux-gnu - rustc 1.35.0 (3c235d560 2019-05-20) and nightly-x86_64-unknown-linux-gnu - rustc 1.36.0-nightly (3991285f5 2019-04-25)

I see this warning when compiling a crate that depends on tower-web:
warning: suffixes on a tuple index are invalid
   --> ...
    |
38  | / impl_web! {
...
143 | |     }
144 | | }
    | |_^ invalid suffix `usize`
    |
    = note: `usize` is *temporarily* accepted on tuple index fields as it was incorrectly accepted on stable for a few releases
    = help: on proc macros, you'll want to use `syn::Index::from` or `proc_macro::Literal::*_unsuffixed` for code that will desugar to tuple field access
    = note: for more context, see https://github.com/rust-lang/rust/issues/60210
    = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)

Is there a way to get rid of this warning, or is this expected (for now)? It sounds somewhat related / similar to https://github.com/carllerche/tower-web/pull/205 but I still see the warning using tower-web 0.3.7, which includes that fix.
Thanks!

There may have been some instances left, but I don't see those warnings after #205. Just to make sure, cargo update doesn't fix this, does it?

Shoot, my mistake. The warnings did go away after running cargo update. Thanks!


Add stress test to the language server to make sure it doesn't crash, in order to release it again.

Regarding the possibility of the crashes coming from parsing the files, this can be done in the usual integration test in the server. An idea to do it is to send the same files a lot of times
General smoke tests must be added to make sure the server is loading properly with the extension.

@wolmir let's please rename it to "Test and release LSP". Specifics (like stress testing, e2e, etc, etc) - can be checkboxes inside

Related to #1192


Update scripts dependencies

Closes https://github.com/opengeospatial/geoparquet/issues/178
Now
poetry install
poetry run python generate_example.py

works on my machine

This fails the tests because it uses a later version of GeoPandas/Pyproj and writes PROJJSON with a schema of v0.6. I created https://github.com/opengeospatial/geoparquet/issues/180

This should probably be a dedicated ticket, but I've run into this same problem that the CI job is hitting with the projjson schema dependency.  It is not a real problem until a version of projjson is released that is incompatible with https://proj.org/schemas/v0.5/projjson.schema.json.  But it looks like we need to relax the test_json_schema.py so it isn't as strict about the version that is included in the generated projjson.

But it looks like we need to relax the test_json_schema.py so it isn't as strict about the version that is included in the generated projjson.

It looks like pytest actually succeeds (you can run poetry run python generate_example.py && poetry run pytest locally; it works for me). It's these lines in the CI:
https://github.com/opengeospatial/geoparquet/blob/ad32ccaf5534a3680e62bf9de3f9837befd9c717/.github/workflows/scripts.yml#L57-L61

Just saw the same after re-reading.  Yes, test -z "$(git status --porcelain)" is the problem.

Woohoo.  Thanks, @kylebarron

I'll merge this so we can proceed with the re-release.  Hope that sounds ok.  Thanks for fixing it up.


Handle connections more gracefully

Uses the openConnectionDialog code point to connect to the proper server before continuing.

Is this fixing a bug? And wouldn't it be better to check if there's an existing connection and if there isn't then open a connection dialog? Forcing the connection dialog to be opened every time isn't the greatest experience I would think.

The code that was being used before is now deprecated.
Regarding the connection dialog: The import extension mimics the behavior of the profiler extension with this change. If the desire is to keep the old functionality, that can be done too.


Running from Console gives Invalid Framework Issue

Description
When running unit tests from the command line with Framework parameter, I get invalid framework error.
Steps to reproduce
Run:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" C:\agent\_work\1\s\Future150.Business.Tests\bin\Release\netcoreapp1.1\netcoreapp1.1\Future150.Business.Tests.dll "/TestCaseFilter:Category!=\"Integration Tests\"" /EnableCodeCoverage "/Framework:\".NetCoreApp,Version=v1.1\"" /logger:trx

Expected behavior
Tests run
Actual behavior
I get the following error:
Error: Invalid .Net Framework version:".NetCoreApp,Version=v1.1". Supported .Net Framework versions are Framework35, Framework40 and Framework45.
Vstest failed with error. Check logs for failures. There might be failed tests.
Error: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe failed with return code: 1
No results found to publish.
Vstest exited with return code: 1.

Environment
I was able to reproduce this on my dev machine from the command line & on my CI build.

It seems I need a specific version of vstest.console.  It is sorta mentioned in this post: https://blogs.msdn.microsoft.com/visualstudioalm/2016/11/29/evolving-the-test-platform-part-3-net-core-convergence-and-cross-plat/
When it says:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions is the folder where extensions are installed, remember? Locate vstest.console.exe under this folder.

There has to be an easier way to do that, right?

@zmckinnon C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe (TPv1)  doesn't support Netcore app.
Please use vstest.console.exe(TPv2), which is under  C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\<random_folder>\. Built to support both Full CLR and NetCore assemblies.
Please notice currently TPv2 doesn't support /EnableCodeCoverage.

We should include the vstest.console.exe from TPv2 in PATH set in Developer Command Prompt.


[BUG] Metrics for memory not working correctly

At least for:
libvirt_domain_memory_stats_unused_bytes
libvirt_domain_memory_stats_used_percent
I got wrong values. For 1st it is 3,66GB and 2nd is 7,29%, but should be total-used=1,6Gi and 2,2/3,8*100=58%.
System output:
free -h
          total        used        free      shared  buff/cache   available

Mem:          3.8Gi       2.2Gi       197Mi       3.0Mi       1.4Gi       1.3Gi
Swap:            0B          0B          0B
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"

Have you enabled memory statistics fetching for the balloon device? Not doing this may cause issues like that.

Any hind how/where to do that please?

Again...got a metrics:
libvirt_domain_memory_stats_actual_balloon_bytes{domain="xx"} 4.294967296e+09
libvirt_domain_memory_stats_available_bytes{domain="xx"} 4.11518976e+09
libvirt_domain_memory_stats_disk_cache_bytes{domain="xx"} 1.62963456e+08
libvirt_domain_memory_stats_major_fault_total{domain="xx"} 0
libvirt_domain_memory_stats_minor_fault_total{domain="xx"} 0
libvirt_domain_memory_stats_rss_bytes{domain="xx"} 0
libvirt_domain_memory_stats_unused_bytes{domain="xx"} 3.930349568e+09
libvirt_domain_memory_stats_usable_bytes{domain="xx"} 3.812745216e+09
libvirt_domain_memory_stats_used_percent{domain="xx"} 7.349467743621135
and it is on the system:
free
          total        used        free      shared  buff/cache   available

Mem:        4026324     2221720      119064        2764     1685540     1535432
Swap:             0           0           0

Where to get used/free/available? Have no idea based on metrics that got from exporter.
Also used/free=55,2% and not 7,35% as it is in libvirt_domain_memory_stats_used_percent.
Any help?


Support LoggingLevelSwitch?

Hi,
Are there any plans to support LoggingLevelSwitch?
Unless I'm missing something, not passing restrictedToMinimumLevel will default to verbose.
Thanks in advance,
Jean

Hi @frg - this will include it: https://github.com/serilog/serilog-sinks-console/issues/7
HTH!
Nick

#19 will take care of this.


Force first and last chunks order

Hello all,
First of all, good job on this and thank you:)
Now on to my question: I need the first chunk to arrive BEFORE all subsequent chunks are sent and for the last one to be sent only AFTER all chunks arrived.
In between, I still want several chunks to be sent in simultaneously so I do not wish to set simultaneousUploads to 1.
I see there is an option called prioritizeFirstAndLastChunk:
https://github.com/23/resumable.js/blob/master/resumable.js#L869
but:
a. it's not exactly what I need
b. even when setting it to true, on several occasions, I still get several random chunks before I get the first one
What's the best way to implement such a change to the current resumable.js code?
Thanks in advance,

Why exactly would you need that functionality?

Hi @bertsinnema,
I testing resumeable JS as means to upload onto the Kaltura Server, see:
https://github.com/kaltura/kaltura-parallel-upload-resumablejs/
On the server side, we check whether resume was set to true:
https://github.com/kaltura/server/blob/Mercury-13.3.0/alpha/apps/kaltura/lib/kUploadTokenMgr.php#L70
if so, we assume chunks of this file are already in place and we need to call the handleResume() method. If the first chunk is not the first to arrive on the server side, we'll hit:
https://github.com/kaltura/server/blob/Mercury-13.3.0/alpha/apps/kaltura/lib/kUploadTokenMgr.php#L221
and the operation will fail.
Here:
https://github.com/kaltura/server/blob/Mercury-13.3.0/alpha/apps/kaltura/lib/kUploadTokenMgr.php#L78
we check whether finalChunk was set to true and if it is, we set the status for this upload token [which basically represents an upload "session"] to UPLOAD_TOKEN_FULL_UPLOAD. Once the status is set to that status, we assume the upload was completed and therefore do no allow additional chunks to be uploaded with that particular token.
And so, if the last chunk was sent before all the others were processed, the operation fails here:
https://github.com/kaltura/server/blob/Mercury-13.3.0/alpha/apps/kaltura/lib/kUploadTokenMgr.php#L53
And that's basically the reason why I need this.
Thanks,

I am facing the same issue. Is this resolved with any other ticket?


Extra parameter needed not in documentation?

When using method auth.userLogin I am getting an error code 4 URL_PARAM_MISSING_PARTNER_ID. The documentation says that you only need 5 parameters, the method name, the login type, username, password, and partnerAuthToken. But when I send
{ "loginType" : "user", "username" : "uname", "password" : "passwd", "partnerAuthToken" : "token"} to _http://tuner.pandora.com/services/json/?method=auth.userLogin_ it still says I am missing a parameter.
I've tried to send to _http://tuner.pandora.com/services/json/?method=auth.userLogin&partnerId=id_ as well but this also fails.

auth_token is missing, see
https://github.com/PromyLOPh/pianobar/blob/master/src/libpiano/request.c#L105

I'm a bit confused because in this instance, isn't the auth_token url parameter the same as the partnerAuthToken you send via the json? Or are they different? I'm sending to _https://tuner.pandora.com/services/json/?method=auth.userLogin&auth_token=token&partner_id=id_ now and it is returning an error code 0.

As far as I see you’re also missing the syncTime key in your JSON
request.

Ok I understand what I'm doing wrong now. Sorry for the confusion!

I'm sorry to bother you again, but this is just unbelievably frustrating. I keep receiving error code 0 when trying to log in as a user. I am sending this json:
{   "syncTime":<PHONE_NUMBER>,   "password": "*********",   "loginType": "user",   "partnerAuthToken": "token",   "username"<EMAIL_ADDRESS>} where syncTime is the (current time of partner log in minus the decrypted time) plus current time of user log in
my URL is this https://tuner.pandora.com/services/json/?method=auth.userLogin&auth_token=TOKEN&partner_id=ID

Hi!
I am having the same issue that you. I don't know who to obtain the auth_token parameter for the url. Is it the same as the partner authentification token?

@TheWithz: Alot of implementations are available already, have a look at
https://6xq.net/pandora-apidoc/json/implementations/ Either one of these
already fits your needs or you can look at their requests and figure out
what exactly is different from yours. Error 0 is pretty generic and I
don’t know what is wrong at the moment. Are you encrypting the HTTP POST
body?
@brunoescalona: auth_token is the same as partnerAuthToken for this
request. Make sure special chars are urlencoded.

@PromyLOPh Thank you for the response.
@TheWithz are you still having the same issue with the syncTime? Could you give me an example to calculate that parameter? (I have no idea how to decrypt the time obtained from Pandora).

@brunoescalona I used something called Blowfish to decrypt the sync time. What language are you using?
@PromyLOPh I'm writing an API wrapper in Java, because there is none yet, and I want to interface it with another Java project I am working on. I encrypted the JSON post body with the partner password listed in the API doc. Was there a different encryption I am supposed to be using?

@TheWithz right now I am not using any language. I want to implement it in Node.js but at the moment I am trying to obtain as much info as I can. At the moment I am using POST request by hand  with POSTMAN tool, but I am not able to obtain any results. Just the partner authentication.
In the login request I get the 0 error code. I am stucked right now.

encrypted the JSON post body with the partner password listed in the API
doc. Was there a different encryption I am supposed to be using?
Nope, just checking.

Just to clarify in case I'm getting this wrong, am I supposed to encrypt the final json or each key value pair individually

The entire request body:
Unless noted otherwise JSON-encoded requests sent by the client within
the HTTP POST body are encrypted using Blowfish ECB and converted to
hexadecimal notation with lowercase letters.
-- https://6xq.net/pandora-apidoc/json/

@TheWithz Hi, How do you get the syncTime decoded exactly? I am using blowfish with the partner password as key but I can't get a time. I am using blowfish.

@brunoescalona at first I got it working, but now two weeks later I am receiving error code 13s on any command i try to run. I think it might have something to do with the fact that Pandoras website got updated...

@TheWithz ok! but I would like just to know how did you do the decoding stuff I was trying to obtain something valid but I just get incoherent data and numbers....

@brunoescalona I'm trying to do the same and create a Node.js API.  If so, how did you fix it?

@FireController1847 sorry for my delay.
No at the moment I have stopped that project but I am still stucked in that point. I can obtain the partner login but I am not able to decode properly the syncTime.

@brunoescalona Aww, alright.

@FireController1847 here I have all the code I did for the partner authentication but I could not do the login. Just it is usefull for you....
pandora node.js
If you can decode the syncTime or make some advance just let me know please :)

@brunoescalona I was able to decode syncTime using the blowfish module you were talking about. Maybe you were having issues for it? Even with syncTime, I couldn't get past the Code 0 error on Postman.

Looking at request.js, you’re using the wrong password to decrypt the
syncTime. You need the “decrypt password” listed here:
https://6xq.net/pandora-apidoc/json/partners/#partners

@PromyLOPh I'm pretty sure I was using that, as it's giving me the correct syncTime from my knowledge. https://img.visual-fire.com/942yk.png

It's be great if you guys could talk about this on me within Discord. Add me, my name is FireController1847#9085 @PromyLOPh @brunoescalona

@PromyLOPh Thank you!!!!!! I didn't see the decrypt password and I was using the password itself.
@FireController1847 how are you obtaining the syncTime? Are you using just the decoded syncTime or are you using this formula? Maybe that could solve the problem:
https://6xq.net/pandora-apidoc/json/

Synchonized time. Calculation: current time + (time of Partner login request – syncTime from Partner login response). This is a protection against replay-attacks.

@brunoescalona I'm doing exactly what's in the image above.

@TheWithz Are you sending the Body encoded? I think in the user login you should send it encoded.

Unless noted otherwise JSON-encoded requests sent by the client within the HTTP POST body are encrypted using Blowfish ECB and converted to hexadecimal notation with lowercase letters.

My user brunoescalona#0787

@TheWithz How did you fix that damn Code 0 error?

@brunoescalona I've moved on from the Code 0 error to a... Code 1001?  I loop through the key of every object and encrypt it that way. Then the object ends up being stuff like {"loginType": "EE1EE3EBFD..."}

@FireController1847 hi I left the project time ago haha. I could not connect so I just leave it at the end.

@brunoescalona I keep leaving it but then I keep coming back thinking I'll do it this time.... of course, every time I do it I just receive the same ol' Code 0 error. Until recently, when I figured out something extremely important: We were encrypting incorrectly.

@FireController1847 why we were encryting incorrectly?

@brunoescalona When we had the object, we did not need to stringify it and then encrypt it, but instead we needed to encrypt every value within the object.
Encrypted User Login Info: {
  "loginType": "EE1EE3EBFD757FCA",
  "username": "XXXX",
  "password": "XXXX",
  "partnerAuthToken": "F64EAFC5B1FA3A2C7388867A53FA787B7596A4F3E34A403BF6A8A942F41E1DFA1A00444A886473BB",
  "syncTime": null
}

@FireController1847 ok I understand.... so when I have time I will try it again.

@brunoescalona I'll be on Discord if you want to chat.

@FireController1847 ok! if I have time I will connect. :) thank you!

@TheWithz How you actually decoded this "syncTime"?
I can't do it

Seeing an error 9 with the following request after a successful partner login:
{"loginType":"user","username":"xxxxx@xxxxx.xxx","password":"xxxxxxxx","partnerAuthToken":"xxxxxxxxxxxx","syncTime":0}

array(3) {
  ["auth_token"]=>
  string(34) "xxxxx"
  ["partner_id"]=>
  string(2) "xx"
  ["method"]=>
  string(14) "auth.userLogin"
}

Where partnerAuthToken and auth_token are the value returned from the successful partner login.
Any thoughts? Not sure if 0 is a valid syncTime value, but wouldn't think error 9 would be the response in that case.

@abreksa4 SyncTime cannot be 0, it's a built number using Date.now() and something else (for JS). It's been so long, though, that I can't remember. Sorry :(

@FireController1847 No problem, thanks for the pointer. Looks like my application (read: environment) was encrypting/decrypting the data incorrectly. syncTime is no longer zero, but getting a 1002 error now (INVALID_PARTNER_LOGIN) while using the info provided in the docs here for partner credentials, same as the rest of the implementations I've looked at.
Anyone experiencing that? Not really under the scope of this ticket, but figured I'd mention it while I try to work it out.

Which partner credentials are you using? This one works fine for pianobar: https://6xq.net/pandora-apidoc/json/partners/#android

@PromyLOPh I'm using the android credentials as well, though I cycled through the rest of the available sets and got the same error, so thinking it's an issue on my and if other projects are using them successfully.

Alright, figured since I got this resolved I'd post the results here.
Turned out to be an issue with PHP 7.2 dropping mcrypt, and the ensuing headaches caused by trying to use openssl instead.
Asked the question on freenode in ##php, and was pointed at http://php.net/manual/en/function.openssl-encrypt.php#121545 within 20 minutes, courtesy of Sammitch.
Used the magic methods included in that comment and now the api calls are working.
Link to the updated php library fork for anyone interested: https://github.com/abreksa4/php-pandora-api

@abreksa4 You're saying your PHP library is working. Do you mind talking with me on Discord or Email so I can try and get past the userLogin? I'm still getting Code 0. Add me on Discord FireController1847#3577 or email me at<EMAIL_ADDRESS>as if you could give me some tips and questions that would be amazing (rather than me trying to decode your PHP library, one of the few languages I understand unlike C, Python, and C# xD)

Scratch that on that last comment. I cannot believe it, but I finally got it to work. Thank you everyone who was part of and helped in this thread (even though it's not mine xD)!


Provide connection params for subscriptions.

How can I send connection parameters with my subscriptions?

I was having the same question, but then I came across this: https://github.com/prisma-labs/graphql-playground/issues/770.


Crash when compiling mhlo.dynamic_iota.

This is from experiments with JAX+IREE and dynamic shapes. This bug is about mhlo.dynamic_iota.
This may be related to #7888 about mhlo.dynamic_reshape.
Repro (put the code below in iree_repro.py and run pythoniree_repro.py:
from iree.compiler import compile_str

CODE = """
module @jit_f.4  {
  func public @main(%arg0: tensor<?xf32> {mhlo.is_same_data_across_replicas} loc(unknown)) -> tensor<?xi32> {
    %0 = "mhlo.get_dimension_size"(%arg0) {dimension = 0 : i64} : (tensor<?xf32>) -> tensor<i32>
    %3 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32>
    %4 = "mhlo.concatenate"(%3) {dimension = 0 : i64} : (tensor<1xi32>) -> tensor<1xi32>
    %5 = "mhlo.dynamic_iota"(%4) {iota_dimension = 0 : i64} : (tensor<1xi32>) -> tensor<?xi32>
    return %5 : tensor<?xi32>
  }
}
"""

Error:
$ python tests/iree_repro.py
Traceback (most recent call last):
  File "/Users/necula/Source/jax/tests/iree_repro.py", line 15, in <module>
    compiled_flatbuffer = compile_str(CODE, target_backends=["dylib"], input_type="mhlo")
  File "/Users/necula/.pyenv/versions/jax39/lib/python3.9/site-packages/iree/compiler/tools/core.py", line 262, in compile_str
    result = invoke_immediate(cl, immediate_input=input_bytes)
  File "/Users/necula/.pyenv/versions/jax39/lib/python3.9/site-packages/iree/compiler/tools/binaries.py", line 201, in invoke_immediate
    raise CompilerToolError(process)
iree.compiler.tools.binaries.CompilerToolError: Error invoking IREE compiler tool ireec
Diagnostics:
LLVM ERROR: SmallVector unable to grow. Requested capacity<PHONE_NUMBER>98336) is larger than maximum value for size type<PHONE_NUMBER>)
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /Users/necula/.pyenv/versions/jax39/lib/python3.9/site-packages/iree/compiler/tools/../_mlir_libs/ireec - --iree-input-type=mhlo --iree-vm-bytecode-module-output-format=flatbuffer-binary --iree-hal-target-backends=dylib --iree-mlir-to-vm-bytecode-module --iree-llvm-embedded-linker-path=/Users/necula/.pyenv/versions/jax39/lib/python3.9/site-packages/iree/compiler/tools/../_mlir_libs/iree-lld --mlir-print-debuginfo --mlir-print-op-on-diagnostic=false
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  libIREECompilerAggregateCAPI.dylib 0x00000001116a29d7 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4715143
1  libIREECompilerAggregateCAPI.dylib 0x00000001116a18f8 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4710824
2  libIREECompilerAggregateCAPI.dylib 0x00000001116a2ff0 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4716704
3  libsystem_platform.dylib           0x00007ff80c349e2d _sigtramp + 29
4  libIREECompilerAggregateCAPI.dylib 0x0000000114c6eea8 llvm::Module::getDarwinTargetVariantSDKVersion() const + 722760
5  libsystem_c.dylib                  0x00007ff80c280d10 abort + 123
6  libIREECompilerAggregateCAPI.dylib 0x000000011160a2fd mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4090797
7  libIREECompilerAggregateCAPI.dylib 0x0000000111654ae2 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4395922
8  libIREECompilerAggregateCAPI.dylib 0x0000000111654911 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4395457
9  libIREECompilerAggregateCAPI.dylib 0x00000001125a1c61 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::Check::ExpectTrueOp>() + 1613489
10 libIREECompilerAggregateCAPI.dylib 0x00000001125a158d mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::Check::ExpectTrueOp>() + 1611741
11 libIREECompilerAggregateCAPI.dylib 0x0000000114a2519f llvm::Loop::getLocRange() const + 3376191
12 libIREECompilerAggregateCAPI.dylib 0x0000000114c54f31 llvm::Module::getDarwinTargetVariantSDKVersion() const + 616401
13 libIREECompilerAggregateCAPI.dylib 0x0000000114a2fe01 llvm::Loop::getLocRange() const + 3420321
14 libIREECompilerAggregateCAPI.dylib 0x0000000114a28e4d llvm::Loop::getLocRange() const + 3391725
15 libIREECompilerAggregateCAPI.dylib 0x0000000114a2bfab llvm::Loop::getLocRange() const + 3404363
16 libIREECompilerAggregateCAPI.dylib 0x000000011253e4b2 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::Check::ExpectTrueOp>() + 1206018
17 libIREECompilerAggregateCAPI.dylib 0x00000001116d2f1f mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4913103
18 libIREECompilerAggregateCAPI.dylib 0x00000001116d3273 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4913955
19 libIREECompilerAggregateCAPI.dylib 0x00000001116d4814 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 4919492
20 libIREECompilerAggregateCAPI.dylib 0x00000001112383f3 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 85155
21 libIREECompilerAggregateCAPI.dylib 0x00000001112364b0 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 77152
22 libIREECompilerAggregateCAPI.dylib 0x00000001145682ef llvm::MachineFunction::verify(llvm::Pass*, char const*, bool) const + 10589887
23 libIREECompilerAggregateCAPI.dylib 0x00000001112396ff mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 90031
24 libIREECompilerAggregateCAPI.dylib 0x00000001112390d3 mlir::TypeID mlir::detail::TypeIDExported::get<mlir::iree_compiler::IREE::VM::YieldOp>() + 88451
25 dyld                               0x000000011b4834fe start + 462

Invoked with:
 ireec /Users/necula/.pyenv/versions/jax39/lib/python3.9/site-packages/iree/compiler/tools/../_mlir_libs/ireec - --iree-input-type=mhlo --iree-vm-bytecode-module-output-format=flatbuffer-binary --iree-hal-target-backends=dylib --iree-mlir-to-vm-bytecode-module --iree-llvm-embedded-linker-path=/Users/necula/.pyenv/versions/jax39/lib/python3.9/site-packages/iree/compiler/tools/../_mlir_libs/iree-lld --mlir-print-debuginfo --mlir-print-op-on-diagnostic=false

This ends up getting pretty far for me and dying on a TODO - it looks like some additional data-dependent shape handling is required. We really need to be detensoring these things - this is still computing the shape on device and reading it back. @ScottTodd did detensoring die?
That's a 😢 backtrace - no clue why it has some symbols but they are all wrong - if it were stripped I'd not expect to see any of those. @stellaraccident any ideas?

Actually, there's a root bug here with mhlo.get_dimension_size:
// -----// IR Dump After ConvertShapeToStandard //----- //
module @jit_f.4  {
  func public @main(%arg0: tensor<?xf32> {mhlo.is_same_data_across_replicas}) -> tensor<?xi32> {
    %0 = "mhlo.get_dimension_size"(%arg0) {dimension = 0 : i64} : (tensor<?xf32>) -> tensor<i32>
    %1 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32>
    %2 = "mhlo.dynamic_iota"(%1) {iota_dimension = 0 : i64} : (tensor<1xi32>) -> tensor<?xi32>
    return %2 : tensor<?xi32>
  }
}

// -----// IR Dump After Canonicalizer //----- //
func public @main(%arg0: tensor<?xf32> {mhlo.is_same_data_across_replicas}) -> tensor<?xi32> {
  %0 = mhlo.constant dense<-1> : tensor<1xi32>
  %1 = "mhlo.dynamic_iota"(%0) {iota_dimension = 0 : i64} : (tensor<1xi32>) -> tensor<?xi32>
  return %1 : tensor<?xi32>
}

the canonicalizer there is folding the dimension query to -1, the sentinel for dynamic dimensions 🤦
There's still potential IREE issues after that, but we also hit some silly stuff with the index_cast:
    %cst = arith.constant dense<-1> : tensor<1xi32>
    %0 = arith.index_cast %cst : tensor<1xi32> to tensor<1xindex>
    %1 = tensor.extract %0[%c0] : tensor<1xindex>
->
  %cst = arith.constant dense<-1> : tensor<1xi32>
  %0 = linalg.init_tensor [1] : tensor<1xindex>
  %1 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} ins(%cst : tensor<1xi32>) outs(%0 : tensor<1xindex>) {
  ^bb0(%arg1: i32, %arg2: index):  // no predecessors
    %7 = arith.index_cast %arg1 : i32 to index
    linalg.yield %7 : index
  } -> tensor<1xindex>
  %2 = tensor.extract %1[%c0] : tensor<1xindex>

This is because of the use of i32 instead of index, but also we really shouldn't be doing index casts as dispatches - detensoring would solve that (in this case, hopefully).

(I'll fix the late-stage stream dialect bug around data-dependent shape query materialization, but the MHLO issue should be routed to https://github.com/tensorflow/mlir-hlo for visibility)

This ends up getting pretty far for me and dying on a TODO - it looks like some additional data-dependent shape handling is required. We really need to be detensoring these things - this is still computing the shape on device and reading it back. @ScottTodd did detensoring die?

It should still be integrated behind the -iree-flow-enable-linalg-detensorize flag, which defaults to off, but I/we need to spent a bit of time thinking through the edge cases and adding test coverage. It's been in a weird spot where it hasn't been necessary for correctness, and I'm not sure if we'd want it to be. In many cases we think it will be helpful for performance, but there are a few cases where that is less certain (this thread on Discord comes to mind: "today if we turned it on we'd create more of these [code patterns that are not well optimized] in models that didn't otherwise have them").

If people start doing dynamic shape stuff we'll need it in some fashion - all these silly frontends put shapes in tensors. Being correct does not imply being usable and we won't be able to hide behind that next year :)

(pytorch doesn't)

(I'll fix the late-stage stream dialect bug around data-dependent shape query materialization, but the MHLO issue should be routed to https://github.com/tensorflow/mlir-hlo for visibility)

Yeah, I've fixed a few of these shoddy canonicalizers. Will need an upstream patch.

This ends up getting pretty far for me and dying on a TODO - it looks like some additional data-dependent shape handling is required. We really need to be detensoring these things - this is still computing the shape on device and reading it back. @ScottTodd did detensoring die?
That's a 😢 backtrace - no clue why it has some symbols but they are all wrong - if it were stripped I'd not expect to see any of those. @stellaraccident any ideas?

First I'm seeing the symbol issue, but I note that this is on osx without the symbolizer. It happens that those symbols are some of the only ones being emitted with default visibility so the last chance stack dumper is likely just choosing a close match, and those are the closest.
Should make a separate issue for generating release binaries with at least some minimal symbols. Probably worth the cost.

The issue deeper down stems from these shape tensors getting pulled into dispatch regions weirdly:
func @main(%arg0: !hal.buffer_view {mhlo.is_same_data_across_replicas}) -> !hal.buffer_view attributes {iree.abi.stub} {
  %c-1 = arith.constant -1 : index
  %c0 = arith.constant 0 : index
  %0 = linalg.init_tensor [] : tensor<index>
  %1 = linalg.generic {indexing_maps = [affine_map<() -> ()>], iterator_types = []} outs(%0 : tensor<index>) {
  ^bb0(%arg1: index):  // no predecessors
    linalg.yield %c-1 : index
  } -> tensor<index>
  %2 = flow.tensor.reshape %1 : tensor<index> -> tensor<1xindex>
  %3 = tensor.extract %2[%c0] : tensor<1xindex>
  %4 = linalg.init_tensor [%3] : tensor<?xi32>
  %5 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} outs(%4 : tensor<?xi32>) {
  ^bb0(%arg1: i32):  // no predecessors
    %7 = linalg.index 0 : index
    %8 = arith.index_cast %7 : index to i32
    linalg.yield %8 : i32
  } -> tensor<?xi32>
  %6 = hal.tensor.export %5 : tensor<?xi32>{%3} -> !hal.buffer_view
  return %6 : !hal.buffer_view
}

I can surmise why DispatchLinalgOnTensors pulls in the shape tensor %2 instead of the extracted shape dimension %3:
...
  %1 = flow.tensor.reshape %0 : tensor<index> -> tensor<1xindex>
  %2 = tensor.extract %1[%c0] : tensor<1xindex>
  %3 = flow.dispatch.workgroups[%2, %c1, %c1](%1) : (tensor<1xindex>) -> tensor<?xi32>{%2} =
      (%arg1: !flow.dispatch.tensor<readonly:1xindex>, %arg2: !flow.dispatch.tensor<writeonly:?xi32>) {
    %c0_0 = arith.constant 0 : index
    %5 = flow.dispatch.tensor.load %arg1, offsets = [], sizes = [], strides = [] : !flow.dispatch.tensor<readonly:1xindex> -> tensor<1xindex>
    %6 = tensor.extract %5[%c0_0] : tensor<1xindex>
    %7 = linalg.init_tensor [%6] : tensor<?xi32>
    %workgroup_size_0 = flow.dispatch.workgroup.size[0] : index
    %workgroup_id_0 = flow.dispatch.workgroup.id[0] : index
    %workgroup_count_0 = flow.dispatch.workgroup.count[0] : index
    %8 = affine.apply affine_map<()[s0, s1] -> (s0 * s1)>()[%workgroup_id_0, %workgroup_size_0]
    %9 = affine.apply affine_map<()[s0, s1] -> (s0 * s1)>()[%workgroup_count_0, %workgroup_size_0]
    scf.for %arg3 = %8 to %6 step %9 {
      %10 = affine.min affine_map<(d0, d1)[s0] -> (d0, -d1 + s0)>(%workgroup_size_0, %arg3)[%6]
      %11 = tensor.extract_slice %7[%arg3] [%10] [1] : tensor<?xi32> to tensor<?xi32>
      %12 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} outs(%11 : tensor<?xi32>) {
      ^bb0(%arg4: i32):  // no predecessors
        %13 = linalg.index 0 : index
        %14 = affine.apply affine_map<(d0, d1) -> (d0 + d1)>(%13, %arg3)
        %15 = arith.index_cast %14 : index to i32
        linalg.yield %15 : i32
      } -> tensor<?xi32>
      flow.dispatch.tensor.store %12, %arg2, offsets = [%arg3], sizes = [%10], strides = [1] : tensor<?xi32> -> !flow.dispatch.tensor<writeonly:?xi32>{%6}
    }
    flow.return
  }
  %4 = hal.tensor.export %3 : tensor<?xi32>{%2} -> !hal.buffer_view
  return %4 : !hal.buffer_view
}

I think it's conditional as to whether we want the load/extract to be moved inside of the region - in this case it's bad as it keeps the shape tensor live but in other cases it could remove host/device hazards. Detensoring would make this all moot.
The issue is that flow->stream conversion needs to get the shapes for all the bindings, and here because of the internal shape data dependency within the region my simple analysis can't find it. I'll see if I can't find a workaround to make this all work, but I'm not proud of what is happening here 😢

☕ still kicking in, but I'm not sure I'll be able to make this work - we can't have that index tensor crossing the dispatch boundary - index bit width is undefined in the case of multiple devices. @MaheshRavishankar can we have the dispatch region formation logic not try to fold in things with tensor as a workaround? index arguments are fine (like the extracted shape dimension) but the tensors aren't.

(it's fine to move index tensors inside, just so long as we never have I/O edges as index tensors - so if there was a tensor -> cast to tensor -> do stuff on index sequence we could pull all those in so long as the tensor is what crossed the boundary)

might be worth popping the stack up a bit. Having linalg.generic operation operating on index types is strange. I am assuming all "index" operations of this sort should run on the host. Having a linalg.generic operating on index would meant the index computation is done on the host. In this case
 %0 = linalg.init_tensor [] : tensor<index>
  %1 = linalg.generic {indexing_maps = [affine_map<() -> ()>], iterator_types = []} outs(%0 : tensor<index>) {
  ^bb0(%arg1: index):  // no predecessors
    linalg.yield %c-1 : index
  } -> tensor<index>
  %2 = flow.tensor.reshape %1 : tensor<index> -> tensor<1xindex>
  %3 = tensor.extract %2[%c0] : tensor<1xindex>

should just be
%c-1 = arith.constant -1 : index

I think we may want them on device at some point depending on how the frontends/users use them - but am fine saying today they shouldn't be. Maybe that is a stepping stone for detensoring as well: detensor all the index tensors only.
I'm adding a verifier to flow.dispatch.workgroups so we'll at least get good diagnostics on this there.

Looking further
%c-1 = arith.constant -1 : index
  %c0 = arith.constant 0 : index
  %0 = linalg.init_tensor [] : tensor<index>
  %1 = linalg.generic {indexing_maps = [affine_map<() -> ()>], iterator_types = []} outs(%0 : tensor<index>) {
  ^bb0(%arg1: index):  // no predecessors
    linalg.yield %c-1 : index
  } -> tensor<index>
  %2 = flow.tensor.reshape %1 : tensor<index> -> tensor<1xindex>
  %3 = tensor.extract %2[%c0] : tensor<1xindex>
  %4 = linalg.init_tensor [%3] : tensor<?xi32>

If I am reading this right, %3 has a value of -1 and then
%4 = linalg.init_tensor[%3] : tensor<?xi32>

is allocating a tensor of size -1 . Something seems off here?

Yeah, that's the busted shape dim query in mhlo returning the -1 sentinel for the dimension lol - lots of bugs in this bug :P

Stella's magic const expr eval stuff will take care of that linalg generic returning -1, though I do think there'd be value in linalg being able to do simple ones like that (assuming tosa/mhlo are going to be coming in with things like this - I think we can wait and see a bit longer).

yeah totally. This is just detensoring though. So it already happens to some extent. I'd like to make sure this is valid IR before going down the path of "needs to be fixed in linalg".

After Rob's work mhlo.get_dimension_size support (fix for canonicalization and lowering to tensor.dim), the example above gets transformed by MHLO input conversion as follows:
$ iree-opt --iree-mhlo-input-transformation-pipeline dynamic_iota.mlir
#map = affine_map<(d0) -> (d0)>
module @jit_f.4 {
  func public @main(%arg0: tensor<?xf32> {mhlo.is_same_data_across_replicas}) -> tensor<?xi32> {
    %c0 = arith.constant 0 : index
    %0 = tensor.dim %arg0, %c0 : tensor<?xf32>
    %1 = arith.index_cast %0 : index to i32
    %2 = tensor.from_elements %1 : tensor<i32>
    %3 = tensor.expand_shape %2 [] : tensor<i32> into tensor<1xi32>
    %4 = arith.index_cast %3 : tensor<1xi32> to tensor<1xindex>
    %5 = tensor.extract %4[%c0] : tensor<1xindex>
    %6 = linalg.init_tensor [%5] : tensor<?xi32>
    %7 = linalg.generic {indexing_maps = [#map], iterator_types = ["parallel"]} outs(%6 : tensor<?xi32>) {
    ^bb0(%arg1: i32):  // no predecessors
      %8 = linalg.index 0 : index
      %9 = arith.index_cast %8 : index to i32
      linalg.yield %9 : i32
    } -> tensor<?xi32>
    return %7 : tensor<?xi32>
  }
}

Compiling that as follows:
from iree.compiler import compile_str

LINALG_CODE = """
#map = affine_map<(d0) -> (d0)>
module @jit_f.4 {
  func public @main(%arg0: tensor<?xf32> {mhlo.is_same_data_across_replicas}) -> tensor<?xi32> {
    %c0 = arith.constant 0 : index
    %0 = tensor.dim %arg0, %c0 : tensor<?xf32>
    %1 = arith.index_cast %0 : index to i32
    %2 = tensor.from_elements %1 : tensor<i32>
    %3 = tensor.expand_shape %2 [] : tensor<i32> into tensor<1xi32>
    %4 = arith.index_cast %3 : tensor<1xi32> to tensor<1xindex>
    %5 = tensor.extract %4[%c0] : tensor<1xindex>
    %6 = linalg.init_tensor [%5] : tensor<?xi32>
    %7 = linalg.generic {indexing_maps = [#map], iterator_types = ["parallel"]} outs(%6 : tensor<?xi32>) {
    ^bb0(%arg1: i32):  // no predecessors
      %8 = linalg.index 0 : index
      %9 = arith.index_cast %8 : index to i32
      linalg.yield %9 : i32
    } -> tensor<?xi32>
    return %7 : tensor<?xi32>
  }
}
"""

compiled_flatbuffer = compile_str(LINALG_CODE, target_backends=["dylib"], input_type="none")

Fails as follows:
iree.compiler.tools.binaries.CompilerToolError: Error invoking IREE compiler tool ireec
Diagnostics:
ireec: /home/burmako/iree-build/third_party/llvm-project/llvm/tools/mlir/include/mlir/IR/BuiltinTypeInterfaces.h.inc:264: int64_t mlir::detail::ShapedTypeTrait<mlir::TensorType>::getDimSize(unsigned int) const [ConcreteType = mlir::TensorType]: Assertion `idx < getRank() && "invalid index for shaped type"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.   Set IREE_SAVE_TEMPS=/some/dir in your environment to save all artifacts and reproducers.

However, replacing %6 = linalg.init_tensor [%5] : tensor<?xi32> with %6 = linalg.init_tensor [%0] : tensor<?xi32> (basically short-circuiting packing iota's dim into a tensor and then unpacking it from a tensor) makes compilation succeed, so I'm wondering if we have a pass/passes upstream or in IREE that take care of that. Do you folks have any thoughts about this?

I think this should be part of the detensoring pass. @ScottTodd maybe we should just turn it on. In any case there shouldnt be a crash. This seems related to something in the shape stuff that was put back in temporarily.

Oops, let me tweak this pass around. I was hoping to set up the passes such that the packing / unpacking / casting could all be handled by canonicalizers but that depends on each lowering being consistent in whether to cast / extract first.

Alright, some fixes should be upstreamed to llvm-project to migrate casts, reshapes, and extractions around. If the shortcircuiting works we should be good to go once the merge happens.

Added Natasha to verify functional completeness.


Drop shadow, and other styles, appears to be missing from card component in css output

In dist/, the card class seems to be missing drop shadow.
Compare dist/ version:
.card {
  display: flex;
  flex-direction: column;
  margin-bottom: 16px;
  border: 1px solid #a7a7a7;
  border-radius: 2px;
}
.card .card-content {
  margin: 0;
  padding: 16px;
}
.card .card-image {
  display: block;
  height: auto;
  width: 100%;
}

With what's running on the docs site:
.card {
  flex-direction: column;
  overflow: hidden;
  flex: 0 1 calc(50% - 0.5rem);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
  margin-bottom: 2rem;
}

.card-header {
  font-weight: 600;
  margin: 0;
  padding: 2rem 3rem 1rem;
}

.card-body {
  padding: 0 3rem 2rem 3rem;
  min-height: 100px;
}

.card-footer {
  display: flex;
  align-items: stretch;
  border-top: 1px solid #dbdbdb;
  flex: 1;
}

.card-footer .card-footer-item {
  display: flex;
  flex-basis: 0;
  flex-grow: 1;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 1rem;
}

.card-footer-item:not(:first-child) {
  border-left: 1px solid #dbdbdb;
}

There's other differences, the docs site uses a flex based col thing, which had some bugs when I tried it (try putting two col-12 next to eachother, they split the space, rather than wrapping as I expect). The dist/ uses percentage width based cols.


Use in OpenMP applications

I have an application parallelized by OpenMP that uses OpenBLAS (*1).
Since I can parallelize more efficiently at a higher level, I don't want OpenBLAS to parallelize.
So I set OPENBLAS_NUM_THREADS=1. That stops OpenBLAS from parallelizing, but it looks like that also causes OpenBLAS to call omp_set_num_threads(1), which means my application is also not parallelized anymore!
Is this expected behaviour? Can I disable threading in OpenBLAS without it changing my OpenMP settings?
Thanks!
Matthew
*1: It's actually more complicated than that... my application uses multiple instances of embedded luajit running Torch which uses OpenBLAS.

Oh looks like this was actually caused by something else. Not related to OpenBLAS. Sorry!


institution_id registration of CLMcom-FZJ

institution_id
CLMcom-FZJ
institution
Climate Limited-area Modelling Community (CLMcom) partner: Forschungszentrum Juelich (FZJ), Juelich, Germany

/register
Thank you, Klaus. Looks good


Feature: choose between ESLint + AirBnB and jshint?

ESlint and AirBnB's config for it is an extremely popular choice for linting in the JS community. It's not difficult to add to an existing generator-feathers project, but it throws enough errors to be a nuisance to fix.
A generator should probably be unopinionated, and AirBnB's is anything but. At the same time, I think there's a possibility of adding it as an option in the generator without it getting in the way.
I did a clean generate with mongoose services / modals and here are some of the rules being violated.

space-in-parens (There shouldn't be spaces in parenthesis) e.g. app.js:24
eol-last (There should be a new line at the end of a file) e.g. index.js:9
func-names (Name all function expressions) e.g. index.js:6
space-before-function-parent (Space before function parenthesis) e.g. index.js:6
comma-dangle (Trail commas) e.g. user/index.js:14
no-trailing-spaces (No blank characters at the end of a line) e.g. user/user-model.js:14
quote-props (Unnecessarily quoted properties) e.g. user/user-model.js:15

There are more that I didn't feel like looking through. :P Overall they're pretty minor grievances, but could change the look of the code significantly.
Regardless, I think this would be a great option for the feathers-generator, or just make it the default style that the generator generates in.

A generator should probably be unopinionated

Actually, our thought is that the generator should be opinionated. The modules themselves should be as flexible as possible.
Not to sound negative, but the intention of the generator is to be opinionated and if you like the style of code it generates than it can make your life easier. If it's not doing that for you because you like your code structured a certain way then you are free to change the generated code or not use the generator. It is easy to assemble all the pieces of a Feathers app and structure it manually as well.
The problem with implementing this is that, beyond all the other combinations of options, if we have to now generate different code style depending on whether someone wants to use jshint or eslint, It will be a maintainability nightmare. The generator is already our most fragile piece.
So my vote is respectfully that I don't think it's worth the effort. However, if a PR is sent that doesn't change the code structure significantly then I would be open to merging it.

@ekryski When I said unopinionated I didn't mean that the generator doesn't make any choices for the user. My thought in general is that there's opinionated and then there's opinionated. So there are things like the directory structure of a Feathers project, where, while there are many possible valid combinations, the way you all have it set up maximizes maintainability and organization. You all don't offer choices in the generator for these, they just are.
However I dispute the claim that choosing a code style is fundamentally different from picking, say, Primus over Socket.io. It's not a clear-cut choice - there are perfectly valid reasons to want to rely on either library and ultimately it depends on the developer. Code style is just another one of those choices: the semicolon vs. no semicolon debate, the brace position debate, and the class-style syntax debate are all choices a developer makes that are very much capital-O Opinions.
Whether or not you think it would hurt the maintainability of the repo is definitely a concern for me as well (and one @daffl and I were discussing in Slack earlier), but I don't think it invalidates the idea of adding code-style options to a generator. It's not like doing so is outside the purpose of a generator - it's just supposed to write boilerplate code that you can use.
Since as far as I can tell the AirBnB config rules aren't in conflict with the JSHint stuff you all have set up, there's technically nothing preventing me from going in a making it comply. The issue is whether or not there would be motivation in maintaining it in that state in the future, which it sounds to me like there's probably not.
Still, I think a generator that doesn't try to accommodate a style that's as popular as AirBnB's is in the JS community is going to miss out on a lot of goodwill / adoption in the community. Just my two cents.

@harangue Like I said, if it's a pretty easy change so that the same code works for both jshint and eslint then 👍  for sure. However, if we have to maintain two separate code paths plus all the possible combinations that the generator currently provides then my opinion is that we should stick with one linting style or another, at least for now...
This is my opinion and would love to hear what the rest of the @feathersjs/core-team thinks, however if someone wants to step up and maintain it at the rate it has been currently then by all means. I simply am not able to and I already feel that the generator is too fragile. We've sort of been holding off adding more stuff to it in general until we get a better testing solution in place.

@ekryski Well here's something fun I just found... ESLint has a --fix flag that automatically fixes a good number of the discrepancies between your code and config file. Looking through it won't be able to fix all of them (named anonymous functions, for instance) and it seems it isn't super widely implemented, but I'm wondering if there would be a way to generate output that's in compliance with a supplied ruleset. That would be cool. I'll keep digging though.

We just merged #159 and released a v1.0.0-pre.1 which includes ESLint by default so --fix can be used. Given how much work it is to maintain the generator in general, we probably won't add any other options. For different code styles anybody is welcome to fork this repository and modify it to their own requirements.


Refactor xyz_to_leaflet and tests

Summary
This PR includes changes and tests for the basemaps.py module.
Changes

Refactors xyz_to_leaflet to reduce repeated code.
Adds tests

custom tile structure
xyz_to_leaflet functioning

Had to make import of fake_ee relative to get python setup.py test to work

Testing
python setup.py test
test_ee_folium_tile_layer (tests.test_ee_tile_layers.TestEETileLayers.test_ee_folium_tile_layer) ... ok
test_ee_leaflet_tile_layer (tests.test_ee_tile_layers.TestEETileLayers.test_ee_leaflet_tile_layer) ... ok
test_get_tile_url_format_geometry (tests.test_ee_tile_layers.TestEETileLayers.test_get_tile_url_format_geometry) ... ok
test_get_tile_url_format_image (tests.test_ee_tile_layers.TestEETileLayers.test_get_tile_url_format_image) ... ok
test_get_tile_url_format_imagecollection (tests.test_ee_tile_layers.TestEETileLayers.test_get_tile_url_format_imagecollection) ... ok
test_get_tile_url_format_invalid_type (tests.test_ee_tile_layers.TestEETileLayers.test_get_tile_url_format_invalid_type) ... ok
test_validate_vis_params_box_palette (tests.test_ee_tile_layers.TestEETileLayers.test_validate_vis_params_box_palette) ... ok
test_validate_vis_params_box_palette_no_default (tests.test_ee_tile_layers.TestEETileLayers.test_validate_vis_params_box_palette_no_default) ... ok
test_validate_vis_params_invalid_palette_type (tests.test_ee_tile_layers.TestEETileLayers.test_validate_vis_params_invalid_palette_type) ... ok
test_validate_vis_params_list_palette (tests.test_ee_tile_layers.TestEETileLayers.test_validate_vis_params_list_palette) ... ok
test_validate_vis_params_none (tests.test_ee_tile_layers.TestEETileLayers.test_validate_vis_params_none) ... ok
test_validate_vis_params_str_palette (tests.test_ee_tile_layers.TestEETileLayers.test_validate_vis_params_str_palette) ... ok
test_custom_tiles_types (tests.test_basemaps.TestCustomTiles.test_custom_tiles_types)
Tests that custom_tiles is a dict and contains expected keys. ... ok
test_custom_tiles_wms (tests.test_basemaps.TestCustomTiles.test_custom_tiles_wms)
Tests that custom_tiles["wms"] is a dict w/ expected keys/values. ... ok
test_custom_tiles_xyz (tests.test_basemaps.TestCustomTiles.test_custom_tiles_xyz)
Tests that custom_tiles["xyz"] is a dict w/ expected keys/values. ... ok
test_get_xyz_dict_france_tiles (tests.test_basemaps.TestGetXyzDict.test_get_xyz_dict_france_tiles)
Tests that get_xyz_dict correctly filters for France tile layers. ... ok
test_get_xyz_dict_free_tiles (tests.test_basemaps.TestGetXyzDict.test_get_xyz_dict_free_tiles)
Tests that get_xyz_dict correctly filters for free tile layers. ... ok
test_get_xyz_dict_structure (tests.test_basemaps.TestGetXyzDict.test_get_xyz_dict_structure)
Tests that get_xyz_dict returns correct object structure. ... ok
test_xyz_to_leaflet_is_dictionary (tests.test_basemaps.TestXyzToLeaflet.test_xyz_to_leaflet_is_dictionary)
Tests that xyz_to_leaflet returns a dict. ... ok
test_xyz_to_leaflet_sources (tests.test_basemaps.TestXyzToLeaflet.test_xyz_to_leaflet_sources)
Tests that xyz_to_leaflet has custom xyz, wms, and xyzservices. ... ok

----------------------------------------------------------------------
Ran 21 tests in 2.438s

OK

tox
ROOT: No tox.ini or setup.cfg or pyproject.toml found, assuming empty tox.ini at /usr/local/google/home/braaten/Projects/geemap
.pkg: _optional_hooks> python /usr/local/google/home/braaten/Projects/geemap/geemap_dev/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_sdist> python /usr/local/google/home/braaten/Projects/geemap/geemap_dev/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_wheel> python /usr/local/google/home/braaten/Projects/geemap/geemap_dev/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: prepare_metadata_for_build_wheel> python /usr/local/google/home/braaten/Projects/geemap/geemap_dev/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: build_sdist> python /usr/local/google/home/braaten/Projects/geemap/geemap_dev/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
py: install_package> python -I -m pip install --force-reinstall --no-deps /usr/local/google/home/braaten/Projects/geemap/.tox/.tmp/package/5/geemap-0.23.2.tar.gz
.pkg: _exit> python /usr/local/google/home/braaten/Projects/geemap/geemap_dev/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
  py: OK (4.11 seconds)
  congratulations :) (4.19 seconds)

Flake8

Ran and fixed for the files/sections changed

Notebook
Tested local geemap.Map basemap selector rendering for a sample from each provider comparing against current distribution – okay.

I see that the relative import is causing problems, I'll look into it.

@giswqs docs build is failing. It looks like the _X added to a notebook nav path is causing an issue - the TOC entry is not linked to a valid notebook file path.
See the change: https://github.com/gee-community/geemap/commit/322a7cae620be11a03cb2f67373341c823b83a1b#diff-98d0f806abc9af24e6a7c545d3d77e8f9ad57643e27211d7a7b896113e420ed2
It looks like this was intentional, maybe to not execute the notebook? Is there a different way to ignore the notebook - can we provide a list of specific notebook paths instead of the match on notebooks/*_X.ipynb?
It appears to break the docs too:

I'm confused about how previous PR build tests passed, maybe the doc build test was not triggered in previous PRs?

Looks like we can provide a list of glob patterns: execute_ignore. Going to try.

You can delete _X from mkdocs.yml. I forgot to delete it a while ago. Previously, mkdocs-jupyter cannot ignore execute multiple notebooks (see https://github.com/danielfrg/mkdocs-jupyter/issues/136), so I had to add _X in filename to ignore notebooks that took a while to execute. It is no longer needed now as mkdocs-jupyter allows ignoring multiple notebooks.

notebooks/112_cartoee_basemap_X.ipynb

Now I see that all notebooks are ignored: https://github.com/gee-community/geemap/blob/91e890d799d0569960ee8a654e0388bc40c10fcd/mkdocs.yml#L54
So, just going to remove the _X from the notebook in question: https://github.com/gee-community/geemap/blob/91e890d799d0569960ee8a654e0388bc40c10fcd/mkdocs.yml#L247

Right, just removing _X should resolve the issue for now. We can re-enable notebook execute later on.

It seems the issue is caused by cartoee.md.
https://github.com/gee-community/geemap/actions/runs/5427037556/jobs/9870155234?pr=1592#step:12:31
It worked fine previously, not sure what is causing the issue now.
https://geemap.org/cartoee/

@giswqs, here is a fix, please review: https://github.com/gee-community/geemap/pull/1594

@giswqs
It is really puzzling about cartoee...
Why did this build from the PR a few minutes ago work, but fails here?
I'm out of time on this today, I can poke around in following days, unless you see anything obvious to you causing it.

Couldn't let it go :)
I think I see the issue - this PR changes xyz_tile to custom_tiles["xyz"]. I missed from .basemaps import xyz_tile in the cartoee.py file (https://github.com/search?q=repo%3Agee-community%2Fgeemap+cartoee+xyz_tiles&type=code).
I've made the change locally, but my repo is all out of sync now, I need to do some git googling to resolve...


Better organize properties in the data object

There are several properties in the data object of the Vue.js app in room.html which are related and could be put in nested objects for better understanding of maintenance of this codebase

Hi @phazonoverload can you be more specific about the changes that need to be made. How do you plan to nest these objects? I'd like to work on this issue if possible. Thank you

I'd recommend watching my stream from yesterday at https://twitch.tv/vonagedevs to see how all of the properties are used, but broadly we have properties around

The session, publishers and subscribers
Room locking
Chat


Dependency groups

This PR adds support for grouping dependencies together into the same branch/PR via the new configuration option groupName and some related other configuration options.
Closes #10

Codecov Report

Merging #164 into master will decrease coverage by 0.41%.
The diff coverage is 25%.

@@            Coverage Diff             @@
##           master     #164      +/-   ##
==========================================
- Coverage   69.07%   68.66%   -0.42%
==========================================
  Files          19       19
  Lines         928      935       +7
  Branches      153      155       +2
==========================================
+ Hits          641      642       +1
- Misses        287      293       +6

Impacted Files
Coverage Δ

lib/config/definitions.js
100% <ø> (ø)
:arrow_up:

lib/helpers/versions.js
97.56% <100%> (ø)
:arrow_up:

lib/worker.js
62.41% <14.28%> (-2.38%)
:arrow_down:

Continue to review full report at Codecov.

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


Custom routes in json

Creating new models etc. overwrites custom routes placed between the artomator tags in web.php. Therefore need to also adjust the json to not delete these custom routes by mistake.
Currently get/post/ etc not supported.

Example:
Route::get('/print/{id}', 'AccreditationController@print')->name('print');

I've added a fix to the Artomator for the custom routes. Can you kindly test with your installation and custom routes? I suggest you copy your existing routes to a backup and then try adding the custom values to the json file.

Partial success. In order to extend the general CRUD routes using php Route::resource()  need to be defined before calling php Route::resource() . Despite having the custom routes defined ahead of the resources in the json file, they get placed after the resource.
Additionally it would be good to have an artomator command that regenerates the routes from json

Okay, that should be fairly simple.

[ ] switch order of resource code and custom code in the generator (lines 148 onwards)
[ ] add specific command file for routes based on other scaffold commands

The ability to regenerate the routes is a bit of a hack. I'm not able to get it to work without having it require the Model name. As such you have to run it with php artisan artomator.scaffold:routes Temp and then type exit. Thoughts?


I can't import fbchat

Hello,
I get this error whenever I try to import fbchat without adding any extra lines
30:52.08 > CMKH1 AUTHENTICATE XOAUTH2
30:52.11 < +
30:52.11 write literal size 112
30:52.29 < + eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ==
30:52.29 write literal size 112
30:52.36 < CMKH1 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)
30:52.36 NO response: [AUTHENTICATIONFAILED] Invalid credentials (Failure)
Traceback (most recent call last):
File "./facebook.py", line 2, in
import fbchat
File "/Library/Python/2.7/site-packages/fbchat/init.py", line 14, in
from .client import *
File "/Library/Python/2.7/site-packages/fbchat/client.py", line 14, in
import requests
File "/Library/Python/2.7/site-packages/requests/init.py", line 52, in
from .packages.urllib3.contrib import pyopenssl
File "/Library/Python/2.7/site-packages/requests/packages/init.py", line 27, in
from . import urllib3
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/init.py", line 8, in
from .connectionpool import (
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 41, in
from .request import RequestMethods
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/request.py", line 7, in
from .filepost import encode_multipart_formdata
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/filepost.py", line 9, in
from .fields import RequestField
File "/Library/Python/2.7/site-packages/requests/packages/urllib3/fields.py", line 2, in
import email.utils
File "/Users/NixPal/email.py", line 19, in
imap_conn.authenticate('XOAUTH2', lambda x: auth_string)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/imaplib.py", line 364, in authenticate
raise self.error(dat[-1])
imaplib.error: [AUTHENTICATIONFAILED] Invalid credentials (Failure)

Sorry I figured it out.. It's working now


Droping Items is inconsistent

Drop command isn't working properly to remove items from the Player's inventory.

hehe, whoops. Modifying contents of a list while iterating. fixed.

hehe, whoops. Modifying contents of a list while iterating. fixed.


Missing definition on Windows tex::SAMPLES_COUNT

Missing definition on Windows tex::SAMPLES_COUNT

The GDI version was not updated for a long time 😅. I'm going to remove the GDI support, the Windows version is about to deprecate. This issue will keep opening until I fix it.

I fix it.
see PR https://github.com/NanoMichael/cLaTeXMath/pull/67


Road to HDS v1

Historical Datastore should be improved to support expected use-cases with simple and pragmatic APIs.

Use cases:

Low dimensional time-series storage and retrieval
High dimensional time-series storage and retrieval
Log storage and retrieval
Lightweight storage on IoT devices by using embedded DBs such as Leveldb, Boltdb, Sqlite

Features:

Retention
Simple aggregation (persistent)
HTTP API
MQTT connector
Annotation
Query with mathematical functions

[LS-446] created by tavakoli

Closing this as it is converted as milestone


Disable role sync  on Spinnaker application creation (1.24.x)

WHAT
This pull request disables triggering fiat permission sync for application.
This is for Spinnaker version 1.24.x.
WHY
As described in https://github.com/spinnaker/front50/pull/995 , we have some issues around fiat permission sync.
As a workaround, we'd like to disable the fiat permission sync, only all roles sync when creating application because it's very expensive when there are many roles.
REF

https://github.com/mercari/front50/pull/1

Sorry, failed to copy & paste 🤖  I updated it 🙇

@dragon3  I actually cherry-pick the commit so the commit author is you 🙇
But since there are diff between the 1.23 and 1.24 regarding ApplicationController (it migrated from Groovy to Java), I had to create a manual edit.
Thank you for your review.

Squash merged 👍

@dragon3 I actually cherry-picked the commit so the first commit author is you (I edit the first commit and rebased so now it's co-authored) 🙇
But since there are diff between the 1.23 and 1.24 regarding ApplicationController (it migrated from Groovy to Java), I had to create a manual edit from the second commit

Ah... I see. Thank you for the comment 👍