Pasting links on iphone doesn't work on the last version

Iphone 14 pro
Doesn't work when copy-pasting
Doesn't work when enhancing the link in Obsidian

Same thing with Android (14 in my case). I think it might be the profile with all mobile versions after the last update, not specific to Android or iPhone, but it's only my guess.

Yeah, the plugin uses different method to fetch link title. On Mac it works as expected.

Not working on my iPad either (iPadOS 17.2, Obsidian v. 1.4.17).

Hm, I'll need to check if the API we've switched two is just not available on the mobile devices or what the issue here is.
I'll likely end up adding the previous method as a fallback if the API does not exist.
I'll be able to dig in this weekend!

I've moved the new scraper behind an option in Settings.
Seems it works well on desktop but not mobile, more investigation needed but this should let it work on your phone again!


ci: Updated ci steps to publish token.

Description

Updated publish workflow for Github and NPM.
Both publish should work on new tag push.

Related Issues
Issue: None.
How Has This Been Tested

Using same in dynamo-helper.

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Screenshots (if appropriate)

Codecov Report

Merging #56 (598b43d) into master (2eaa6e5) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master       #56   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines           21        21
  Branches         2         2
=========================================
  Hits            21        21

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


add adaptive_avg_pool2d

Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

What does this PR do?
Fixes #346 .

Hi @nikitaved , I fixed the test case, could you help to take a look again

Hi @t-vi @mruberry , could you also take a look if it can be merged

Hi @t-vi @carmocca , I think it's ready to merge, the failures come from the known distributed case issue

Thank you @kiya00 @nikitaved @IvanYashchuk @mruberry


when on server, disabled player name and skin report

Idea
希望在即将到来的1.20.2，这个模组安装在服务端时，可以阻止玩家举报用户名和皮肤。
In the upcoming 1.20.2 , if installed on the server, I hope to prevent players from reporting usernames and skins.
Reasoning
根据更新日志，在用户可以举报一个玩家的用户名和皮肤。
According to the 23w33a changelog, now users can report a player's skin and username.

Other Information
直接阻止举报皮肤也许是困难的，但可以设计成：安装此模组时，在客户端禁止举报皮肤和用户名。当模组安装在服务端或客户端启动多人游戏时，该模组可以阻止未安装该模组的客户端加入。
It may be difficult to prevent reporting skins and ua
sernames directly, but it can be designed to prevent reporting skins and usernames on the client. When the mod is installed on the server or the client starts a multiplayer game, the mod can prevent players who haven't installed this mod on the client from joining.

Duplicate with #425 (Closed as not planned by author (me))

它也应该禁止举报“做了什么我不喜欢的事”。
It should also disable reporting "have done sth I don't like".

Even then you must consider that usernames and skins are public data, which don't need signatures to verify.
Therefore they can be reported through any server, online, or even without a report if they get caught in some dictionary match or some skin inspection by Mojang.

So you're better off installing some kind of skin changer/nickname mod to the server, rather than expecting NCR to guard against user reporting.

@IlyaIvanovsky

它也应该禁止举报“做了什么我不喜欢的事”。 It should also disable reporting "have done sth I don't like".

That should be a separate issue

That should be a separate issue
OK, #427 then.

Just so that y'all know, I've no intent of creating a dedicated mod to counteract skin/name reporting or adding features to do so as part of NCR
Don't see it as that big of a deal is all. Mojang have already been policing names and skins, and it doesn't feel like an overreach that chat reporting was

Aizistral on Discord


Incorrect Cylinder shape

As of new version of cannon-es Cylinder.type is equal to Shape.types.CYLINDER (as it should be).
But so far the debug-renderer handled Cylinders as ConvexPolyhedrons and now every cylinder is represented as the default "CylinderGeometry(0.5, 0.5, 1, 32)"
I'm not sure about the proper fix, but removing the body of "case CYLINDER" in "function createMesh()" leaving as
case CYLINDER: \n case CONVEXPOLYHEDRON: ...
solves the issue,
(the "function typeMatch()" also has not prepared to handle cylinders)

Thanks for the heads up @tomo0613!
Could you test that #7 solves this issue?

Thanks for the heads up @tomo0613!
Could you test that #7 solves this issue?

I tested it.
The createMesh part works.
It wont update as the other shapes, but as I see the scale part is not implemented yet.

I tested it.
The createMesh part works.
It wont update as the other shapes, but as I see the scale part is not implemented yet.

It wont update as the other shapes, but as I see the scale part is not implemented yet.

Can you elaborate? What are you doing in these specific cases?

It wont update as the other shapes, but as I see the scale part is not implemented yet.

Can you elaborate? What are you doing in these specific cases?

In every case of transform (same for cylinder, polyhedron, box...) the current shape is disposed mapElementBody.shapes.length = 0; then a new shape is created with the modified props. so basically the shapes are replaced ( code )

In every case of transform (same for cylinder, polyhedron, box...) the current shape is disposed mapElementBody.shapes.length = 0; then a new shape is created with the modified props. so basically the shapes are replaced ( code )

Alright, thanks for the tip, should be fixed now! Yeah the scale doesn't work for the cylinder.

Alright, thanks for the tip, should be fixed now! Yeah the scale doesn't work for the cylinder.


Add support for inline event handling

Hi, first of all thanks for this plugin! It's almost been working flawlessly for my exploration with Vue.
I've encountered one issue; When handling an event in a parent component by using an arrow function, the parameter becomes of type unknown instead of the type that the child passes on to the parent. Any idea's if there is support for this?

In the following example, I would expect the Todo.vue component to be aware that the toDoItem is of type TodoItem.
repository can be found here: https://github.com/LukasCornille/vue-todo

Hi this is emits types define problem, please try this in From component:
defineComponent({
  emits: {
    'add-to-list': (item: TodoItem) => true
  }
})

I've tried with both:
the type-only way
defineEmit<(e: 'add-to-list', toDoItem: TodoItem) => void>();
and snippet you suggested as item and todoItem
defineEmit({   'add-to-list': (item: TodoItem) => true, });
Both however still don't give my todoItem in the parent component a type besides unknown.

I need to take a look for you project but I can't, maybe your repo is private.

It was indeed private, made it public now. Sorry!

I just found you need to add "strict": true to tsconfig.json, sorry I never know.
anyway I know let TS totally working is not easy, so I create a discord server to help, you can ask in server or open issue too next time.
https://discord.gg/5bnSSSSBbK

Hmm, adding "strict": true in tsconfig.json did also not seem to fix this issue :/

You may need reload vscode after change tsconfig.json

Ah yes it worked indeed, thanks for the help!


ci: add deploy workflow for docusaurus github pages

:tada: This PR is included in version 0.2.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


fix: moved smooth-scroll application to useEffect

Summary
Fixes leak of smooth-scroll, limits it just to pages where component is being used
Also changed a variable to be more descriptive
Related Issues or PRs
Resolves #2867
How To Test
Use storybook as an example, comparing the live version (where smooth-scroll is applied on all pages after loading the component) vs what you can build locally, shown below:

Screenshots (optional)

Looks good to me! I wonder if there would be value in including a test that checks for the class?

thanks, added


Fix Login Submission test

this weirdly fixes the below error that I saw in the loginsubmission test
 FAIL  __tests__/LoginSubmission-test.tsx
  ● Console

    console.error
      [
        'The above error occurred in the <_default> component:\n' +
          '    in _default\n' +
          '    in View (created by View)\n' +
          '    in View (created by AppContainer)\n' +
          '    in View (created by View)\n' +
          '    in View (created by AppContainer)\n' +
          '    in AppContainer (at src/index.js:26)\n' +
          '\n' +
          'Consider adding an error boundary to your tree to customize error handling behavior.\n' +
          'Visit https://fb.me/react-error-boundaries to learn more about error boundaries.'
      ]

      at BufferedConsole.console.error (node_modules/react-native/Libraries/LogBox/LogBox.js:33:14)
      at registerError (node_modules/react-native/Libraries/YellowBox/YellowBox.js:169:7)
      at errorImpl (node_modules/react-native/Libraries/YellowBox/YellowBox.js:84:22)
      at BufferedConsole.console.error (node_modules/react-native/Libraries/YellowBox/YellowBox.js:63:14)
      at BufferedConsole.error (node_modules/@testing-library/react-native/dist/act-compat.js:40:34)
      at logCapturedError (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10141:21)
      at logError (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10178:5)
      at update.callback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:11288:5)

  ● renders correctly

    TypeError: Cannot read property 'HOME' of undefined

      87 |     if (token) {
      88 |       (async ()=> await AsyncStorage.setItem('token', token))()
    > 89 |       navigation.navigate(SCREENS.HOME)
         |                                   ^
      90 |     }
      91 |   }, [token])
      92 |

      at src/components/LoginSubmission.tsx:89:35
      at commitHookEffectListMount (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10345:26)
      at commitPassiveHookEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10383:11)
      at Object.invokeGuardedCallbackImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9897:10)
      at invokeGuardedCallback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10073:31)
      at flushPassiveEffectsImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13345:9)
      at unstable_runWithPriority (node_modules/react-test-renderer/node_modules/scheduler/cjs/scheduler.development.js:653:12)
      at runWithPriority (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1775:10)
      at flushPassiveEffects (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13312:12)
      at node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13191:11

Thanks for making your contribution, very weird indeed, I am not getting this error. It seems like the SCREENS constant is not being imported correctly.

Which node version are you using and what os are you running on your machine? It seems to work with node 12.16.1 and Debian

Colleague of mine also have the same issue, I've changed it, something weird is going with the imports. thanks for spotting this!!

node 14.1.0, macOS Cataline

fwiw this is another fix that I had to make


cleanup(exists_infinite_primes)

removing unnecessary initial step
giving names to ambiguous copies of this

TO CONTRIBUTORS:
Make sure you have:

[ ] reviewed and applied the coding style: coding, naming
[ ] for tactics:

[ ] added or adapted documentation in tactics.md
[ ] write an example of use of the new feature in tactics.lean

[ ] make sure definitions and lemmas are put in the right files
[ ] make sure definitions and lemmas are not redundant

For reviewers: code review check list

A further possible stylistic improvement would be to avoid use of _, where the omitted terms are short (particularly when the omitted term is a single character!).


Question : How to add corefxlab packages through the dotnet cli/manually

I can't find any documentations about adding a myget feed manually (i can't use visual studio), so i'd like to know if there's a way to do it without VS.
Thanks in advance

The feed is listed here: https://github.com/dotnet/corefxlab#how-to-use
You could add the feed to a NuGet.config file local to your app or within your user app data folder (on Windows - C:\Users\<user>\AppData\Roaming\NuGet).
From the dotnet cli, you can do dotnet restore -s https://dotnet.myget.org/F/dotnet-corefxlab/
See https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-restore?tabs=netcore2x#options for more info on that.

Well I don't know why the dotnet restore had no effect but i could use the link found here this way :
dotnet add package Microsoft.Data.DataFrame --version 1.0.0-e190513-1 --source https://dotnet.myget.org/F/dotnet-corefxlab/api/v3/index.json


Feature Request: Container Apps Burst Demo

Is your feature request related to a problem? Please describe.
Need a tutorial / demo on how to use Azure Container Apps to do burst processing.
Describe the solution you'd like.
Would like to have a tutorial on how to set up Azure Container Apps to do AI Image processing.
Something like this:

https://github.com/Azure-Samples/virtual-kubelet-aci-burst/issues/9
https://github.com/Azure-Samples/virtual-kubelet-aci-burst/blob/master/Bursting Video.mp4?raw=true

Additional context.
This will makes it easier to show how Azure Container Apps can scale

Thanks for sharing! There are always more tutorials and resources we want to make. I don't think we have any current plans to make this demo, but we can track it with this issue.
I know it's not the burst tutorial you'd like, but here'sour basic how-to for scaling in ACA: https://learn.microsoft.com/en-us/azure/container-apps/scale-app?pivots=azure-cli

Closing this, let us know if this is still important by reopening please.


parallel wr.s3.to_parquet() writes and glue catalog table updates

UPDATE: fwiw, I wholly understand if this question is outside the scope of this forum, as it's more of a situational context with awswrangler functionality that is operating as expected.  But figured it couldn't hurt to raise.

I am encountering a tricky situation when attempting to run wr.s3.to_parquet() in parallel - for different dataframes -- that are writing to the same parquet dataset (different partitions), but all updating the same glue catalog table.
The specific problem I'm facing: not all columns from written partitions are present in glue catalog table.
Context: running an AWS StepFunction with lambdas executing in parellel to write dataframes to parquet dataset in S3.
Becuase the dataframes are always unique partitions, that works splendidly for the actual parquet file writes to S3.  The problem I'm encountering is when parallel processes attempt to update the glue catalog table -- call it foo -- at nearly the same time, via the wr.s3.to_parquet() function.
Digging into that function, I can see where it a) retrieves the current glue catalog input for the table and b) when it attempts to update/create that table:
# subset from wr.s3.to_parquet()
...
# Evaluating dtype
    catalog_table_input: Optional[Dict[str, Any]] = None
    if database is not None and table is not None:
        catalog_table_input = catalog._get_table_input(  # pylint: disable=protected-access    <------ a) get catalog table
            database=database, table=table, boto3_session=session, catalog_id=catalog_id
        )
...
...
...
        if (database is not None) and (table is not None):
            try:
                catalog._create_parquet_table(  # pylint: disable=protected-access   <------- b) create/update catalog table
                    database=database,
                    table=table,
                    path=path,
                    columns_types=columns_types,
                    partitions_types=partitions_types,
                    compression=compression,
                    description=description,
                    parameters=parameters,
                    columns_comments=columns_comments,
                    boto3_session=session,
                    mode=mode,
                    catalog_versioning=catalog_versioning,
                    projection_enabled=projection_enabled,
                    projection_types=projection_types,
                    projection_ranges=projection_ranges,
                    projection_values=projection_values,
                    projection_intervals=projection_intervals,
                    projection_digits=projection_digits,
                    catalog_id=catalog_id,
                    catalog_table_input=catalog_table_input,   <---------------- passed catalog table input
                )

I'm still confirming this is precisely the issue, but it makes sense that it could be.  I wondered if there were any recommendations for how to think about approaching this?
Possible approach: before any of the parallel writes, aggregate all columns from all dataframes (which I can do in this situation) and create the glue catalog table in advance.  Believe I could reuse some awswrangler functions and methods to get those handy dtype pandas --> pyarrow --> athena conversions.
Is that the best bet here?  Or had wondered if there could be some versioning catalog tables and merging of versions after all the writes?
Thanks for a really wonderful library; despite unique situation/context, it's been a joy to work with and really streamlining our work.

Hi @ghukill, thanks for reaching out!
Actually this is a pretty interesting use case, let me explain my point of view.
If the catalog would have the concept of transaction/lock, we would be able to overcome this situation naturally.  Unfortunately it hasn't, so we would not be able to ensure consistency during multiple parallel "updates" w/o a more advanced/complex strategy.
Scenario 1 - You know the final schema
This is the simplest case where I would resolve creating the table first and than write passing schema_evolution=False.
e.g.
import awswrangler as wr
import pandas as pd

DATABASE = "default"
TABLE = "test"
PATH = f"s3://BUCKET/{TABLE}/"

wr.s3.delete_objects(PATH)
wr.catalog.create_parquet_table(
    database=DATABASE,
    table=TABLE,
    path=PATH,
    columns_types={"c0": "string", "c1": "double", "c2": "bigint"},
    partitions_types={"p0": "int"},
)

for df in (  # Parallel simulation
    pd.DataFrame({"c0": ["foo"], "p0": [1]}),
    pd.DataFrame({"c1": [0.0], "p0": [2]}),
    pd.DataFrame({"c2": [0], "p0": [3]}),
):
    wr.s3.to_parquet(
        df,
        PATH,
        dataset=True,
        mode="append",
        table=TABLE,
        database=DATABASE,
        partition_cols=["p0"],
        schema_evolution=False,
    )

Scenario 2 - You don't know the final schema but the catalog can be updated afterwards
You can ignore any catalog change during the write and call wr.s3.store_parquet_metadata() in the end.
e.g.
import awswrangler as wr
import pandas as pd

DATABASE = "default"
TABLE = "test"
PATH = f"s3://BUCKET/{TABLE}/"

wr.s3.delete_objects(PATH)

for df in (  # Parallel simulation
    pd.DataFrame({"c0": ["foo"], "p0": [1]}),
    pd.DataFrame({"c1": [0.0], "p0": [2]}),
    pd.DataFrame({"c2": [0], "p0": [3]}),
):
    wr.s3.to_parquet(
        df,
        PATH,
        dataset=True,
        mode="append",
        partition_cols=["p0"]
    )

wr.s3.store_parquet_metadata(
        PATH,
        dataset=True,
        database=DATABASE,
        table=TABLE,
)

Scenario 3 - You don't know the final schema and the catalog can't be updated afterwards
This is the hardest case, and I think the only solution would be keep/manage your own lock using something like S3, DynamoDB, Redis (Thinking in a distributed situation where to keep it in memory is not an option). With this lock mechanism you would be able to run your writes "sequentially" keeping the rest of the pipeline (reading, processing, etc) parallel.
e.g.
import awswrangler as wr
import pandas as pd

DATABASE = "default"
TABLE = "test"
PATH = f"s3://BUCKET/{TABLE}/"

wr.s3.delete_objects(PATH)
wr.catalog.create_parquet_table(
    database=DATABASE,
    table=TABLE,
    path=PATH,
    columns_types={"c0": "string", "c1": "double", "c2": "bigint"},
    partitions_types={"p0": "int"},
)

for df in (  # Parallel simulation
    pd.DataFrame({"c0": ["foo"], "p0": [1]}),
    pd.DataFrame({"c1": [0.0], "p0": [2]}),
    pd.DataFrame({"c2": [0], "p0": [3]}),
):

    # READ AND PROCESS ANYTHING YOU WANT HERE IN PARALLEL

    # GET/WAIT THE LOCK
    wr.s3.to_parquet(
        df,
        PATH,
        dataset=True,
        mode="append",
        table=TABLE,
        database=DATABASE,
        partition_cols=["p0"],
        schema_evolution=False,
    )
    # RELEASE THE LOCK

What do you think? Any other ideas?

Hi @ghukill, thanks for reaching out!
Actually this is a pretty interesting use case, let me explain my point of view.
If the catalog would have the concept of transaction/lock, we would be able to overcome this situation naturally.  Unfortunately it hasn't, so we would not be able to ensure consistency during multiple parallel "updates" w/o a more advanced/complex strategy.
Scenario 1 - You know the final schema
This is the simplest case where I would resolve creating the table first and than write passing schema_evolution=False.
e.g.
import awswrangler as wr
import pandas as pd

DATABASE = "default"
TABLE = "test"
PATH = f"s3://BUCKET/{TABLE}/"

wr.s3.delete_objects(PATH)
wr.catalog.create_parquet_table(
    database=DATABASE,
    table=TABLE,
    path=PATH,
    columns_types={"c0": "string", "c1": "double", "c2": "bigint"},
    partitions_types={"p0": "int"},
)

for df in (  # Parallel simulation
    pd.DataFrame({"c0": ["foo"], "p0": [1]}),
    pd.DataFrame({"c1": [0.0], "p0": [2]}),
    pd.DataFrame({"c2": [0], "p0": [3]}),
):
    wr.s3.to_parquet(
        df,
        PATH,
        dataset=True,
        mode="append",
        table=TABLE,
        database=DATABASE,
        partition_cols=["p0"],
        schema_evolution=False,
    )

Scenario 2 - You don't know the final schema but the catalog can be updated afterwards
You can ignore any catalog change during the write and call wr.s3.store_parquet_metadata() in the end.
e.g.
import awswrangler as wr
import pandas as pd

DATABASE = "default"
TABLE = "test"
PATH = f"s3://BUCKET/{TABLE}/"

wr.s3.delete_objects(PATH)

for df in (  # Parallel simulation
    pd.DataFrame({"c0": ["foo"], "p0": [1]}),
    pd.DataFrame({"c1": [0.0], "p0": [2]}),
    pd.DataFrame({"c2": [0], "p0": [3]}),
):
    wr.s3.to_parquet(
        df,
        PATH,
        dataset=True,
        mode="append",
        partition_cols=["p0"]
    )

wr.s3.store_parquet_metadata(
        PATH,
        dataset=True,
        database=DATABASE,
        table=TABLE,
)

Scenario 3 - You don't know the final schema and the catalog can't be updated afterwards
This is the hardest case, and I think the only solution would be keep/manage your own lock using something like S3, DynamoDB, Redis (Thinking in a distributed situation where to keep it in memory is not an option). With this lock mechanism you would be able to run your writes "sequentially" keeping the rest of the pipeline (reading, processing, etc) parallel.
e.g.
import awswrangler as wr
import pandas as pd

DATABASE = "default"
TABLE = "test"
PATH = f"s3://BUCKET/{TABLE}/"

wr.s3.delete_objects(PATH)
wr.catalog.create_parquet_table(
    database=DATABASE,
    table=TABLE,
    path=PATH,
    columns_types={"c0": "string", "c1": "double", "c2": "bigint"},
    partitions_types={"p0": "int"},
)

for df in (  # Parallel simulation
    pd.DataFrame({"c0": ["foo"], "p0": [1]}),
    pd.DataFrame({"c1": [0.0], "p0": [2]}),
    pd.DataFrame({"c2": [0], "p0": [3]}),
):

    # READ AND PROCESS ANYTHING YOU WANT HERE IN PARALLEL

    # GET/WAIT THE LOCK
    wr.s3.to_parquet(
        df,
        PATH,
        dataset=True,
        mode="append",
        table=TABLE,
        database=DATABASE,
        partition_cols=["p0"],
        schema_evolution=False,
    )
    # RELEASE THE LOCK

What do you think? Any other ideas?

Response: https://github.com/awslabs/aws-data-wrangler/issues/526

Thanks for the detailed response and suggestions!  Much appreciated.
In the interim, went strongly in the direction of Scenario 1, knowing the final schema in advance and updating Glue catalog before parallel writes occur.  This required tightening up the data typing for the writes in general, so it was fortuitous.
However, the actual implementation varied a bit.  In my situation, the Glue table may or may not exist, and the particular set of parallel writing "handlers" may vary.
The deviation was to:

create a dataframe that includes all columns for all handlers, known in advance
insert a single row with NULL values across
type each row from the pandas type we also -- conveniently -- know for that column
use wr.s3.to_parquet() to write the dataframe, including table and database so that Glue table is created/updated
immediately delete the temporary write (single partition with single, empty row sans two parition columns)

I'm re-remembering as I type this out that this was primarily to utilize the very useful pandas --> pyarrow --> Athena conversions that I believe wr.s3.to_parquet() performs?  By writing a dataframe with the same dtypes that we'll write columnar subsets of later, seemed to ensure it would all align nicely.  And it does!
Another wrinkle: these parallel writes are occurring in waves, where 2nd, 3rd, 4th wave handlers may potentially perform Athena queries against the table in question to read data that upstream handlers wrote.  This cycle of dataframe --> S3 --> Glue --> Athena --> dataframe is precisely why this library has been such a productivity boost.
In that moment between waves, though, we have opportunity to pause and update the Glue table sequentially, making Scenario 2 also intriguing.  The only hurdle I see there, we'd need to know the Glue/Athena data types for the columns it looks like, versus the pandas data types we do know.  Which was part of the thinking on relying on the empty dataframe write to leverage those mechanics.  I poked around a bit, and saw some some internal methods, but is there a convenient way to get Glue/Athena data types from a pandas dataframe?
Scenario 2 is also appealing because it would allow not updating the Glue table in situations where the handlers fail.  Scenario 1 does not readily support this.
In summary: not sure!  The project is still in its infancy, so maybe there are requirements I'm not yet seeing, but this has been really helpful.  Feel free to close out this question if you'd like, and many thanks again.

Response: https://github.com/awslabs/aws-data-wrangler/issues/526

Thanks for the detailed response and suggestions!  Much appreciated.
In the interim, went strongly in the direction of Scenario 1, knowing the final schema in advance and updating Glue catalog before parallel writes occur.  This required tightening up the data typing for the writes in general, so it was fortuitous.
However, the actual implementation varied a bit.  In my situation, the Glue table may or may not exist, and the particular set of parallel writing "handlers" may vary.
The deviation was to:

create a dataframe that includes all columns for all handlers, known in advance
insert a single row with NULL values across
type each row from the pandas type we also -- conveniently -- know for that column
use wr.s3.to_parquet() to write the dataframe, including table and database so that Glue table is created/updated
immediately delete the temporary write (single partition with single, empty row sans two parition columns)

I'm re-remembering as I type this out that this was primarily to utilize the very useful pandas --> pyarrow --> Athena conversions that I believe wr.s3.to_parquet() performs?  By writing a dataframe with the same dtypes that we'll write columnar subsets of later, seemed to ensure it would all align nicely.  And it does!
Another wrinkle: these parallel writes are occurring in waves, where 2nd, 3rd, 4th wave handlers may potentially perform Athena queries against the table in question to read data that upstream handlers wrote.  This cycle of dataframe --> S3 --> Glue --> Athena --> dataframe is precisely why this library has been such a productivity boost.
In that moment between waves, though, we have opportunity to pause and update the Glue table sequentially, making Scenario 2 also intriguing.  The only hurdle I see there, we'd need to know the Glue/Athena data types for the columns it looks like, versus the pandas data types we do know.  Which was part of the thinking on relying on the empty dataframe write to leverage those mechanics.  I poked around a bit, and saw some some internal methods, but is there a convenient way to get Glue/Athena data types from a pandas dataframe?
Scenario 2 is also appealing because it would allow not updating the Glue table in situations where the handlers fail.  Scenario 1 does not readily support this.
In summary: not sure!  The project is still in its infancy, so maybe there are requirements I'm not yet seeing, but this has been really helpful.  Feel free to close out this question if you'd like, and many thanks again.

Definitively you have a cool puzzle to solve. Of course I will not be able to point the best direction for you specific case.
But here are two points that might help:

We have wr.catalog.extract_athena_types() that can help to infer the equivalent Athena types from a Pandas DataFrame.
It is possible to use wr.s3.store_parquet_metadata() with the argument mode="append" to update your table evolving your schema instead of overwrite it.

Definitively you have a cool puzzle to solve. Of course I will not be able to point the best direction for you specific case.
But here are two points that might help:

We have wr.catalog.extract_athena_types() that can help to infer the equivalent Athena types from a Pandas DataFrame.
It is possible to use wr.s3.store_parquet_metadata() with the argument mode="append" to update your table evolving your schema instead of overwrite it.

And there it is: wr.catalog.extract_athena_types(), I must have sailed right past it.  Thanks for pointing this out!

And there it is: wr.catalog.extract_athena_types(), I must have sailed right past it.  Thanks for pointing this out!


sc2: adding detection circles

Targeting master because this is a bugfix that can affect the live maps. Trying to add detection circles back in for AP units.
Vanilla has two methods of adding detection circles, HeroDetectorRadar and VoidDetectorRadar. I tried Hero first, and it wasn't stable on Amon's Reach; circles wouldn't always show correctly around ramps, when spores burrowed, or when leaving and re-entering an area. Went with the Void method instead.
The void method uses some better filtering, to let cloaking abilities only activate the circles when they're active or let units always set the circles up (see DTs and Nova). It's proximity-based rather than selection-based, so having a cloaked unit near a detector will show the circle even if you select something else. However, one of the validators is that these circles only work on enemies, and for that it uses the HasEnemyDetection validator, which checks for a particular upgrade that is granted at startup time. The vanilla maps only give this upgrade in Void and NCO; I had to make a new trigger and set it to always run on startup in AP Player mod.

Tested on a few missions:

Hero units still have the old-style graphics as they use HeroDetectorRadar (notice how the ticks are closer together than the lotv-style circles in the old images below):

Technically vanilla NCO has a different graphic for detection circles, but I couldn't find where it was defined exactly. We could override it in ArchipelagoPlayerNCO, or I'd even be in favour of making it the default because it looks rad.

Found the NCO graphics. Old pictures with lotv graphics for comparison:

I've fixed some units not working for this feature

Squashed and force-pushed so that I could get rid of the binary files from the changed files list. Now I know the verbose variable / function names are changed with ctrl+D I'll go back to assuming DocumentHeader and Triggers.version aren't necessary.


SPIKE: figure out if/how we can have both slash commands and regular commands at the same time

Purpose
Figure out if/how we can have both slash commands and regular commands running on the bot at the same time.
If we are able to do this, we can roll out our slash commands incrementally and we won't have to necessarily pause bug fixes until slash commands are completed.
This ticket is a spike and is meant to be exploratory. We will probably not merge any code from this ticket. The goal of this spike is to research and explore if this is possible, how much work it will be to implement, and potentially a working proof of concept.
Acceptance Criteria
Please list the requirements the implementation of this feature should meet.

[ ] Discover if it is possible to have both slash commands and regular commands at the same time.
[ ] Provide an estimate on the amount of work it will take.

Unless anyone else is already working on this I'll do some testing and investigate a little.

I integrated the 4 current slash commands from the community bot into our bot and they were running fine side by side. Main limitation seems to be that a regular command cannot have the same name as a slash command. The experimental branch is called try-slash-cmd-integration. It requires creating a few new env variables related to slash commands (same ones we have in community bot) and run the deployCommands.js script.

So it is possible to run the commands at the same time and the setup for this is easy. Perhaps the next thing to look into is if permissions/role related commands will also work smoothly.


HTTP FAILED: java.io.IOException: exhausted all routes

While trying to use implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0' in app module and my library module as well getting
okhttp.OkHttpClient: <-- HTTP FAILED: java.io.IOException: exhausted all routes
and API call gets failed.
But if we use implementation 'com.squareup.okhttp3:logging-interceptor:4.4.1' and below, it is working perfectly.

Please create a reproducible test case and reopen, we can't investigate based on this report.


generic-array v0.14

We just bumped all of the RustCrypto crates to generic-array v0.14, which adds some nice features:
https://github.com/RustCrypto/traits/pull/95
It'd be great if heapless got updated too so we could share a single version of generic-array (which hasn't happened so far as the RustCrypto crates were previously stuck on v0.12).
We use heapless in the aead crate to provide a Vec-like buffer type on no_std. Here's an example:
https://docs.rs/aes-gcm/0.5.0/aes_gcm/#in-place-usage-eliminates-alloc-requirement

It looks like as-slice needs to get updated to make this happen: https://github.com/japaric/as-slice/issues/6

It requires minimum Rust version of 1.41.0

Yes, it requires an MSRV bump. For what it's worth, we've bumped all of the RustCrypto crates to MSRV 1.41 for this reason.

We use heapless in the aead crate to provide a Vec-like buffer type on no_std. Here's an example:

You might be interested in https://github.com/japaric/heapless/pull/164, if that gets reviewed/accepted. I'm also planning a CString type, but this could be a "minor" (patch) update.
Regarding MSRV, maybe https://github.com/RustCrypto/traits/issues/43#issuecomment-566768846 is applicable here ("depend on range instead of specific version") and would cater to all user groups.

FYI, MSRV for generic-array v0.14 was just reduced to 1.36.0: https://github.com/fizyk20/generic-array/pull/102

While I am positive to updating generic array, I am unsure if this is a breaking change in heapless.
I think we had similar discussions before in as-slice where it became a bit of a storm when we updated the generic-array dependency.

I am facing the need to upgrading generic_array to 0.14.0, due to the following issue.
Without it, I am forced to stay on rustc 1.47.0, as 1.48. included this this and now causes a panic. Not a deal-breaker, but having to stay on an old rustc is not ideal.
I don't know about how pressing this is for others, but maybe heapless should bump it now to stay in sync with the rest of the ecosystem (rustc + generic_array)?

I am facing the need to upgrading generic_array to 0.14.0, due to the following issue.
Without it, I am forced to stay on rustc 1.47.0, as 1.48. included this this and now causes a panic. Not a deal-breaker, but having to stay on an old rustc is not ideal.
I don't know about how pressing this is for others, but maybe heapless should bump it now to stay in sync with the rest of the ecosystem (rustc + generic_array)?

It's a bit of a tough issue, this is a breaking change. I'm not sure how pliable heapless is to supporting both 0.13 and 0.14 of generic_array.
I was hoping we can hold out until const generics are released and make a major bump then and remove generic_array all together.
However if generic_array has UB in 0.13, I don't really see any option than to bump it.

It's a bit of a tough issue, this is a breaking change. I'm not sure how pliable heapless is to supporting both 0.13 and 0.14 of generic_array.
I was hoping we can hold out until const generics are released and make a major bump then and remove generic_array all together.
However if generic_array has UB in 0.13, I don't really see any option than to bump it.

What do you think @japaric ? Should we bump to 0.14 within the current version of heapless to fix the UB?

What do you think @japaric ? Should we bump to 0.14 within the current version of heapless to fix the UB?

Is min_const_generics enough?
If yes, it is already merged and rustc 1.51. is to land on March 25th 2021. So it is something one can plan for.
Though stripping generic_array would then also take some additional time.

Is min_const_generics enough?
If yes, it is already merged and rustc 1.51. is to land on March 25th 2021. So it is something one can plan for.
Though stripping generic_array would then also take some additional time.

Yes, min_const_generics is enough. We have already ported heapless to it and are just awaiting stabilization

Yes, min_const_generics is enough. We have already ported heapless to it and are just awaiting stabilization

@korken89 maybe it would be possible to bump heapless to 0.6 (bumping generic-array to 0.14), and then when you're ready, bump heapless to 0.7 (removing generic-array)? I know that's a few breaking change releases in a row, but it would be very helpful to not be stuck on 0.13 (+ the UB argument).

@korken89 maybe it would be possible to bump heapless to 0.6 (bumping generic-array to 0.14), and then when you're ready, bump heapless to 0.7 (removing generic-array)? I know that's a few breaking change releases in a row, but it would be very helpful to not be stuck on 0.13 (+ the UB argument).

I agree, we could do a release to fix the UB issue, but if it is UB I'd sort of want it to be in the current version.
Not sure if this makes sense, or if we should just go to a new version...


Suggestion box shows very slow on long HTML document.

Issue Type: Performance Issue
I'm writing a long html document(8533 lines, almost it is javascript code). I see that the suggestion box for javascript code shows very slow(about 10s). But it work well on short documents.
Does anyway to speed it up?
VS Code version: Code 1.22.1 (950b8b0d37a9b7061b6f0d291837ccc4015f5ecd, 2018-04-06T02:26:57.615Z)
OS version: Windows_NT x64 10.0.15063

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz (4 x 2400)

Memory (System)
7.43GB (2.59GB free)

Process Argv
C:\Program Files\Microsoft VS Code\Code.exe

Screen Reader
no

VM
0%

Process Info
CPU %	Mem MB	   PID	Process
    1	    98	 16748	code main
    0	   204	  2560	   window (view_design_detail_simple.html - python - Visual Studio Code)
    0	    12	 13440	     watcherService
    0	     5	 11376	       console-window-host (Windows internal process)
    0	     9	 13668	     electron-crash-reporter
    0	    63	 18076	     extensionHost
    0	   122	  5304	       electron_node htmlServerMain.js
    0	    27	  9040	       electron_node electronForkStart.js tsserver.js
    1	    20	 16448	         electron_node typingsInstaller.js tsserver.js typesMap.js
    1	    95	  7208	   gpu-process
    0	    68	  8324	   powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& {& 'c:\Program Files\Microsoft VS Code\resources\app\out\vs\base\node\ps-win.ps1' -ProcessName 'Code.exe' -MaxSamples 3}"
    0	     8	 12984	     console-window-host (Windows internal process)
    1	    74	 10740	   shared-process
    0	    48	 16192	   shared-process

Workspace Info
|  Window (view_design_detail_simple.html - python - Visual Studio Code)
|    Folder (python): 3491 files
|      File types: js(810) gif(783) png(364) pyc(358) py(278) html(229)
|                  css(185) scss(55) less(55) php(54)
|      Conf files: package.json(3) settings.json(1);

Extensions (1)

Extension
Author (truncated)
Version

python
ms-
2018.3.1

This is most likely due to the time taken by the html language server in providing completions

Hi @ramya-rao-a,
There is any solution for this problem?

@luanft Any chance you can share that document?

Yes. Please find the attachment. I hope it is useful
view_design_detail_simple.zip

@luanft Sorry for the delayed answer. I tried your code sample but don't don't see any slowness. Is it everywhere in the code, or at some at a particular location?


update the readme file for Management Group argument

New-AzManagementGroupDeployment:
Cannot validate argument on parameter 'ManagementGroupId'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
Write-Error: Unable to deploy the backend components. Please make sure you have the proper permissions to deploy resources in the poc resource group.
Write-Error: Cannot validate argument on parameter 'ManagementGroupId'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.

@ms-amitabh90 Can you please clarify how you ran into this error and where you are looking for a doc update?

Old setup process. N/A anymore.


proposal: Optional externalize site config

This relates to #3088 -- re. @digitalcraftsman comment:

This proposal defines the authors in the config file instead of using data files as in #1850 . What advantages do you see here? I would rather try to keep the config file flat.

So author configuration is site configuration, but because it may potentially be lots of them, we should put them in some special place.

Sure, site params must be configured in config.toml ... Oh, expect author params, which must be put in files below /data in a special folder starting with double dash ...

I suggest rather that we make this a general thing:
Site config belongs in config.toml and cousins, but it can optionally be put in files below /data/_config/. Keys in config.toml will always win.
@digitalcraftsman this one is open for discussion.

I like this generic and flexible approach - it's optional can be done as you like. Putting thinks like author profiles, menu definitions etc. in different data files can definitely improve the maintenance of a large config file.
But how do you distinguish between data/_config/language/en.toml and data/_config/language.en.toml?

But how do you distinguish between data/_config/language/en.toml and data/_config/language.en.toml?

The last one does not make sense the way we parse data files. It will be an object with key "language.en".
I have not analyzed every corner of this proposal, but I think it should be doable.

Also note that all of the site config that we, for some reason, put in external data files, will have to logically follow the same life cycle as the site config (think live reload), so making it "one thing" makes sense.


first pass at az monitor service landing page

Docs Build status updates of commit 216617f:
:clock10: Full build: the average full build time is 7 min(s) 45 sec(s), this is based on the last 708 build(s) for this repository.

Docs Build status updates of commit 216617f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-reference-for-monitor.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 662f016:
:clock10: Full build: the average full build time is 7 min(s) 46 sec(s), this is based on the last 711 build(s) for this repository.

Docs Build status updates of commit 662f016:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-reference-for-monitor.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit b0cc218:
:clock10: Full build: the average full build time is 7 min(s) 46 sec(s), this is based on the last 713 build(s) for this repository.

Docs Build status updates of commit b0cc218:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-reference-for-monitor.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 55ab390:
:clock10: Full build: the average full build time is 7 min(s) 46 sec(s), this is based on the last 714 build(s) for this repository.

Docs Build status updates of commit 55ab390:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-reference-for-monitor.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 02c4296:
:clock10: Full build: the average full build time is 7 min(s) 46 sec(s), this is based on the last 715 build(s) for this repository.

Docs Build status updates of commit 02c4296:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-reference-for-monitor.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit f048482:
:clock10: Full build: the average full build time is 7 min(s) 47 sec(s), this is based on the last 719 build(s) for this repository.

Docs Build status updates of commit f048482:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/azure-cli-reference-for-monitor.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Closed as the working branch had to be moved to a new laptop.


MNT add funding file to apply to floss.fund

This is to apply for https://floss.fund/ which requires this file somewhere. I'd remove the file once the decision on the funding is made, either accept or reject.
Would this be okay @BenjaminBossan

I still appreciate your reviews and it's nice not to have a single person with permissions, at least until we find a new maintainer.


Shouldn't accept broken / corrupt PCM files

Currently it does. Any chance it throws an error instead?

Can you give an example of a broken file?

ha, that ticket is soooo old and dont have such a file anymore


After opening the map the game freezes (and not responding)

I have HTC Vive. This mod is awsome, but after opening up the map of the solar system in the space shuttle makes the whole game freeze, i got error messages like this:

Quantum moon orbit position occupied! Aborting collapse.. Stack trace: Unity 18
NullReferenceException: Object reference not set to an instance of an object. Stack trace:  Unity 77
NomaiVR.SmoothFollowCameraRotation.LateUpdate ()

etc.

By space shuttle do you mean the player's ship or something else?

Yes the players's ship.

I noticed this bug too. It always happens when i use the map for too long. The only thing that helps is trying to close the window (by pressing x on the desktop) and when the prompt appears telling me the game does not react I hit "try to restore the program" or whatever it's called. That usually does the trick.

Probably fixed by 14229cc


spanner: snippet tests are flaky

We should add the project name to the database name. Relying on timestamps to be unique can cause data races. See https://github.com/GoogleCloudPlatform/golang-samples/blob/master/spanner/spanner_snippets/snippet_test.go#L29
snippet_test.go:44: run("addnewcolumn", "projects/golang-samples-tests/instances/golang-samples-tests/databases/test-1533489027"): rpc error: code = FailedPrecondition desc = Duplicate column name Albums.MarketingBudget.
snippet_test.go:44: run("addstoringindex", "projects/golang-samples-tests/instances/golang-samples-tests/databases/test-1533489027"): rpc error: code = FailedPrecondition desc = Duplicate name in schema: AlbumsByAlbumTitle2.
snippet_test.go:44: run("createtabledocswithhistorytable", "projects/golang-samples-tests/instances/golang-samples-tests/databases/test-1533489027"): rpc error: code = FailedPrecondition desc = Duplicate name in schema: Documents.

i will take this one as first contrib

Thank you! It might be difficult to test without a Spanner instance, but tests will run when you create the PR. Let me know if you have any questions. :)
Here is an example of using testutil.SystemTest to get the ProjectID and use it in a bucket name.


small tweak to publication page messages

The papers which have been sent out for curated but not yet accepted (i.e just SESSION_CREATED)
e.g
PMID:31564494
PMID:24449894
these say
Community curation is in progress for this paper. Please contact the curators if you would like to suggest annotations from it.
In this case I don't think the message should say
"Community curation is in progress for this paper."
but
This session is assigned to one of the authors for community curation.
(It might confuse people to see'curation is in progress' if they have ignored my e-mails.  Or they may think that another author is doing it. I think it's better to be precise here).

I've made that change.


SQLite boolean casting

SQLite doesn't have FALSE and TRUE literals, so when you passing bool value to PyPika it wraps it as false or true which leads to error in SQLite.
I understand that PyPika isn't obliged to encapsulate dialects features, but I still think that it should be implemented in PyPika so that same queries would work if you just change dialect of query builder.
Looking at the code - I couldn't come up with easy solution for it with current code. Problem is ValueWrapper is completely independent of QueryBuilder and there is no way to substitute ValueWrapper with custom value wrapper for custom dialect.
Is there some way to do it easily that I am not seeing or it have to done by binding value wrapper to query builder and overriding it in custom dialects?

PyPika does have some support for vendor specific SQL dialects, so it wouldn't be trouble to support this too. I'm guessing that the ValueWrapper should replace True and False literals in SQL lite with 1 and 0, respectively?

Yeah, the reason why it is issue and not PR is that as I see current ValueWrapper has no easy way to change it's behaviour based on dialect of QueryBuilder


Reduce RAM consumption for civetweb HTTP sample

Is your enhancement proposal related to a problem? Please describe.
Current configuration for Civetweb HTTP sample requires too much RAM (>230K), which prevents it from being run on wide number of targets.
This choice was deliberate at PR introduction (https://github.com/zephyrproject-rtos/zephyr/pull/17019) as described in this comment.
Civetweb is the only HTTP client sample available today for zephyr. This memory consumption makes is unavailable for many targets, so situation  is like there were no Zephyr HTTP client for many Zephyr users.
Before net refactoring, I was able to run a micropython powered HTTP server on top of existing networking stack on nucleo_f429zi (192K RAM), so I would expect we could have a zephyr native alternative running on the same platform today.
samples/net/sockets/civetweb configuration shows that main factor for RAM consumption is the following setting:
CONFIG_MINIMAL_LIBC_MALLOC_ARENA_SIZE=131072

Below 92000 an illegal exception appears. At 92000 connection closes after a few history clicks.
So getting it down to an acceptable level obviously requires some fine tuning and potentially further optimisation.
Describe the solution you'd like
Rework civetweb sample configuration to fit below an acceptable RAM consumption.
Describe alternatives you've considered
Additional context

Civetweb is the only HTTP client sample available today for zephyr. This memory consumption makes is unavailable for many targets, so situation is like there were no Zephyr HTTP client for many Zephyr users.

This is not correct atm. There is a light weight HTTP client API that is currently used by the Websocket client library. The API can be found in include/net/http_client.h and include/net/websocket.h header files, the code can be found at subsys/net/lib/http and subsys/net/lib/websocket directories.

This is not correct atm. There is a light weight HTTP client API that is currently used by the Websocket client library. The API can be found in include/net/http_client.h and include/net/websocket.h header files, the code can be found at subsys/net/lib/http and subsys/net/lib/websocket directories.

Thanks, I have missed that. I'll have a look, tough the concern for civetweb is still valid (but less important maybe).

Lowering the priority as there is alternative implementation available for HTTP client side. For server side HTTP support there is nothing else available atm.


Bridge request for Multi RSS

Bridge request
I would like a Bridge witch combines multiple RSS Feeds. Just like the Filter Bridge filters one.

General information

Host URI for the bridge (i.e. customurl1,customurl2):

Which information would you like to see?

How should the information be displayed/formatted?

Which of the following parameters do you expect?

[X] Title
[X] URI (link to the original article)
[X] Author
[X] Content (the content of the article)
[X] Enclosures (pictures, videos, etc...)
[x] Timestamp
[X] Categories (categories, tags, etc...)

Options

[ ] Limit number of returned items

Default limit: 5

[X] Load full articles

Cache articles (articles are stored in a local cache on first request): yes
Cache timeout (max = 24 hours): 24 hours

[X] Balance requests (RSS-Bridge uses cached versions to reduce bandwith usage)

Timeout (default = 5 minutes, max = 24 hours): 5 minutes

See #1385 :)


misspellings and typos

fixed some typos

No that isn't normal desired behavior. I changed that last night just to force the update but forgot to change it back to only on pull requests to main branch.
Lauren Green, M.S CSCS RSCCD PES
Customer Engagement & Sales
@.>
@.*
From: Chris Wales @.>
Sent: Tuesday, May 7, 2024 7:58 AM
To: HawkinDynamics/hawkinPy @.>
Cc: Lauren Green @.>; Mention @.>
Subject: [EXTERNAL] Re: [HawkinDynamics/hawkinPy] misspellings and typos (PR #4)
@qwales1 commented on this pull request.

On .github/workflows/python-docpage.ymlhttps://github.com/HawkinDynamics/hawkinPy/pull/4#discussion_r1592637593:
@laureng-hdhttps://github.com/laureng-hd it looks like this publishes changes to the docs on any push to dev_env. If so, is that the desired behavior?

Reply to this email directly, view it on GitHubhttps://github.com/HawkinDynamics/hawkinPy/pull/4#pullrequestreview-2043448409, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BB2O3EWBKA24H5ZPSL5K5K3ZBDTWXAVCNFSM6AAAAABHLENNCGVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDANBTGQ2DQNBQHE.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>


DO instances: missing header for 'Units'

there is no field header for 'Units' in the DO instances section

fixed


Major design changes

Fixes #13. Non-exhaustive list of changes:

Replaced all the printlns with proper logging
Replaced the command line with a new interface using a library (and also with a completely new design)
Dependency handling is now done through Maven
May not work with older versions of the Minecraft server anymore
Removed all of the bloat and unused stuff (update and download feature, time measurement etc.)
Simplified the server launch sequence (it is mostly the "alternate" one)
Made it more library-friendly
Added new generation mechanic using permanently loaded chunks (way faster)
Added JavaDocs and one unit test

Been unable to get this to work. Is this still a work in progress?

No, it's pretty much done feature-wise and I even use this to generate test world for another project. I just noticed that none of the documentation has been updated since all the changes were made. I'll do this soon™.
On the other hand: what have you tried and why didn't it work?

@piegamesde I just tried running it and I get a getCallerClass error and shuts off right after.

Since it seems that there are no plans to integrate our changes, we decided to continue the fork on our own: https://github.com/sommerlilie/MinecraftLandGenerator
@Wumpotamus Please create an issue there if it still doesn't work for you.


Add support for highlighting variables

Many themes, including OneDark proposed in #33 contain highlighting of variables. We can find variables by assignment, val or other keyword preceding the declaration, or lack of braces after usage.

This can be easy to implement only when basing on these keywords for a given language. It would be great to have that so I will focus after Bugfixes. Thanks!


change reducer type validation place

change reducer type validation to be at the very start of createStore function since all operations after this condition is met are neglected, and this also forces users who pass their own enhancers to pass the reducer as a function

Thanks, but this functionally doesn't do anything. In addition, the type check would fail for the wrong kind of reducer.

Thanks, but this functionally doesn't do anything. In addition, the type check would fail for the wrong kind of reducer.

It does, check the below cases :

function will return before throwing this error, check the comment below

if (
    (typeof preloadedState === 'function' && typeof enhancer === 'function') ||
    (typeof enhancer === 'function' && typeof arguments[3] === 'function')
  ) {
    throw new Error(
      'It looks like you are passing several store enhancers to ' +
        'createStore(). This is not supported. Instead, compose them ' +
        'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.'
    )
  }
  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
    enhancer = preloadedState as StoreEnhancer<Ext, StateExt>
    preloadedState = undefined
  }

  if (typeof enhancer !== 'undefined') {
    if (typeof enhancer !== 'function') {
      throw new Error(
        `Expected the enhancer to be a function. Instead, received: '${kindOf(
          enhancer
        )}'`
      )
    }
    /**function will return before throwing reducer's type error,
    but the returned createStore call or its sub calls from the enhancer will throw if you pass it wrong reducer type
   */
    return enhancer(createStore)(
      reducer,
      preloadedState as PreloadedState<S>
    ) as Store<ExtendState<S, StateExt>, A, StateExt, Ext> & Ext
  }

  if (typeof reducer !== 'function') {
    throw new Error(
      `Expected the root reducer to be a function. Instead, received: '${kindOf(
        reducer
      )}'`
    )
  }

//so if you pass these types function will return before throwing this error
const store = createStore(undefined, {} ,enhancer);

so I think throwing reducer's type error from the very start will be better since there will be no cost from putting it at the very start.
also, doing all these conditions before throwing the reducer's type error is not the best even if it's low cost, as passing the wrong reducer type will in the end throw an error and break all that as you have said.

Hmm, I guess that does make sense. I'm so used to TS now that I don't really think about these things anymore! 😄

Hmm, I guess that does make sense. I'm so used to TS now that I don't really think about these things anymore! 😄

Never mind ..... thank you ❤


kha KeyCode problems

There's issues with the KeyCodes in kha so I recommend reverting to Int and tracing (I made the var public in keyboard) since they vary from target to target according to Rob.
I had to do this when updating SDG and put an or '||' for both the KeyCode and the actual Int that is traced (and does not exist as a kha.KeyCode).

Still waiting for the Kha guys to figure out what they want to do, my = and + are still broken, but I made my own KeyCodes in the mean time.


RAT-14: Verification for RAT-14

Fix for RAT-14
Added integration test
Modified Reporter to allows exec() call and return a ClaimStatistic object.
Added groovy usage of ClaimStatistic to verify results whithout generating output.

execute() is the solution for the request to get numbers only from the run.  It needs to be public.  I will adjust this.

execute() is the solution for the request to get numbers only from the run. It needs to be public. I will adjust this.

Should we add more tests to indicate this? I was astonished to only find references in the tests, thus I changed the visibility.

I added tests for execute()

@Claudenw I removed the deletion of test directories and corrected the test assertions for the build to pass. Hope this is okay with you.


Link a Textract async operation with downstream process

I have a simple setup with one Lambda function that starts a Textract analysis of a document via StepFunctions.
The textract task in the StepFunction definition sends a notification on an SQS which triggers another lambda. I have little to no control on what message is sent in the SQS by textract since it's a predefined aws task.
Everything is patched with Xray and what it's seen from console is essentially this:
(client)  -> LambdaA -> StepFunction -> Textract
(client) -> LambdaB (this one has been triggered by the SQS message)
However I was wondering if it is possible at all to link the two flows in Xray and see them as one trace_id or linked traces.
Can two traces be linked manually with the SDK?

Thanks for reaching X-Ray. we are working a feature "custom defined links" which can be used in creating a process segment handling a batch of upstream traces. The underlying data model please refer to

https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md#links-between-spans
https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/#batch-processing

We don't have exact timeline for this feature. To be noticed this feature only apply for ADOT(AWS Distro for OpenTelemetry Java), not support xray SDK. Please see https://docs.aws.amazon.com/xray/latest/devguide/xray-java.html


feat: add support for connect tokens

Summary
Add support for connect token ids, closing #423
Checklist

[x] ran cargo make fmt
[x] using conventional commits to hightlight user-facing fixes and features

This is waiting on #426 to merge


Better result formatting for return collections

So when I updated from Graphaware's connector I had to add more code to access nested collections the same way. It seems that the nested collections that are returned don't function the same way and have more stuff to filter out after a certain level. Maybe I'm not accessing it the right way but I haven't found any guidance on this matter. Maybe it is better now for some reason, if so I can't explain it.
I do understand that there are ways to add custom result formatting, maybe that would help.
Example Return of nested collections that is now harder to access:
...
OPTIONAL MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(p)
WITH DISTINCT  description, Collect(i.itemID) AS items, Collect(g.group) AS groups, Collect(p) AS props
RETURN description.content, Collect({items: items, groups: groups, p: props}) as itemlist
foreach ($results as $result) {
	//Easy, works as expected
	$output.='
description
'.($result->get('description.content') == ''? 'null' : $result->get('description.content'));

	$properties=[];
	if($result->get('itemlist') !== ''){
		foreach($result->get('itemlist') as $key => $item){
			if($key=='items'){

					//Works as expected
					foreach( $itemID as $keys => $id){
						if($k == 'groups'){
							$groups[]= $id;
						}
					}

					//'p' has multiple values /nodes and is not easily accessible
					foreach( $itemID as $keys => $id){
						if($k == 'p'){
							foreach( $id as $content => $attr){
								$props[] = $attr; //Assigns a barely accessible object and ids etc...
							}
						}
					}
				}
			}
		}
	}

	/* Extra new code required to make $props the way it used to be using the older connector */
	foreach($props as $att){
		if(! IS_NUMERIC($att))	{
			foreach( $att as $val){
				if($val != 'Property' && $val != ''){
					$temp[] =$val;
				}
			}
			if($temp[0] != ''){
				$properties[]=['property'=>$temp[0],'content'=>$temp[1]];
			}
		}
	}

	$props = $properties;
}

Hello @siteraiser,
I must admit, this is quite convoluted! I tried running the example and the query doesn't even work.
If you want full help, it will be best if you post a question on stack overflow. In the meantime, I can give you an example which might be helpful because I don't even understand what you are trying to achieve here, or which enhancement you want exactly.
$properties = [];
$items = [];
/** @var CypherMap $result */
foreach ($results as $result) {
    $output .= '
description
'.($result->get('description.content') == '' ? 'null' : $result->get('description.content'));
    $properties = [];
    $itemlist = $result->getAsCypherList('itemlist');
    /** @var CypherMap $map */
    foreach ($itemlist as $map) {
        $items = array_merge($properties, $map->getAsCypherMap('items')->map(static fn (Node $x) => $x->getProperties()->get('itemID'))
        $properties = array_merge($map->getAsCypherMap('p')->map(static fn (Node $x) => $x->getProperties())->toArray(), $props);
    }
}

Hope this helps!

Looks very useful, thanks for the suggestion! The query example assumes that there is data already present. Basically I'm returning a collection of collections and it didn't behave the same way as before (when using the graphaware connecter).
"getAsCypherList" & "getAsCypherMap" might just be what I was looking for. Before updating to Laudis I was able for iterate all the way through the results without using special functions. Anyway, just a suggestion. I prefer not to have to use special functions to parse the returned results.

`<?php /* some concrete convolution */
require_once $_SERVER['DOCUMENT_ROOT'].'/'.'vendor/autoload.php';
use Laudis\Neo4j\Authentication\Authenticate;
use Laudis\Neo4j\ClientBuilder;
$neo4j = ClientBuilder::create()
->withDriver('bolt', 'bolt://superuser:admin@localhost:7687') // creates a bolt driver
//  ->withDriver('https', 'https://localhost:7474', Authenticate::basic('superuser', 'admin')) // creates an http driver
// ->withDriver('neo4j', 'neo4j://neo4j.test.com?database=my-database', Authenticate::oidc('token')) // creates an auto routed driver with an OpenID Connect token
->withDefaultDriver('bolt')
->build();
$query = "
CREATE (u:Url {href: 'https://example.com'})
WITH u
CREATE (u)-[:has_group]->(g:Group { group: 'description'})
WITH u,g
MATCH  (u:Url)-[:has_group]->(g:Group )
CREATE (g)-[:has_item]->(i:Item { itemID: '0'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'content',content:'Description for page 1'})
WITH u
CREATE (u)-[:has_group]->(g:Group { group: 'mainlinks'})
WITH u,g
MATCH  (u:Url)-[:has_group]->(g:Group )
CREATE (g)-[:has_item]->(i:Item { itemID: '0'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'rel',content:'nofollow'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'innertext',content:'link to page 2'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'href',content:'https://example.com/page2'})
CREATE (u2:Url {href: 'https://example.com/page2'})
WITH u2
CREATE (u2)-[:has_group]->(g2:Group { group: 'description'})
WITH u2,g2
MATCH (u2:Url)-[:has_group]->(g2:Group )
CREATE (g2)-[:has_item]->(i2:Item { itemID: '0'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'content',content:'Description for page 2'})
WITH u2
CREATE (u2)-[:has_group]->(g2:Group { group: 'mainlinks'})
WITH u2,g2
MATCH  (u2:Url)-[:has_group]->(g2:Group )
CREATE (g2)-[:has_item]->(i2:Item { itemID: '0'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'rel',content:'nofollow'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'innertext',content:'link to homepage'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'href',content:'https://example.com/'})
";
$results = $neo4j->run($query);
$query = '
MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(description) WHERE g.group = "description"
WITH DISTINCT n,  description
OPTIONAL MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(p)
WITH DISTINCT description, Collect(i.itemID) AS items, Collect(g.group) AS groups, Collect(p) AS props
RETURN description.content, Collect({items: items, groups: groups, p: props}) as itemlist
';
$results = $neo4j->run($query);
foreach ($results as $result) {
//Easy, works as expected
echo'description'.($result->get('description.content') == ''? 'null' : $result->get('description.content'));
$groups=[];$subGroup=[];$props=[];
	if($result->get('itemlist') !== ''){
		foreach($result->get('itemlist') as $key => $item){

			if($key=='items'){

				foreach($item as $k => $itemID){
					foreach( $itemID as $keys => $id){
						if($k == 'groups'){
							$groups[]= $id;
						}
					}

					foreach( $itemID as $keys => $id){
						if($k == 'items'){
							$subGroup[$id][] =  $keys ;
						}
					}

					foreach( $itemID as $keys => $id){
						if($k == 'p'){
							foreach( $id as $content => $attr){

								$props[] = $attr;

							}
						}
					}
				}
			}
		}
	}

	$properties=[];
		foreach( $props as $att){
			if(! IS_numeric( $att))	{

			$temp=[];
				foreach( $att as $blah){
					if($blah != 'Property' && $blah != ''){
						$temp[] =$blah;//echo '
'.
					}
				}
				if(!empty($temp[0])){
					$properties[]=['property'=>$temp[0],'content'=>$temp[1]];
				}

			}
		}

$props = $properties;
echo'';
var_dump($props);
echo'';
}`

withDriver('bolt', 'bolt://superuser:admin@localhost:7687') // creates a bolt driver
   //  ->withDriver('https', 'https://localhost:7474', Authenticate::basic('superuser', 'admin')) // creates an http driver
   // ->withDriver('neo4j', 'neo4j://neo4j.test.com?database=my-database', Authenticate::oidc('token')) // creates an auto routed driver with an OpenID Connect token
  ->withDefaultDriver('bolt')
    ->build();

$query = "
CREATE (u:Url {href: 'https://example.com'})
WITH u
CREATE (u)-[:has_group]->(g:Group { group: 'description'})
WITH u,g
MATCH  (u:Url)-[:has_group]->(g:Group )
CREATE (g)-[:has_item]->(i:Item { itemID: '0'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'content',content:'Description for page 1'})
WITH u
CREATE (u)-[:has_group]->(g:Group { group: 'mainlinks'})
WITH u,g
MATCH  (u:Url)-[:has_group]->(g:Group )
CREATE (g)-[:has_item]->(i:Item { itemID: '0'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'rel',content:'nofollow'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'innertext',content:'link to page 2'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'href',content:'https://example.com/page2'})

CREATE (u2:Url {href: 'https://example.com/page2'})
WITH u2
CREATE (u2)-[:has_group]->(g2:Group { group: 'description'})
WITH u2,g2
MATCH (u2:Url)-[:has_group]->(g2:Group )
CREATE (g2)-[:has_item]->(i2:Item { itemID: '0'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'content',content:'Description for page 2'})
WITH u2
CREATE (u2)-[:has_group]->(g2:Group { group: 'mainlinks'})
WITH u2,g2
MATCH  (u2:Url)-[:has_group]->(g2:Group )
CREATE (g2)-[:has_item]->(i2:Item { itemID: '0'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'rel',content:'nofollow'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'innertext',content:'link to homepage'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'href',content:'https://example.com/'})
";

$results = $neo4j->run($query);

$query = '

MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(description) WHERE g.group = "description"
WITH DISTINCT n,  description
OPTIONAL MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(p)
WITH DISTINCT description, Collect(i.itemID) AS items, Collect(g.group) AS groups, Collect(p) AS props
RETURN description.content, Collect({items: items, groups: groups, p: props}) as itemlist
';

$results = $neo4j->run($query);

foreach ($results as $result) {
	//Easy, works as expected
	echo'description'.($result->get('description.content') == ''? 'null' : $result->get('description.content'));

	$groups=[];$subGroup=[];$props=[];
		if($result->get('itemlist') !== ''){
			foreach($result->get('itemlist') as $key => $item){

				if($key=='items'){

					foreach($item as $k => $itemID){
						foreach( $itemID as $keys => $id){
							if($k == 'groups'){
								$groups[]= $id;
							}
						}

						foreach( $itemID as $keys => $id){
							if($k == 'items'){
								$subGroup[$id][] =  $keys ;
							}
						}

						foreach( $itemID as $keys => $id){
							if($k == 'p'){
								foreach( $id as $content => $attr){

									$props[] = $attr;

								}
							}
						}
					}
				}
			}
		}

		$properties=[];
			foreach( $props as $att){
				if(! IS_numeric( $att))	{

				$temp=[];
					foreach( $att as $blah){
						if($blah != 'Property' && $blah != ''){
							$temp[] =$blah;
						}
					}
					if(!empty($temp[0])){
						$properties[]=['property'=>$temp[0],'content'=>$temp[1]];
					}

				}
			}

$props = $properties;
echo'';
 var_dump($props);
 echo'';

 }

`<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/'.'vendor/autoload.php';
use Laudis\Neo4j\Authentication\Authenticate;
use Laudis\Neo4j\ClientBuilder;
$neo4j = ClientBuilder::create()
->withDriver('bolt', 'bolt://superuser:admin@localhost:7687') // creates a bolt driver
//  ->withDriver('https', 'https://localhost:7474', Authenticate::basic('superuser', 'admin')) // creates an http driver
// ->withDriver('neo4j', 'neo4j://neo4j.test.com?database=my-database', Authenticate::oidc('token')) // creates an auto routed driver with an OpenID Connect token
->withDefaultDriver('bolt')
->build();
$query = "
CREATE (u:Url {href: 'https://example.com'})
WITH u
CREATE (u)-[:has_group]->(g:Group { group: 'description'})
WITH u,g
MATCH  (u:Url)-[:has_group]->(g:Group )
CREATE (g)-[:has_item]->(i:Item { itemID: '0'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'content',content:'Description for page 1'})
WITH u
CREATE (u)-[:has_group]->(g:Group { group: 'mainlinks'})
WITH u,g
MATCH  (u:Url)-[:has_group]->(g:Group )
CREATE (g)-[:has_item]->(i:Item { itemID: '0'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'rel',content:'nofollow'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'innertext',content:'link to page 2'})
WITH u,g,i
CREATE (i)-[:has_property]->(p:Property {property:'href',content:'https://example.com/page2'})
CREATE (u2:Url {href: 'https://example.com/page2'})
WITH u2
CREATE (u2)-[:has_group]->(g2:Group { group: 'description'})
WITH u2,g2
MATCH (u2:Url)-[:has_group]->(g2:Group )
CREATE (g2)-[:has_item]->(i2:Item { itemID: '0'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'content',content:'Description for page 2'})
WITH u2
CREATE (u2)-[:has_group]->(g2:Group { group: 'mainlinks'})
WITH u2,g2
MATCH  (u2:Url)-[:has_group]->(g2:Group )
CREATE (g2)-[:has_item]->(i2:Item { itemID: '0'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'rel',content:'nofollow'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'innertext',content:'link to homepage'})
WITH u2,g2,i2
CREATE (i2)-[:has_property]->(p:Property {property:'href',content:'https://example.com/'})
";
$results = $neo4j->run($query);
$query = '
MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(description) WHERE g.group = "description"
WITH DISTINCT n,  description
OPTIONAL MATCH (n)-[:has_group]->(g:Group)-[:has_item]->(i:Item)-[:has_property]->(p)
WITH DISTINCT description, Collect(i.itemID) AS items, Collect(g.group) AS groups, Collect(p) AS props
RETURN description.content, Collect({items: items, groups: groups, p: props}) as itemlist
';
$results = $neo4j->run($query);
foreach ($results as $result) {
//Easy, works as expected
echo'description'.($result->get('description.content') == ''? 'null' : $result->get('description.content'));
$groups=[];$subGroup=[];$props=[];
	if($result->get('itemlist') !== ''){
		foreach($result->get('itemlist') as $key => $item){

			if($key=='items'){

				foreach($item as $k => $itemID){
					foreach( $itemID as $keys => $id){
						if($k == 'groups'){
							$groups[]= $id;
						}
					}

					foreach( $itemID as $keys => $id){
						if($k == 'items'){
							$subGroup[$id][] =  $keys ;
						}
					}

					foreach( $itemID as $keys => $id){
						if($k == 'p'){
							foreach( $id as $content => $attr){

								$props[] = $attr;

							}
						}
					}
				}
			}
		}
	}

	$properties=[];
		foreach( $props as $att){
			if(! IS_numeric( $att))	{

			$temp=[];
				foreach( $att as $blah){
					if($blah != 'Property' && $blah != ''){
						$temp[] =$blah;
					}
				}
				if(!empty($temp[0])){
					$properties[]=['property'=>$temp[0],'content'=>$temp[1]];
				}

			}
		}

$props = $properties;
echo'';
var_dump($props);
echo'';
}`

@transistive I forgot to mention you lol. Thanks for your examples.

@transistive Using getAsCypherMap like this seems to work. This is more what I was looking for in terms of having to use special functions. Hopefully the syntax doesn't change if we're now requiring special functions. Have a jolly fine day.
foreach ($results as $result) { 	$properties = []; 	$itemlist = $result->getAsCypherList('itemlist'); 	// @var CypherMap $map  	foreach ($itemlist as $map) { 		foreach ($map->getAsCypherMap('p') as $map2) {		 			 $properties[]= 			 ["property"=>$map2->getProperties()->get('property'), 			 "content"=>$map2->getProperties()->get('content')];				 		} 		$output.=($result->get('description.content') == ''? 'null' : $result->get('description.content')); 	} }

Hello @siteraiser,
It seems like you are getting the hang of it! We don't require special functions. They are there for easy IDE integration and enforce proper typing, you can swap all getAs<X> methods for a simple get call and the result will be the same.

Hi @transistive ,
Thanks for your suggestions and explanations. Now I'm thinking about as to whether my universal convoluted way of retrieving the data is going to be better in the case of this library retiring at some point in the future and the results structure changes yet again. If it were to return to the previous graphaware way of doing things, then potentially all I'd have to do is delete that section that filters away all the extra stuff. Everything else (in my example) works the same way, up until that level of nestedness.
Hopefully I've been able to at least explain the change in behavior between this and the previous connecter.
Probably still confusing, but this is the example showing what doesn't work the same as graphaware.
<?php /* ... */
		$groups=[];$subGroup=[];$props=[];
		if($result->get('itemlist') !== ''){
			foreach($result->get('itemlist') as $key => $item){
				if($key=='items'){
					foreach($item as $k => $itemID){
						foreach( $itemID as $keys => $id){
						/* Works the same */
							if($k == 'groups'){
								$groups[]= $id;
							}
						/* Works the same */
							if($k == 'items'){
								$subGroup[$id][] =  $keys ;
							}
						/* Doesn't work the same */
							if($k == 'p'){
								foreach( $id as $content => $attr){
									$props[] = $attr;
								}
							}
						}
					}
				}
			}
		}
/* Additional filter goes here to get the wanted properties ... */

Hi @siteraiser,
I don't think you need to worry too much. This library won't be retired any time soon!
I think that the only actual change is that this library returns Node objects if you return a node in cypher. When you iterate over a node in this library, it behaves differently. You just need to call getProperties on that object to get the same behaviour.

Hello again @transistive !
Thankyou for the replies .. Glad to hear it will be in commission for a while, it works quite well. Hopefully I'll retire first lol.
I see what to do now and it's a bit shorter too :D Many thanks!!
<?php
if($k == 'p'){
	/* Old code */
	foreach( $id as $content => $attr){
		$properties[] = $attr;
	}
	 */
	/* New code replacement works the same */
	$properties[] = $id->getProperties();
}

That's great to hear! Good luck on your work and here goes hoping you retire before this library :crossed_fingers:

LOL thanks :) I'm not as old as my avatar makes me out to be, but one can hope anyway.
Unfortunately I had to revert back to the old way of doing it since it isn't the exact equivalent for some reason 🥴
I still greatly appreciate your assistance here. Seems like it will work in most cases at least.
I'll let you get back to more important things for now. Happy coding!

@transistive
LOL thanks :) I'm not as old as my avatar makes me out to be, but one can hope anyway.
Unfortunately I had to revert back to the old way of doing it since it isn't the exact equivalent for some reason 🥴
I still greatly appreciate your assistance here. Seems like it will work in most cases at least.
I'll let you get back to more important things for now. Happy coding!

@transistive
I thought for a bit getProperties wasn't actually exactly equivalent but it is. I forgot to update a variable name leading me to a silly conclusion lol
Happy coding and testing!


Iterators: Implement lowering of iterator state type and ops.

This PR depends on and therefore includes #605 and #606.

We need some ops parsing/printing test here.

This is actually a comment for #606 and I have addressed it there.

Sorry spoke too soon, we need to ensure the roundtripping works properly and we need tests for that: mlir-opt %s | mlir-opt

Dito: related to #606 and addressed there.


Cleaner supporting javascript libraries

I've made what I believe is a cleaned-up version of PR #164. I did a rebase so that the extraneous commits are omitted from this version of the git history. Could you please confirm, @perkinslr, that I actually managed to catch all the important changes?

@crantila thanks!  FYI, this commit seems to be missing: https://github.com/perkinslr/pypyjs/commit/e69182a0f2fb14d8325fc3dbd06eb62714970bf2

@perkinslr wow, there's a lot to go through here, it's probably going to take me a couple of passes to get my head around!  Thanks again for contributing all this.
If you get a chance, it would be really helpful for both me and for future contributors to add a README.txt in the stdlib directory, with a list of the files copied over and a quick summary of the changes made from the standard python version.

Yeah, I hadn't realized just how large it all was till I was done.  I'll see about adding headers to the files and documenting what's changed and why.

I've addded commit perkinslr@e69182a; good catch @rfk.
@perkinslr let me know if/when you add extra commits to your repository that you want included in this pull request. I could also help you bring the commits into your own repository, but I have to follow this PR closely anyway, so I don't mind.

These custom stdlib modules still aren't used in builds, right? Do you think the module_loader.py script's "init" command should look for these, and automatically copy them over the default PyPy stdlib files? I think that's within the realm of my skill.

These custom stdlib modules still aren't used in builds, right?
Do you think the module_loader.py script's "init" command should look for these, and automatically
copy them over the default PyPy stdlib files?

Good call @crantila, we should certainly do something to avoid having confusing duplicate copies of these modules.  The simplest option may be to have module_bundler.py ignore libs that we've got a custom version of, so you wind up with stdlib containing our custom files and modules containing all the other stuff that's import automatically bundled.

I've had a couple of goes at working my way through this but it's really a lot of code :-)
@crantila and/or @perkinslr, is there a subset of the modules here that are particularly important for you?  If so, let's work together on pulling those out into a smaller PR and then we can iterate on the remainder from there.

Sorry to cut in the discussion, I would need dummy_threading_semaphore.js so as to install a number of python libraries.

I don't actually need any of these. I'm interested in this project A Good Thing to Do, and because it's related to my own unittest work. unittest does rely on signals, but that's trivial enough that I already included it in my PR.
So we need dummy_threading_semaphore.js for @chfw, plus enough other stuff to warrant finding a way to copy things into when the distribution is being built. And what @perkinslr wants!

Hi! Sorry to resurrect this old thread.
Was any progress ever made on this, or #164, or some other PR to update standard libraries? If not, I think it would be great to at least submit some of this.
We could break this up and submit it in a bunch of different PRs, with only a few system libs each, if that would make reviewing it easier? I'd love to have libraries working!

(I came here because I spent the last few hours getting socket to work after noticing it didn't work, reading #92 (still open), and then assuming that this was never fixed. But it looks like this PR has a better implementation than the one I hacked together, so maybe we could just submit some of these?)
Thanks!


绘制柱状图，数据上千条以后，鼠标移到有些柱子上，就不显示tooltip了，但大部分会显示

One-line summary [问题简述]
绘制柱状图，数据上千条以后，鼠标移到有些柱子上，就不显示tooltip了，但大部分会显示
Version & Environment [版本及环境]

ECharts version [ECharts 版本]:
Browser version [浏览器类型和版本]:
OS Version [操作系统类型和版本]:

echarts版本:官网最新完整版
浏览器：chrome61.0
Os：win7
Expected behaviour [期望结果]
鼠标移到每一个柱子上都有tooltip显示
ECharts option [ECharts配置项]

option = {
animation:false,
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            xAxis: {
                data: [2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,523,524,525,526,527,528,529,530,531,532,533,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,612,613,614,616,617,618,619,620,621,622,623,626,627,628,629,630,631,632,633,634,635,636,637,638,641,642,644,645,646,647,649,650,651,652,653,654,656,657,659,662,664,665,666,667,670,671,674,675,676,678,679,681,683,684,687,692,693,696,700,705,707,708,709,711,712,715,716,717,720,721,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,742,743,744,745,747,748,750,751,753,756,759,760,761,762,764,765,766,767,769,773,774,775,776,777,778,780,781,783,785,786,787,788,793,794,796,797,798,799,801,802,803,804,805,806,807,808,811,812,813,814,815,818,819,821,824,826,829,830,832,833,834,837,838,841,842,844,847,848,857,859,862,863,864,865,866,868,871,872,876,878,879,882,884,885,887,888,889,891,895,896,898,900,903,904,909,912,913,920,926,929,930,937,938,940,941,942,945,947,950,954,955,959,960,962,965,966,967,969,970,971,977,978,980,982,983,985,991,993,998,999,1003,1007,1008,1017,1021,1022,1026,1027,1031,1038,1045,1052,1053,1057,1061,1066,1076,1078,1087,1088,1089,1090,1091,1092,1093,1100,1104,1110,1115,1116,1119,1121,1126,1129,1136,1150,1151,1155,1158,1172,1174,1178,1187,1198,1199,1203,1211,1221,1228,1229,1233,1243,1245,1254,1256,1259,1269,1270,1271,1273,1274,1280,1286,1288,1292,1301,1304,1308,1314,1318,1335,1337,1339,1349,1350,1356,1361,1362,1376,1401,1402,1412,1434,1437,1438,1441,1442,1444,1446,1470,1481,1483,1487,1491,1499,1512,1521,1527,1531,1536,1540,1542,1555,1560,1565,1574,1580,1585,1610,1630,1647,1668,1671,1688,1693,1695,1696,1697,1704,1717,1718,1740,1743,1758,1761,1764,1767,1790,1791,1797,1829,1830,1835,1849,1851,1862,1890,1891,1911,1918,1919,1936,1939,1942,1956,2014,2019,2031,2060,2099,2106,2126,2149,2193,2264,2342,2492,2509,2533,2559,2586,2601,2664,2726,2762,2848,2850,2855,2867,2888,2996,3019,3024,3136,3170,3215,3254,3272,3303,3325,3328,3359,3397,3524,3565,3577,3582,3636,3684,3755,3760,3789,3976,4008,4216],
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [3,3,4,3,5,3,3,4,2,4,3,5,2,5,6,4,10,10,7,13,11,11,7,5,4,9,7,15,18,19,22,10,14,11,14,19,13,21,18,10,15,18,20,15,19,23,29,13,27,32,19,29,28,26,21,28,30,24,30,36,23,26,37,36,27,40,38,41,44,41,34,32,26,37,31,42,50,35,41,39,37,37,32,48,41,45,50,65,49,46,62,47,55,64,58,48,75,49,50,46,55,58,56,56,49,58,66,62,68,70,62,61,81,56,68,69,72,93,95,72,91,110,101,75,110,87,94,105,93,124,114,122,112,137,116,112,143,130,125,140,160,147,158,171,158,159,181,182,180,195,188,180,212,220,209,223,220,234,226,224,243,242,254,295,248,249,277,334,295,306,317,294,353,345,339,341,347,369,409,426,412,456,398,443,412,481,476,464,484,500,508,474,520,569,550,598,573,579,556,559,600,630,591,614,678,620,733,694,724,742,774,780,732,772,787,723,749,817,794,874,817,849,836,939,886,861,823,895,861,936,887,890,881,870,871,889,833,939,939,876,910,975,995,961,990,910,937,939,965,964,882,916,927,937,909,918,939,905,910,901,887,897,870,840,893,800,751,857,817,763,772,760,779,752,710,661,661,720,721,638,687,630,608,589,582,562,548,545,521,497,506,475,474,420,447,434,418,447,406,394,380,381,352,329,306,269,313,273,259,291,242,243,225,261,202,206,186,186,215,169,176,172,157,154,158,137,135,144,122,145,112,109,99,104,107,101,123,95,92,81,95,64,77,86,73,71,63,68,45,69,49,56,74,49,64,58,52,56,64,53,58,45,34,52,48,47,35,40,35,25,48,32,50,29,31,23,21,41,30,21,31,37,25,21,31,26,21,25,23,24,22,22,22,14,22,18,20,12,17,13,9,11,23,16,16,17,18,16,17,11,18,22,14,11,12,19,10,22,7,16,15,15,12,23,9,13,11,13,9,10,9,12,12,19,15,13,13,13,9,13,10,13,12,7,8,7,12,9,13,11,8,14,8,12,6,10,7,7,9,9,7,6,7,5,5,7,10,6,5,5,4,6,5,6,3,5,13,9,9,11,10,8,3,7,4,3,7,5,7,1,5,3,5,5,3,4,3,10,4,10,4,4,7,7,9,7,10,4,6,6,4,4,10,2,5,4,5,3,2,4,4,2,2,4,4,5,4,3,5,1,2,4,2,3,3,2,6,2,3,8,3,4,2,4,4,1,3,3,3,2,1,3,2,2,3,3,8,2,3,5,4,4,4,3,6,2,1,1,1,1,1,2,1,3,2,2,3,1,6,1,7,3,1,2,4,2,3,1,1,1,2,2,1,3,3,2,2,3,1,2,2,1,2,1,1,3,3,1,1,2,2,2,2,1,1,4,3,5,2,1,1,1,2,4,4,1,2,3,2,3,1,2,2,3,2,1,3,2,2,1,1,1,1,2,5,1,1,2,1,5,1,2,3,2,1,3,1,1,2,1,1,2,4,3,2,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,3,1,2,2,1,1,3,1,4,2,1,1,1,2,2,2,2,1,6,1,1,1,1,2,1,4,3,1,3,2,1,1,2,1,3,2,4,1,1,1,1,1,1,1,1,2,1,2,1,1,2,2,2,1,2,1,4,2,2,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,3,2,3,1,1,1,2,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,2,1,2,1,1,1,2,1,2,1,1,1,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,2,1,3,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
            }]

}

Other comments [其他信息]

但是如果我用官网那个代码运行器去跑，就可以每一根柱子都有tooltip

没有 tooltip 时候是什么样的？能否截个图？

一张是有的，没有的那张鼠标截屏不显示了，当时鼠标在103左边一点

鼠标往左往右一点点都有 tooltip 对吧？

没，往左都没有了

咦，我这边没法复现，图表宽度多少？

果然专家，是图标宽度问题，我开始
出问题，现在改成1440，OK了，谢谢你这么详细的解答

1280 也不应该出现这样的情况的，那你后来找到原因了吗？

原因应该就是宽度不够了把，一根柱子一个像素都不够用了啊，把宽度搞多点，就够用了啊，我这么猜测的，具体的我也不知道了


Chore/refactor unit tests

PR Details

Missing space on media query;
Refactor unit tests;

Description
This PR will fix all unit tests and missing space on media queries.
Related Issue

#5
Motivation and Context

Most of the tests were failing due to previous refactors.
How Has This Been Tested
It was tested with yarn test

Types of changes

[x] Docs change / refactoring / dependency upgrade
[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Disclaimer
By sending us your contributions, you are agreeing that your contribution is made subject to the terms of our Contributor Ownership Statement

:tada: This PR is included in version 1.0.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket: