look into using traitlets for configuration and provenance data

traitlets.config looks reasonable for a system to configure classes using config files or command-line args, which may be better than using argparse.  We'd just need a json to FITS header function to write them to output files for provenance data:
http://traitlets.readthedocs.org/en/stable/config.html
Might  be worth making a prototype to see if it meets our needs.

json config file does not contain user command line options, which are also needed for data provenance I guess.
traitlets.config.loader.Config contains both,  command line options and configuration file options.
I propose a traitlets.config.loader.Config to FITS header function to write Class configuration to output files for provenance data.


Uncommented parallel boards config prevents building for ESP32C3 devices

Describe the bug
Using an ESP32-C3 (ESP32-C3-DevKitM-1 dev board) on a fresh copy of the code, the build fails to compile with the following error.
In file included from ../components/CalEPD/models/parallel/ED047TC1.cpp:1:
../components/CalEPD/include/parallel/ED047TC1.h:14:10: fatal error: epd_driver.h: No such file or directory
 #include "epd_driver.h"

To Reproduce
Write meaningful steps to reproduce the behavior:

Cloned the repo
Uncommented SRCS "demos/demo-epaper.cpp" in main/CMakeLists.txt.
In my case, I set display type to Gdeh042Z21 (so I also had to comment out the display.updateWindow line in demo-epaper but that is unrelated to the core of the issue)
Compile the SRC file demos/demo-epaper.cpp for target ESP32C3
Fails to build with the error above.

Expected behavior
Build Successfully
Desktop (please complete the following information):

OS: Windows 10

Additional context
I was able to resolve the issue by going into the components/CalEPD/CMakeLists.txt and commenting out the following lines:
#"epdParallel.cpp"
#"models/parallel/ED047TC1.cpp"

Interestingly, the comment just above that line says to uncomment those lines for parallel displays, but they were already uncommented. So I'm not sure which way was intended.
A few possible solutions:

Update to the readme docs to also configure CalEPD/CMakeLists.txt for ESP32C3 devices, and clean up the comments in that file.
Add comments to the parallel epaper lines in comments in CalEPD/CMakeLists.txt.
Perhaps there's a way to handle what gets compiled with something like #if CONFIG_IDF_TARGET_ESP32C3
Or, instead of creating exceptions for specific boards, it looks like there's also a CONFIG_IDF_TARGET_ARCH_RISCV that could be used to flag which lines compile.

I'm pretty new to the C / C++ world so it took me a sec to figure out what was going on. I appreciate your work and effort with this library.

Glad that it worked and you figured out how to fix it.

Perhaps there's a way to handle what gets compiled with something like #if CONFIG_IDF_TARGET_ESP32C3

Yes that’s an idea that is on my mind since long. I’m not on holiday’s but in a few days will be back maybe you can help me figure out how to organize this in CMakeFiles, for sure there is a smart way to exclude this.
Other possibility would be to add in Kconfig the driver option:
SPI or Parallel (EPDiy) and if you select SPI it will automatically exclude that files plus being a bit more consistent on the fact that SPI pins should be defined.
Let’s give it a round of though and maybe if you have some time you can make a pull request?
Make sure to give a good read to the esp-idf build system

Forgot that “fixes ID” closes the ticket automatically;)

Closing here since the issue is solved. Thanks for reporting.
Let's open a new one when we figure out what will be a more practical way to do this.


Add group sync

Add group sync deploy based on argocd

Add Azure Active Directory as provider for group sync. For make it work, needs to update credentialsSecret currently stored in Vault and upgrade the secret version after credential updated.

@NemoDang thanks for looking at Azure for group sync. I did enable Azure IDP on the staging cluster to test things out. Right now, we don't have many groups that we need to sync. Either its all of us in ACM SRE, or all the AOC SRE guys---two groups. Its possible to define these groups as simple manifests and use argocd to apply them.

Got it. Anyway group sync functions should works if we get correct auth token for Azure account. Azure GroupSync Manifests created in this PR but not included in the Kustomization. So It is ready for use if we want in future.
So besides this PR just want to confirm the task about the comments above.

Create 2 group manifests for ACM SRE and AOC SRE and use Argocd to maintain.
Config and test Azure Active Directory authenticate with the group created.

Please confirm. Thanks. @cdoan1

/ok-to-test


TextLink does not work in Next.js app routes

This is relatively clear when looking at the router it is using, the old page router that does not work in app routes. Causes https://nextjs.org/docs/messages/next-router-not-mounted
This isn't inherently a bug, but it could be clearer in docs that you cannot use solito/link at all in app routes, and that you must instead create custom link components using solito/navigation
Besides changing docs, remediation could be using next/compat/router to check if we're in app or pages router, but that probably means rewriting solito/link quite a bit and makes parts of solito/navigation redundant
reference
// not next/router here!
import { useRouter } from "next/compat/router";

export function useIsAppRouter() {
  // it returns the router instance if it is rendered in the pages router
  // returns null if it is in the app router
  const router = useRouter();
  return !router;
}

hmm weird, it actually should work…because it’s using next/link under the hood which I believe works with the app router, right?
https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating

here’s an example of Link working for me: https://github.com/nandorojo/solito/blob/master/develop/appdir/app/page.js

what is the code that broke for you?


Peering downloaded videos in background

Current behavior
The app is sharing the video that user is watching. When you close the video player, the sharing stops.
Expected behavior
The application must support sharing of user downloaded videos in the background. Peering should be done without overloading the user's resources
Stages of the task

[x] 1. Develop the concept of delayed video distribution
[x] 2. Approve the API for deferred video distribution Version 2
[ ] 3. Implement this API on peertube server Version 1
[ ] 4. Implement this API in Bastyon application
[ ] 5. Test and release in beta release

Still no progress on this


imagenet japanese class names

Hi,
Awesome repo
Could you please share the imagenet class names / prompt you used for zero shot evaluation?
I'm trying to build a good evaluation framework for clip (https://github.com/LAION-AI/CLIP_benchmark) and having these class names in other languages would be valuable
Thanks for your help!

Hi,
Thank you for your interest in our work.
We used the following file as the imagenet class names and converted them to "{}の写真" as prompts.
https://gist.github.com/PonDad/4dcb4b242b9358e524b4ddecbee385e9

@rom1504 Hi, I have an update for this. We released v0.2.0 and the imagenet japanese prompt templates were different from the previous one v0.1.0. The new prompt templates were cleaned up for Japanese lang based on the OpenAI 80 templates. For example, "a photo of the {}" and "a photo of a {}" are identical in Japanese.
https://github.com/rinnakk/japanese-clip/blob/master/src/japanese_clip/utils/imagenet_zeroshot_data.py#L1003


Add challenge lab for track-2, quest-5

qwiklabs link: https://www.cloudskillsboost.google/quests/136

@pragatipal thanks++


Update README.md

Adding this short Disclaimer makes it easier to see that there's a special ARM version of your Image. I myself started to create my own Image until i saw that there's already a branch for my rPi :D

Good one! thanks!


submit_awcy.py is out of date.

The scripts in daala git and in awcy have drifted apart. Merge then back together and submit an update to both projects.

Pending review:
https://review.xiph.org/697/


WPML and Cortex

Hello Guiseppe,
have you tried using Cortex's routing capabilities with a site that uses WPML for making it multilingual? I guess it won't really work out of the box. Do you think with route groups and and callback it would be manageable? Or in general how would you aproach a site with multiple languages? Multisites?

Hi @meszarosrob  once I get no response in a long time, I'm going to close this issue. If you still have some issues feel free to re-open it. Thanks.


chore: update capitalisation rules, handle missing rule in reference map, and support "sqruff" section in config

nit: can we mark these as feat: rather than chore: as they are more of a new feature than a chore e.g. updating a dependency etc.


Update generate to remove duplicated text

There was a duplicate sentence in the prompt. I removed it.

Is there something more you wanted done in this?

Thanks! Was already fixed in separate PR.


Draft: Automate bdi benchmark test

Changes
Adds tasks, flows and Robot keywords for BDI testing.
Guided tour:

First we need the data, so I converted David Glick's class into a Task:

https://github.com/SalesforceFoundation/Cumulus/pull/4243/files#diff-c6088a9879682c1af25379e1729b8258

The instructions for how to map to the Org are in mapping.yml:

https://github.com/SalesforceFoundation/Cumulus/pull/4243/files#diff-8266b04adf776303d15b501884c92485

Next we need to be able to run the actual test, so I created a Robot test:

https://github.com/SalesforceFoundation/Cumulus/blob/1ef8407fa38e83ffcae0b9093a6bd1621b048bed/robot/Cumulus/perf/BDITest.robot

The robot test needs a new keyword for doing BDI imports:

https://github.com/SalesforceFoundation/Cumulus/pull/4243/files#diff-85e4e256ee474963612d941be48b86e3R926
Sorry: my editor made a LOT of whitespace changes in that file (NPSP.py) and I didn't see what it had done until I got to github...

Finally I need to glue it together with flows and tasks:

https://github.com/SalesforceFoundation/Cumulus/pull/4243/files#diff-b0e88920e25a1ba7fb4868790bbe6be8

@prescod Can you resolve the merge conflicts?

@prescod Can you resolve the merge conflicts?

Actually, some of them seem to have nothing to do with my code, so I'm not sure how to resolve them. I was picking up from a branch that Glick did and those conflicts must bet between that branch and Master.
After I get some feedback on this PR I'll recreate it from scratch off of Master.

@prescod the conflicts don't look entirely unrelated to your changes and they look fairly straightforward to resolve. Here are some pointers:

The conflict in cumulusci.yml is because you added a new flow in the same location that @davidmreed did on master. Resolve it by including both new sections in whatever order you like.

Some of the conflicts in NPSP.py are because you made whitespace fixes to code that was also changed in master (this is one good reason to do whitespace cleanup in a separate PR that can be approved and merged without discussion so there's less time for conflicts). Resolve them by keeping the change from master (and reapplying the whitespace cleanup if you want).

There's also a conflict in NPSP.py similar to number 1, where you added the api_batchdata_load keyword in the same place Sravani added other new keywords. I'll post my other review comments shortly which are going to suggest that you don't need to add this keyword after all...

You are right that this PR introduced the conflicts. I forgot about the whitespace changes that I made by running black.
Regardless, it was never my intention to merge this PR because it is based off of a branch that does not pass tests, and I assume that that branch was never intended for merging to master either.

@prescod I did intend for feature/bdi-benchmark-test-data to be merged; that's why I made a PR for it.  It needs to be merged so that it's available to run on other branches where the Honeybees team has worked on changes to BDI.
It looks like the failing tests are just the prerelease builds which are still pretty flaky across all branches.

I did intend for feature/bdi-benchmark-test-data to be merged; that's why I made a PR for it.

Okay, thanks for the clarification. We'll need to coordinate what specifically should be merged then. Does the generate.py command line tool need to exist anymore? If so, we need to refactor to avoid the code duplication. Do they need an actual test_data.db file in the directories? etc.
I would advise against merging the parent branch until we've decided on these things.

@prescod Yeah, I like the direction you're going here. With this we don't need or want a non-task version of generate.py, nor do we want the db in the repo. I think it makes sense to close #4200, merge master into this PR, and make this PR target master.


Multiple button themes

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
Hi, team! In my application I have three sections: ads, services and properties. And each has their own elevated button, textfield, textbutton, etc.. themes. I think it would be good to have multiple themes for such things. I know I can create three different buttons, textfields or anything else for each section as well, or make three different projects and make them integrate to one. But it would be good if flutter itself makes it
Proposal
Can you provide multiple theming in themedata itself.
Say,  textTheme: const TextTheme(         displayLarge: TextStyle(fontFamily: 'Manrope', color: Colors.black), displayLarge1: TextStyle(fontFamily: 'Roboto', color: Colors.grey),       ),       elevatedButtonTheme: ElevatedButtonThemeData(         style: ElevatedButton.styleFrom(           foregroundColor: Colors.white,           backgroundColor: AppColors.mainColor,           elevation: 0,           shape: RoundedRectangleBorder(             borderRadius: BorderRadius.circular(10),           ),           padding: const EdgeInsets.symmetric(             vertical: 16,             horizontal: 50,           ),           textStyle: const TextStyle(             fontSize: 17,             color: Colors.white,             fontFamily: 'Manrope',             fontWeight: FontWeight.bold,           ),         ), elevatedButtonTheme1: ElevatedButtonThemeData(         style: ElevatedButton.styleFrom(           foregroundColor: Colors.red,           backgroundColor: AppColors.mainColor,           elevation: 2,           shape: RoundedRectangleBorder(             borderRadius: BorderRadius.circular(20),           ),           padding: const EdgeInsets.symmetric(             vertical: 16,             horizontal: 50,           ),           textStyle: const TextStyle(             fontSize: 22,             color: Colors.green,             fontFamily: 'Roboto',             fontWeight: FontWeight.bold,           ),         ),       ),
And use them further like
ElevatedButton(style: Theme.of(context).elevatedButtonTheme.style1, onPressed() {}, child: Text('Something'))

@HansMuller think about I have 50 buttons in each section. I should wrap every time? Maybe for small apps it can be solution. But for big apps it would be difficult. And in every time when I want to change one section's design I have to change in all places

If the buttons all have a common ancestor, then you only need to put the  button theme above the common ancestor (once).

Hi @tologonkudaiberdiuulu thanks for bringing this up! We're not likely to do this, so I am going to close this issue. Support for additional features like this can be provided using TheemExtensions: https://api.flutter.dev/flutter/material/ThemeExtension-class.html


Expose parquet reader settings using normal DataFusion ConfigOptions

Which issue does this PR close?
Closes https://github.com/apache/arrow-datafusion/issues/3821
Rationale for this change
I want to test out the parquet filter pushdown on real datasets using datafusion-cli so we can enable it by default -- https://github.com/apache/arrow-datafusion/issues/3463
I also want an easy way to disable the feature if users find they are getting wrong results
I want to be able to do so via datafusion-cli like:
$ target/debug/datafusion-cli
DataFusion CLI v13.0.0
❯ show all;
+-------------------------------------------------+---------+
| name                                            | setting |
+-------------------------------------------------+---------+
| datafusion.execution.time_zone                  | UTC     |
| datafusion.execution.parquet.pushdown_filters   | false   | <---- Note the option is now visible here
| datafusion.explain.physical_plan_only           | false   |
| datafusion.execution.coalesce_target_batch_size | 4096    |
| datafusion.execution.batch_size                 | 8192    |
| datafusion.execution.coalesce_batches           | true    |
| datafusion.explain.logical_plan_only            | false   |
| datafusion.optimizer.skip_failed_rules          | true    |
| datafusion.optimizer.filter_null_join_keys      | false   |
+-------------------------------------------------+---------+

And then set them like:
$ DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS=true target/debug/datafusion-cli
DataFusion CLI v13.0.0
❯ show all;
+-------------------------------------------------+---------+
| name                                            | setting |
+-------------------------------------------------+---------+
| datafusion.execution.batch_size                 | 8192    |
| datafusion.execution.coalesce_batches           | true    |
| datafusion.explain.logical_plan_only            | false   |
| datafusion.optimizer.filter_null_join_keys      | false   |
| datafusion.execution.parquet.enable_page_index  | false   |
| datafusion.optimizer.skip_failed_rules          | true    |
| datafusion.explain.physical_plan_only           | false   |
| datafusion.execution.time_zone                  | UTC     |
| datafusion.execution.coalesce_target_batch_size | 4096    |
| datafusion.execution.parquet.pushdown_filters   | true    | <---- Note the option is set to true here!!!!
| datafusion.execution.parquet.reorder_filters    | false   |
+-------------------------------------------------+---------+

What changes are included in this PR?

Add three new config settings to ConfigOptions
Thread ConfigOptions down into the FileScanConfig
Remove ParquetScanOptions in favor of these new configs (will comment on the rationale here)

Are there any user-facing changes?
YES: If you used ParquetScanOptions (which I know @thinkharderdev  does) the API has changed.
Also, the settings are now visible in the user level documentation

Nice! I will review this this evening or tomorrow depending on how the day goes

I plan to merge this after it passes CI to keep the process going. I really like the ConfigOptions structure


[BUG] FPS drops in certain worlds

Describe the bug
Losing frames on both my end and players; performance is significantly impacted and tokens appear to skip around in movement. Issue has been identified using Find the Culprit and just general testing to happen while ony Simple Calendar is enabled. In one world, there are no issues and I stick to around ~60 fps; in another world, it tanks down to 30 and gets the performance issues; in my third game, it goes to around 45-50 FPS. I have not tested with others to see how performance is impacted in that one. In all worlds I have the same settings, with the only change from default being that I am using the Golarion calendar and I have disabled real time progression of the world clock.
I am unable to determine when this began as the game that has the ~30 fps issues had not been played for 3 weeks.
Foundry Information

Foundry Version: v9 build 249
Game System: PF2e 3.4.4
Simple Calendar Configuration: the only change from default being that I am using the Golarion calendar and I have disabled real time progression of the world clock.

Additional context
Add any other context about the problem here.

So you have a large number of notes in these world's?
Or another module that is updating the world time frequently (for condition duration tracking or something like that)?
I am thinking it might be the first one and there could be a slow down with the check for which notes players want to be reminded of. This should be addressed in the next version.

Sorry for the long delay on response.  there were a alrge number of notes, though most weren't visible to players. I cleared some of the extraneous ones, and performance was the same. I have tested it with and without about-time active, which also did not impact performance. Fortunately I'm not too pressed about disabling Simple Calendar for however long it takes for an update to come out, this game is on a pretty small timeframe.

With the newer version of Simple Calendar release I would be curious to know if the FPS issues still persist or not?

Going to close this as I have not heard back if the issue is still persisting or not. If it is please re-open with more details, thanks!


Refactor mxnet-scala code/tests/examples/docs to use "org.apache.mxnet" instead of "ml.dmlc.mxnet".

Description
Currently, MXNet-Scala library uses "ml.dmlc.mxnet" packages. As mxnet is under apache now,  mxnet-scala code/tests/example and docs should use "org.apache.mxnet" instead of "ml.dmlc.mxnet".
This work will change the way to import modules when using mxnet-scala package.
Old way:
scala> import ml.dmlc.mxnet._
   import ml.dmlc.mxnet._
scala> val arr = NDArray.ones(2, 3)
   arr: ml.dmlc.mxnet.NDArray = ml.dmlc.mxnet.NDArray@f5e74790

New way:
scala> import org.apache.mxnet._
   import org.apache.mxnet._

scala> val arr = NDArray.ones(2, 3)
   arr: org.apache.mxnet.NDArray = org.apache.mxnet.NDArray@f5e74790

I will be creating PR soon to address this.

Have you still faced the same issue?

This is all fixed now.


Add an option to remove dark/light mode button

Context
I designed my Sphinx site to revolve around the Light Theme and do not want users to have access to Dark mode as it simply does not work for the custom directives I have made.
Proposal
Can there be an html theme option, similar to something like use_download_button, perhaps "use_theme_button" with the default being light?
Tasks and updates
No response

Hey @Josh-Hiz -- how did you remove the Dark theme option?
Was it just the following?
https://github.com/pydata/pydata-sphinx-theme/issues/458#issuecomment-1266545030
# conf.py

html_theme_options = {
    "navbar_end": ["navbar-icon-links"],
}

I had tried that but it didn't actually work for some reason, even though the book theme is based on Pydata not everything from Pydata can be applied to the book theme.

This is an important issue for my group as well, as darkmode makes our website nearly incomprehensible.  We will need to explore other themes if dark mode cannot be removed :(

I also would like to be able to remove or disable dark mode entirely

This issue would be a long-term fix for this:

https://github.com/executablebooks/sphinx-book-theme/issues/797

In the meantime, you could make this button disappear with the following custom CSS:
button.theme-switch-button {
    display: none;
}

This is because the theme switch button has the following HTML and the rule above would select the top-most element and remove it:
<button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip" data-bs-original-title="light/dark">

  </button>


Q: config client can wait for config server

Is it possible to have the ConfigClient wait until a ConfigService is registered? It is a reasonable extension, especially for our deployment scenario.

See PR here: #90


⚠ Secret Website 3 has degraded performance

In 1865ff7, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 4450 ms

Resolved: Secret Website 3 performance has improved in 9e854c5.


Code-server

Can it be used on code-server?

My code-sever version is 1.72 and the extension cannot be found in Marketplace. I downloaded the vsix file and it also cannot be installed because the extension only supports version 1.74

Same

Code-server is using https://open-vsx.org/. I think just uploading a copy to https://open-vsx.org/ is enough.

We will validate the extension on code-server in the future. Once it's confirmed to be working fine, we will release it on Open VSX marketplace.

me too
Unable to install extension 'ktiays.aicursor' as it is not compatible with VS Code '1.74.2'.

The extension has been published on open-vsx.org, and the minimum supported version of VSCode has been lowered to 1.74.0. You can download the latest version of the extension to use it on a lower version of VSCode.


Few questions

I'm new to Actions, but the Dockerfile is not very cachable and it seems odd to me to install octodns via git.
Is it worth me proposing to change it or is your workflow dependent on the script doing everything in this way

Hi @thattommyhall, thank you for asking!
I don't recall exactly how I arrived at this method, but 1) I do recall it had to do with performance and 2) I'm certain it does not need to stay this way.
(I believe installing dependencies took much longer than downloading a container image that includes them.)
If you'd like to propose changes, please do.
For what it's worth the next updates I'd like to make to this project are to bring versions current and to take advantage of any new (or new-to-me) package and container registry features that will simplify the action or make it faster.

I'd like to share some context, related to this question:

Is it worth me proposing to change it or is your workflow dependent on the script doing everything in this way

Running octodns-sync in a container was faster than installing dependencies at runtime. Another benefit, I think, of the container is a user can run it locally.
To keep the user's octodns configuration in their .yaml as much as possible, I set the container up to provide all the dependencies octodns may expect.
As a result of those ☝ the workflow syntax is simple and running the octodns-sync container locally shares similar syntax as if octodns is installed directly. That is, this workflow step:
      - name: Publish
        uses: solvaholic/octodns-sync@v2
        with:
          config_path: public.yaml
          doit: --doit

Should work the same as this Docker command:
docker run --rm -v "$(realpath .)":/config --env-file .env \
  solvaholic/octodns-sync:2 /config/public.yaml --doit

Should work the same as this octodns-sync command:
octodns-sync --config-file=public.yaml --doit

Oh wow!

I'm new to Actions, but the Dockerfile is not very cachable and it seems odd to me to install octodns via git.

Yeah, I see what you mean now. I thought the Action @v2 was pulling a Docker image rather than building one.
When I test with @v2 it builds the image, when I test with @v2.0.0 or with @0c16d1d it pulls an image from Docker hub.
That value appears not to be used how I thought: The tags v2 and v2.0.0 both point to the same commit, so I thought the Action worked the same either way. I have more things to learn.

Ugh. Ok. I'd left a branch named "v2" in solvaholic/octodns-sync. I deleted that and now the Action pulls the image as intended.
Now what I said in https://github.com/solvaholic/octodns-sync/issues/12#issuecomment-705559209 should be true when using the @v2 Action.
@thattommyhall I added your bug label back - Thank you for letting me know about this!
I'll close this issue, but please re-open it if you'd like to discuss.


Add support for block comment rollback commands on SQL changesets

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

Description
Add support for block comment rollback commands on SQL changesets as in thefollowing example:
				/* liquibase rollback
				 delete from table2;
				 drop table table2;
				*/

Currently the only way to do a rollback like this one is by repeating the rollback comment tag:
-- rollback delete from table2;
-- rollback drop table table2;

Actual Behavior
Block comments are not supported.
Additional Context
It's a new  functionalitty thus nothing should be broken by it.
Things to remember
Documentation needs to be updated to include this new rollback option.
Fast Track PR Acceptance Checklist:

[x] Build is successful and all new and existing tests pass
[x] Added Unit Test(s)
[ ] Added Integration Test(s)
[ ] Documentation Updated

Have added the multi line comment type rollback support.
This is the most annoying reason one has to hear while adapting liquibase.
Hence have added support. This make it complete adaptable.

Thanks @krishnaenugandula  for creating this enhancement request.
Here’s what happens next:
A member of the Liquibase team will take a look at your contribution and may suggest
changes, additional tests, or provide other feedback. The PR will be prioritized
according to our development and testing capacity.
We’ll let you know when it’s ready to move to the next step or if any changes are needed.

Closed #339 and #695 in behalf of this one.
@krishnaenugandula thanks foir the contribution! Do you think you would be able to fix the conflicts that this PR has right now?
Also, maybe "--multiline-rollback" can be replaced to something more on liquibase standards, like "liquibase rollback" or something like that? What do you think?

Once PR is fully approved I can write the documentation changes to reflect it.

@XDelphiGrl branch updated and tests reviewed.

This functionality doesn't appear in any official Liquibase documentation, but appears to work from my testing - can/should this be added to the docs?

@emesar Thanks for the heads up. We've created an internal ticket to document this functionality.
[DOC-INTERNAL] https://datical.atlassian.net/browse/PD-4463


document is not defined !!

When trying to render your component. It's showing the error in odometer js file that document is not defined !!

Could you provide more info? How you integrate it?

I've upgraded library today. Please try with new version

Server-side rendering showing the error. I will test it again. I will keep the update the error status.

@rakibulalam Server side rendering is not supported. Odometer.js is front-end library

Thanks, I understand and need to skip the server rendering.


useMachine causes render error

Thats the issue. The same amount of hooks must execute on every render. The current code run useMachine only after you have a ballot.
An alternative approach that you could take is the following:
export default function Papeleta() {
  const location = useLocation()
  const [ballot, setBallot] = useState<BallotConfig | null>(null)
  const params = useParams<{ id: string; ballotType: string }>()

  useEffect(() => {
    // load ballot from s3
  }, [])

  if (!ballot) {
    return
Loading...

  }

  const title =
    params.ballotType === "legislativa"
      ? `Papeleta ${params.ballotType} ${precinctMap[params.id]} ${params.id}`
      : `Papeleta ${params.ballotType} ${params.id || ""}`

  const [state, send] = useMachine(PracticeMachine, {
    context: {
      ballotType: ballot.type,
    },
  })

  return <InteractiveBallot ballot={ballot} />
}```

Once the promise has fulfilled, individual ballot can start the machine, assign the title, etc.


Add a way to sort the qido results on the server

Currently the query results are not sorted in any particular order. Add a mechanism on the server to control how the results should be sorted.

This has been implemented by adding a new class "ObjectArchieveSortingStrategy"
The default implementation will sort using the following algorithm:

For Studies Query: Studies will be sorted by the sequence they got stored at, newer studies stored returned first

For Series Query: Series will be sorted by the Series Number. e.g. 1,2,3...

For Instances Query: Instances will sorted by the Instance Number. e.g. 123..

You can change the default sorting strategy and provide your own by:

Implementing the "ISortingStrategy" interface or inheriting from the "ObjectArchieveSortingStrategy" class.

Inherit from "SortingStrategyFactory" or implement the interface "ISortingStrategyFactory" to create the new strategy class.

Plug your new Factory into the framework by updating this line in the DicomCloudBuilder:

        For<ISortingStrategyFactory> ( ).Use <<SortingStrategyFactory> ( ) ;


How to install?

Hey,friends!
How do I install and use p4rt-ovs on ubuntu?
I am new to p4rt-ovs and p4c-ubpf,i don't know how to install it,my ubuntu version is 18.04.

When I execute ./configure I get the following error：
checking for struct tcf_t.firstuse... yes
checking whether dpdk is enabled... yes
checking for rte_config.h... no
configure: error: unable to find rte_config.h in
it's say unable to find rte_config.h

https://github.com/p4lang/p4c/blob/main/backends/ubpf/tests/environment/setup-switch.sh
The setup-switch.sh file here has some configuration about ovs
https://github.com/Orange-OpenSource/p4rt-ovs/blob/master/Documentation/intro/install/dpdk.rst
And there are some tips to install OVS

Ok. Was the DPDK installation successful? Did you pass --with-dpdk=... when calling ./configure?

At the beginning, I encountered an error saying that rte_config.h could not be found. But this file exists. It is in the x86_64-native-linuxapp-gcc folder, but it means that it cannot be found. Later, I copied the file to the dpdk19.11 directory and the p4rt-ovs directory, and it can be executed. , but I am a little worried that although it is successful now, there will be other problems when using it later. do you have any good advice?

@pchaigno Do you know how does p4rt-ovs connect to Mininet? I want to use it in Mininet to replace the ovs.


Listeners

When attempting to do something such as
        $page->_client->on("Security.certificateError", function ($event) use ($page) {
            $page->_client->send('Security.handleCertificateError', [
                "eventId" => $event->eventId,
                "action"  => "continue"
            ]);
        });

I receive the following error:
Nesk \ Rialto \ Exceptions \ Node \ FatalException
"listener" argument must be a function

Is there a way to implement listeners using this bridge, or should I stick with writing a node script and then just referencing that from within my PHP scripts?

The event callback must be a JS function because it will be executed in the browser context, so you must use the JsFunction class.
Tell me if you encounter issues with it or if you struggle to understand how to use it.

Thank you for the quick reply.
I'm not certain how I would implement the above example using the JsFunction class as I am referencing the "$page" PHP object, is there a way to reference the "page" object in a JavaScript function?
Would you be able to provide an example using my code above? Basically I'm trying to get chrome to ignore all invalid SSL certificates and just load the page anyway. This code is what works in pure node:
await page._client.on('Security.certificateError', event => {
    page._client.send('Security.handleCertificateError', {
      eventId: event.eventId,
      action: 'continue' // ignore error and continue request
    });
  });

Ooh, I've never thought about using resources inside JS functions! Actually, I'm not sure this is feasible, but I've opened an issue on Rialto's repository to remember myself to dig into this.
Sorry, but for the moment I think you will have to create your own JS script and run it with PHP. 😞

Not a problem at all; I actually already have an entirely functional Node.js version of my script. :) I was already calling it in a Laravel application, but was hoping to be able to keep more of the logic in one location rather than having them broken out.
Thanks again!

Yeah, I understand, the goal of this package is clearly to keep the logic in the same files. I hope I will be able to support resources in JS functions, I will notify you once it will be ready. 🙂

Good news @john-f-chamberlain: now you can pass Node resources in JS functions! 😉


bool disable_per_channel: per-channel vs. per-layer quantization

I want to switch the quantization scheme to either per-tensor or per-channel quantization e.g. disable_per_channel set as true (no quantization per-channel) within from quantization_config.h
  // When set to true, quantization will be done per-tensor. Currently, this
  // option is only valid when the quantization parameters need to be created by
  // scanning the constant content (post-training quantization or QAT without
  // weight FakeQuant).
  bool disable_per_channel = false;

Do you have any example to switch between either per-channel or per-layer quantization with Python API or Command Line Tool call?
Is it possible somehow to use mlir_quantize function, if so, how?

@peter197321 Please take a look at this doc which goes through per tensor quantization as well as per layer quantization.


naming & tagging convention template - Naming convention inconsistencies

First of all thanks a lot for providing the Naming & Tagging standard template!
While studying the template, I noticed the following naming inconsistencies:

In the "intro and components" sheet, virtual machines are prefixed with vm-, while in the "Naming convention" sheet the format and example is missing the dash (vm<policy name or appname><###> / vmsharepoint001)

Also the question arises whether the VM number (<###>) wasn't supposed to be separated by a dash as with most other assets.

In the "Naming convention" sheet under Virtual Machines the format and the example for the entries of the  Load Balancer  and  NIC do not match (dash)

lb-<app name or role><Environment><###> / lb-sharepoint-dev-001
nic-<##>-<vmname>-<subscription><###> / nic-02-vmhadoop1-prod-001

General question:
In the "intro and components" sheet most resource name prefixes include a dash (-) as the last character, while some are lacking one (e.g. stor, ssimp, dls, dla and pbiemb). Do they use a different schema intentionally and if yes, is there a technical limitation or similar to it, which could be noted as a comment in the sheet? The same question goes for the <Environment> separation of those assets in the "Naming convention" sheet.
Thanks!

I'm very sorry, I opened this issue in the wrong repository. Will close it here and re-open one in https://github.com/microsoft/CloudAdoptionFramework/ instead.


chore(deps): bump https://github.com/zeebe-io/zeebe-cluster-helm from 0.0.34 to 0.0.35

Update zeebe-io/zeebe-cluster-helm from 0.0.34 to 0.0.35
Command run was jx step create pr chart --name zeebe-cluster --version 0.0.35 --repo https://github.com/zeebe-io/zeebe-full-helm.git

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: salaboy
If they are not already assigned, you can assign the PR to them by writing /assign @salaboy in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Wrong result with multiple feature link(new individual transform css prop)

Link like https://caniuse.com/flexbox,css-grid,webp works fine, all 3 feature are shown ok
Link like https://caniuse.com/mdn-css_properties_translate,mdn-css_properties_rotate,mdn-css_properties_scale works wrong, scale are shown like translate, but link to mdn or link in # is right

Upd. Link https://caniuse.com/flexbox,css-grid,webp is work wrong too. Look at description of first WebP feauture, look at browser table, hover to browser table(its updated after hover)


Linking with LLD failed for basic Histogram example

Trying out ggplotd in a dub project by running the histograms example. This results in the following error below:
(base) PS C:\Users\tasty\Devel\think_stats_with_D> dub build --compiler=ldc2 ; ./survey
Performing "debug" build using ldc2 for x86_64.
derelict-util 2.1.0: target for configuration "library" is up to date.
derelict-ft 1.0.2: target for configuration "library" is up to date.
cairod 0.0.1-alpha.3+1.10.2: target for configuration "static-custom-windows" is up to date.
dstats 1.0.5: target for configuration "library" is up to date.
dunit 1.0.15: target for configuration "library" is up to date.
painlesstraits 0.3.0: target for configuration "unittest" is up to date.
ggplotd 1.2.0: target for configuration "default" is up to date.
mir-core 1.0.2: target for configuration "library" is up to date.
mir-algorithm 3.7.2: target for configuration "default" is up to date.
mir-linux-kernel 1.0.1: target for configuration "library" is up to date.
mir-random 2.2.8: target for configuration "extended" is up to date.
survey ~master: building configuration "application"...
..\..\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d(398,37): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
..\..\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d(398,44): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
..\..\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d(398,51): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
lld-link: error: undefined symbol: _D7ggplotd6colour11namedColourFNaNbNixAyaZS3std8typecons__T8NullableTSQBb12experimental5color3rgb__T3RGBVAyaa3_726762TdVbi0VEQDeQCdQBs10colorspace13RGBColorSpacei0ZQCmZQEf
>>> referenced by C:\Users\tasty\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d:396
>>>               .dub\obj\survey.obj:(_D7ggplotd5guide21GuideToColourFunction__T6opCallTAyaZQmMxFxAyabZS3std12experimental5color3rgb__T3RGBVQCaa4_72676261TdVbi0VEQCgQCfQBu10colorspace13RGBColorSpacei0ZQCo)
>>> referenced by C:\Users\tasty\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d:153
>>>               .dub\obj\survey.obj:(_D7ggplotd5guide__T10GuideStoreVAyaa6_636f6c6f7572ZQBg__T3putTQBeZQjMFxAyadZv)
Error: linking with LLD failed
ldc2 failed with exit code 1.

I should mention that in order to build a dub project I had to put cairo.lib directly into the root of the dub project and update dub.json accordingly. I also have c:\gtk3\bin and c:\gtk3\lib both added to PATH.

Does it work correctly with dmd?

If I use dmd, it fails to recognize a valid cairo.lib file.
(base) PS C:\Users\tasty\Devel\think_stats_with_D> dub build --compiler=dmd ; ./survey
Performing "debug" build using dmd for x86.
derelict-util 2.1.0: target for configuration "library" is up to date.
derelict-ft 1.0.2: target for configuration "library" is up to date.
cairod 0.0.1-alpha.3+1.10.2: target for configuration "static-custom-windows" is up to date.
dstats 1.0.5: target for configuration "library" is up to date.
dunit 1.0.15: target for configuration "library" is up to date.
painlesstraits 0.3.0: target for configuration "unittest" is up to date.
ggplotd 1.2.0: target for configuration "default" is up to date.
mir-core 1.0.2: target for configuration "library" is up to date.
mir-algorithm 3.7.2: target for configuration "default" is up to date.
mir-linux-kernel 1.0.1: target for configuration "library" is up to date.
mir-random 2.2.8: target for configuration "extended" is up to date.
survey ~master: building configuration "application"...
..\..\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d(398,37): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
..\..\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d(398,44): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
..\..\AppData\Local\dub\packages\ggplotd-1.2.0\ggplotd\source\ggplotd\guide.d(398,51): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
Linking...
OPTLINK (R) for Win32  Release 8.00.17
Copyright (C) Digital Mars 1989-2013  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
cairo.lib
 Error 43: Not a Valid Library File
Error: linker exited with status 1
dmd failed with exit code 1.

I replaced the original 64 bit cairo.lib which was working with ldc with 32 bit for dmd.

Ok, I installed Linux and tried to compile the project again with dmd. It still fails.
dub build --compiler=dmd
Performing "debug" build using dmd for x86_64.
derelict-util 2.1.0: building configuration "library"...
derelict-ft 1.0.2: building configuration "library"...
x11 1.0.21: building configuration "library"...
cairod 0.0.1-alpha.3+1.10.2: building configuration "static-custom-posix"...
dstats 1.0.5: building configuration "library"...
dunit 1.0.15: building configuration "library"...
painlesstraits 0.3.0: building configuration "unittest"...
ggplotd 1.2.0: building configuration "default"...
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/ggplotd.d(142,15): Deprecation: function std.typecons.Nullable!(Context delegate(Context, const(GuideToDoubleFunction), const(GuideToDoubleFunction), const(GuideToColourFunction), const(GuideToDoubleFunction))).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(94,16): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(95,16): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(98,34): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(99,34): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(105,16): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(106,16): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(109,34): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/scale.d(110,34): Deprecation: function std.typecons.Nullable!(double delegate(double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d(398,37): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d(398,44): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d(398,51): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/ggplotd.d(494,20): Deprecation: function std.typecons.Nullable!(Context delegate(Context, const(Bounds), double, double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/ggplotd.d(505,20): Deprecation: function std.typecons.Nullable!(RGB!("rgba", double, false, cast(RGBColorSpace)0) delegate(double, double, double)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/ggplotd.d(514,20): Deprecation: function std.typecons.Nullable!(Margins).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
/usr/include/dlang/dmd/std/traits.d(3688,61): Deprecation: function std.typecons.Nullable!(Margins).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
/usr/include/dlang/dmd/std/traits.d(3689,61): Deprecation: function std.typecons.Nullable!(Margins).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/theme.d(35,18): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/theme.d(35,25): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/theme.d(35,32): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
mir-core 1.0.2: building configuration "library"...
mir-algorithm 3.7.2: building configuration "default"...
mir-linux-kernel 1.0.1: building configuration "library"...
mir-random 2.2.8: building configuration "extended"...
survey ~master: building configuration "application"...
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d(398,37): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d(398,44): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d(398,51): Deprecation: function std.typecons.Nullable!(RGB!("rgb", double, false, cast(RGBColorSpace)0)).Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
Linking...
/usr/bin/ld: .dub/build/application-debug-linux.posix-x86_64-dmd_2089-40219652AA29382A7D6938B0469E80F5/survey.o: in function `_D7ggplotd5guide21GuideToColourFunction__T6opCallTAyaZQmMxFxAyabZS3std12experimental5color3rgb__T3RGBVQCaa4_72676261TdVbi0VEQCgQCfQBu10colorspace13RGBColorSpacei0ZQCo':
/home/tastyminerals/dev/github/think_stats_with_D/../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d:396: undefined reference to `_D7ggplotd6colour11namedColourFNaNbNixAyaZS3std8typecons__T8NullableTSQBb12experimental5color3rgb__T3RGBVAyaa3_726762TdVbi0VEQDeQCdQBs10colorspace13RGBColorSpacei0ZQCmZQEf'
/usr/bin/ld: .dub/build/application-debug-linux.posix-x86_64-dmd_2089-40219652AA29382A7D6938B0469E80F5/survey.o: in function `_D7ggplotd5guide__T10GuideStoreVAyaa6_636f6c6f7572ZQBg__T3putTQBeZQjMFxAyadZv':
/home/tastyminerals/dev/github/think_stats_with_D/../../../.dub/packages/ggplotd-1.2.0/ggplotd/source/ggplotd/guide.d:153: undefined reference to `_D7ggplotd6colour11namedColourFNaNbNixAyaZS3std8typecons__T8NullableTSQBb12experimental5color3rgb__T3RGBVAyaa3_726762TdVbi0VEQDeQCdQBs10colorspace13RGBColorSpacei0ZQCmZQEf'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
dmd failed with exit code 1.

I created a small demo project which contains only the plotting example and only one ggplotd dependency. It compiles both with dmd and ldc2.
I added mir dependency to dub.json to a small demo project. It all compiles now :confused:
No clue what could have messed up the compilation in my original project but I guess this can be closed for now.

Here is the code that crashes the build.
auto xs = iota(0,50,1).map!((x) => uniform(0.0,5)+uniform(0.0,5)).array;
auto cols = "a".repeat(25).chain("b".repeat(25));
auto gg = xs.zip(cols)
    .map!((a) => aes!("x", "colour", "fill")(a[0], a[1], 0.45))
    .geomHist; // <-- crashes compilation
    /* .putIn(GGPlotD());  */

I don't see mir.ndslice being used in that example code. Am I missing something?

It is not used indeed. Here is how I wanted to use it:
script1.d // reads dataset.txt and converts it into 2D ndslice array.
script2.d // selects part of 2D ndslice array and convert it into 1D Tuple!(real, string[]).
plotme.d // gets Tuple!(real, string[]) and attempts to plot it.

Whenever I have import mir.ndslice in one of my project scripts I get Error: linker exited with status 1 and it happens right after I uncomment .geomHist.


fix: linter errors

@shuplenkov hm, it seems like we use different linters? Take a look at the build log.


CSS @import not behaving as documented

Update: this is still an issue with 3.0.0. I've updated the text below and added a link to sources that can be used to reproduce the issue.

The Dart equivalent of the Dev Guide Component Styles example, doesn't behave like its TS counterpart when it comes to CSS @imports.
Steps to reproduce and a minimal demo of the problem
Get the component-styles example project. Relevant files are:

lib/hero_details_componet.dart:

@Component(
    selector: 'hero-details',
    template: ...,
    styleUrls: const ['hero_details_component.css'],   /*<<<<<<<*/
    directives: const [HeroTeamComponent])
class HeroDetailsComponent {
  @Input() Hero hero;
}

lib/hero_details_component.css (excerpt):

/* Causes an ERROR:*/ @import 'hero_details_box.css';  /*<<<<<<<*/
:host {
  display: block;
  border: 1px solid black;
}
...

lib/hero_details_box.css

:host { padding: 10px; }
h2::after { content: " (from imported CSS)"; }

Current behavior
The @import line in lib/hero_details_component.css is currently commented out. If you uncomment the line (and remove the space between the @ and the import tokens), and do a pub serve or pub build then you'll get an error:
Building component_styles...
Build error:
Transform StylesheetCompiler on component_styles|lib/hero_details_component.css threw error: Url component_styles|lib/hero_details_component.css.dart is not a valid asset: url

Replacing the @import argument with any relative path results in the same error.
If you copy lib/hero_details_box.css into the project's web folder and change the @import argument to an absolute path like:

@import '/hero_details_box.css';

then the normal CSS selectors work, but :host styling doesn't.
Expected/desired behavior
According to the Dev Guide Component Styles, CSS @imports subsection:

We can also import CSS files into our CSS files by using the standard CSS @import rule.
In this case the URL is relative to the CSS file into which we are importing.

Other information
This was tested with beta.17. Possibly related (but different) issues:

CSS @import with root path "/" bug https://github.com/angular/angular/issues/6449
Transformer does not work well with web urls https://github.com/angular/angular/issues/2607
styleUrls does not work with root path "/" https://github.com/angular/angular/issues/4974

Migrated from https://github.com/angular/angular/issues/8518.

cc @kwalrath

No need for @import in Dart. Dart has package resolution.
styleUrls: const ['package:somepackage/hero_details_component.css']

I think that there might have been a misunderstanding. You wrote:

styleUrls: const ['package:somepackage/hero_details_component.css']

This issue is not about the interpretation of URLs to style files as they appear in Dart code in, say, styleUrls lists.
This issue is about how the CSS @import rule URL argument gets interpreted. There seems to be an issue with the StylesheetCompiler transformer. @import is a CSS feature which is independent of TS or Dart.

@ferhatb @chalin This issue is closed by mistake.
Please, see the problem context from the documentation in Component Styles.

Reopening, since this is about CSS imports, not Dart imports.

@matanlurey, @leonsenft et all: this still doesn't work under 3.0.0. I've updated the issue text above and added a link to sources that can be used to reproduce the issue. Let me know what other info you might need.

Thanks @chalin, it looks like you've provided plenty of info. I'll look into this.

If you copy lib/hero_details_box.css into the project's web folder and change the @import argument to an absolute path like:
@import '/hero_details_box.css';
then the normal CSS selectors work, but :host styling doesn't.

The compiler ignores @import statements for absolute URLs, so this effectively bypasses Angular's built-in @import support. The @import statement remains in the final CSS and ends up being handled by the browser's implementation. This is why it appears to work if the CSS file is moved to web/, because it's now at the location the browser requests. This is also why :host styling in these files ceases to work, because it's a feature shimmed by the compiler.
I think this might actually be intentional for use under web/ where resources aren't typically shimmed (since they're not associated with a component).

I'm still getting an error when I try this over the original example using Angular 3.1.0:
component-styles > pub build
Loading source assets...
Loading angular2/transform/codegen and dart_to_js_script_rewriter transformers...
Loading angular2 transformers... (6.4s)
Building component_styles...
Build error:
Transform StylesheetCompiler on component_styles|lib/src/hero_details_component.css threw error: Url component_styles|lib/src/hero_details_component.css.dart is not a valid asset: url
package:angular2/src/compiler/output/path_util.dart 42:5                    _AssetUrl.parse
package:angular2/src/compiler/output/path_util.dart 14:29                   getImportModulePath
package:angular2/src/compiler/output/dart_emitter.dart 49:27                DartEmitter.emitStatements.<fn>
dart:collection-patch/compact_hash.dart 356                                 _HashVMBase&MapMixin&&_LinkedHashMapMixin.forEach
package:angular2/src/compiler/output/dart_emitter.dart 48:35                DartEmitter.emitStatements
package:angular2/src/compiler/offline_compiler.dart 159:40                  OfflineCompiler._createSourceModule
package:angular2/src/compiler/offline_compiler.dart 125:7                   OfflineCompiler.compileStylesheet
package:angular2/src/transform/stylesheet_compiler/processor.dart 32:26     processStylesheet.<fn>

@chalin I don't believe the fix made it into 3.1.0. You'll have to update to 4.0.0-alpha.

Ok, thanks for the clarification. I'll add that to my list of things to check under 4.0.


InputAdornment does not inherit FormControl disabled state

When placed inside a FormControl an InputBase will inherit the "Mui-disabled" class from its parent when the disabled prop is set on the FormControl. When including an InputAdornment inside said InputBase, shouldn't the same inheritance be passed to the InputAdornment? I don't see the disabled class appearing on the adornment.
I currently work around this by manually adding the "Mui-disabled" class to the InputAdornment when disabled is set, then styling on that class in the theme. I attempted to target the InputAdornment as a sibling of the InputBase with the "Mui-disabled" class but could not get it to work.

The Input's adornment is placed within the root that has the .Mui-disabled class set:

...

  <input class="MuiInputBase-input Mui-disabled..." />

You can style the adornment differently if it's placed inside an element with .Mui-disabled class.
Hope this helps.


Three more DataFrame methods

repartition
distinct
sampleDF

sampleDF currently only uses the random seed version. It seems that in order to be able to set the seed manually, we'll need to be able to pass a Long type through callJMethod first. That can be expanded later unless someone already has it figured out.

Just commited the numToInt function as well as the corresponding update to repartition.

Couple of minor comments - Otherwise LGTM.

Fixed.

Thanks - LGTM. Merging this


NuGet Publisher - 405 Method Not Allowed

Hi, I'm trying to configure VSTS build that will publish NuGet package to internal feed. Puckage is being created successfully but have issue with NuGet Publisher. When NuGet publisher is trying to publish package then I got error The remote server returned an error:
(405) Method Not Allowed.. ---> System.Net.WebException: The remote server returned an error: (405) Method Not Allowed.
I've already checked permissions to feed and Project Collection Build Service is added as a contributor. I've also tried to play with NuGet versions but it didn't help. If I download NuGet + VSTS Credential Provider then I can publish package manually with success.
Please find logs below:
Starting: NuGet Publisher
******************************************************************************
==============================================================================
Task : NuGet Publisher
Description : Uploads nupkg files to a NuGet server
Version : 0.2.34
Author : Lawrence Gripper
Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=627417)
==============================================================================
C:\Windows\system32\chcp.com 65001
Active code page: 65001
Detected NuGet version <IP_ADDRESS> / 3.3.0
SYSTEMVSSCONNECTION exists true
save nuget.config to temp config file
Preparing to set credentials in NuGet.config
d:\a\_tasks\NuGetPublisher_333b11bd-d341-40d9-afcf-b32d5ce6f25b\0.2.34\node_modules\nuget-task-common\NuGet\3.3.0\NuGet.exe sources Remove -NonInteractive -Name internalFeed -ConfigFile d:\a\1\Nuget\tempNuGet_34.config
Unable to find any package source(s) matching name: internalFeed.
Setting credentials in NuGet.config
d:\a\_tasks\NuGetPublisher_333b11bd-d341-40d9-afcf-b32d5ce6f25b\0.2.34\node_modules\nuget-task-common\NuGet\3.3.0\NuGet.exe sources Add -NonInteractive -Name internalFeed -Source<EMAIL_ADDRESS>-ConfigFile d:\a\1\Nuget\tempNuGet_34.config -Username VssSessionToken -Password ********
Package Source with Name: internalFeed added successfully.
d:\a\_tasks\NuGetPublisher_333b11bd-d341-40d9-afcf-b32d5ce6f25b\0.2.34\node_modules\nuget-task-common\NuGet\3.3.0\NuGet.exe push -NonInteractive d:\a\1\s\my.project.1.0.0-ci-20170608-115715.nupkg -Source<EMAIL_ADDRESS>-ApiKey VSTS -ConfigFile d:\a\1\Nuget\tempNuGet_34.config -Verbosity Detailed
Using credentials from config. UserName: VssSessionToken
Pushing my.project 1.0.0-ci-20170608-115715 to<EMAIL_ADDRESS>PUT https://myvstsname.pkgs.visualstudio.com/_packaging/b5ae5df2-b73e-4af2-90b6-273f9bd62f56@c23daa56-66df-4340-8e68-9d4be0071ba8/nuget/v2/
System.InvalidOperationException: Failed to process request. 'Method Not Allowed'.
The remote server returned an error: (405) Method Not Allowed.. ---> System.Net.WebException: The remote server returned an error: (405) Method Not Allowed.
at System.Net.HttpWebRequest.GetResponse()
at NuGet.RequestHelper.GetResponse()
at NuGet.HttpClient.GetResponse()
at NuGet.PackageServer.EnsureSuccessfulResponse(HttpClient client, Nullable`1 expectedStatusCode)
--- End of inner exception stack trace ---
at NuGet.PackageServer.EnsureSuccessfulResponse(HttpClient client, Nullable`1 expectedStatusCode)
at NuGet.PackageServer.PushPackageToServer(String apiKey, Func`1 packageStreamFactory, Int64 packageSize, Int32 timeout, Boolean disableBuffering)
at NuGet.PackageServer.PushPackage(String apiKey, IPackage package, Int64 packageSize, Int32 timeout, Boolean disableBuffering)
at NuGet.CommandLine.PushCommand.PushPackageCore(String source, String apiKey, PackageServer packageServer, String packageToPush, TimeSpan timeout)
at NuGet.CommandLine.PushCommand.PushPackage(String packagePath, String source, String apiKey, TimeSpan timeout)
at NuGet.CommandLine.PushCommand.<ExecuteCommandAsync>d__16.MoveNext()
Error: d:\a\_tasks\NuGetPublisher_333b11bd-d341-40d9-afcf-b32d5ce6f25b\0.2.34\node_modules\nuget-task-common\NuGet\3.3.0\NuGet.exe failed with return code: 1
Packages failed to publish
******************************************************************************
Finishing: NuGet Publisher

Based on the logs it looks like you're trying to push to a release view. We don't support pushing packages directly to views today. You have to push the package to a feed first and then promote to the view after the package is in the feed. So to sum up, replacing your feedId@viewId with a feedId should solve the problem.

@satbai I ran into this issue today and after implementing your suggestion, my build finished successfully and published to my feed.
Thank you.

Closing this since it appears to be resolved.


Feature Suggestion: Catches Click Outside Event

Can we have an event that overrides closes i.e. click outside or losing focus. It can be helpful, for instance:
If i want to trigger reset on the picker if user did not click apply, so the dates can be cleared if it's two way binded via Vuex and Computed Getter/Setter or Props.

I believe there we already have this event.
@closed | Event emitted when datepicker is closed.

Yes, the closed event should hopefully do the trick.


All commands that use WMI: Add -Credential support for WMI

Sometimes it would be -Credential, but if it also connects to SQL Server (like in Get-DbaTcpPort) then that would be -SqlCredential and -WinCredential?

Closed as ComputerManagement system has been added so do not believe this applies now.


Can I run this on a Mac OS?

Can I run this on a Mac OS? I've run into problems loading tensorflow-gpu libraries.

Yes, you should be able to. If you can't install tensorflow-gpu it should work with just tensorflow, but will be very slow.


MS0401_T02 Integrating python scripting in opensimQt

This is the main task until 15.8/2020

learning Qt basics (estimated time 3 days)
learning pythonQt basics (estimated time 3 days)
learning opensimQt basics (estimated time 3 days)
Integrating the python version of opensim into our opensimQt interface (estimated time 3 weeks)

one should be able to run python code and run opensim python code
one should be able to modify simple interface components e.g. rename a body

[ ] learning Qt basics (estimated time 3 days)   to be completed by 28.7.2020
[ ]  learning pythonQt basics (estimated time 3 days) to be completed by 30.7.2020
[ ]  learning opensimQt basics (estimated time 3 days) to be completed by 1.8.2020

Acquired basic understanding of QT. Will start with pythonQt tomorrow

Well done, the interesting part is just started, we will have an online meeting next week to discuss your ideas for python integration after you learn about PythonQt features.

I have acquired basic understanding of pythonQt and Vtk. Unless I understand opensim it will be difficult to develop a strategy for integrating python. I will start understanding opensim.

@riteshsv

I have acquired basic understanding of pythonQt and Vtk.

well done :watermelon:

Unless I understand opensim it will be difficult to develop a strategy for integrating python. I will start understanding opensim.

I think before you go to openim iyou should get to know opensimQt first. I would start by trying something simple (no OpenSim involves) e.g. implementing the python console in our opensimQt application.

writing simple python syntax  in the opensimQt scripting console e.g.
        print("Hello python")

access the opensimQt qt elements e.g. changing a button caption or color from the python console.

I have created a small application and accessed all ui objects from integrated python console successfully. I will do the same in opensimQt tomorrow, the way you have suggested.

@riteshsv excellent :watermelon:  I am looking forwared to see some results in our interface.

@idhamari I have done integration of python on openSimQt and got basic functions to work like openModel() etc...We can have a discussion tomorrow if you are available.

@riteshsv sounds great, could you please push your code to your branch so I can test it? I have two long meetings tomorrow, do you have time on Friday after 10:00 German time?

@idhamari we can do it on friday 10 am German Time. I can push the code but you will have to download and install pythonQt and set paths for same in cmake.

@great, we meet on Friday at 10:00. Please push the code I will try to install pythonQt and if I have problem, I will post here.

@idhamari  I have pushed the code to branch-> integrate_python_scripting.
after installing pythonQt set the path for set(PYTHONQT_PATH "/Users/ritesh/projects/idhamari/VisSimKoblenz/pythonqt") in our CMakeLists.txt

@idhamari Below are the commands that you may try on python console:
openSim.openModel()
openSim.newModel()
openSim.reload()
openSim.saveModel()
openSim.saveModelAs()
openSim.saveAll()
openSim.exit()
openSim.closeModel()
openSim.closeAll()
openSim.loadMotion()
runSimulation()

@riteshsv thanks for your effort :watermelon: I will test it and provide feedback tomorrow.

@riteshsv
I could not build pythonqt using cmake but I build it using qtcreator and it works. I was able to run a few examples. We probably need to figure out how to make it works using cmake as well as the current CMakeLists luses Qt4.
After that, I added the path as you suggested but when I tried to build opensimQt I get this error:
-- Configuring done CMake Error at CMakeLists.txt:127 (add_executable):   Target "opensimQt" links to target "Python::Module" but the target was not   found.  Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing?
Do you have some suggestions on how to fix it?
@yasseerr could you please test this on Windows as well?

I think the reason for the error is:
CMakeWarning at CMakeLists.txt:65 (message):   Python was not found
I also found out the built libraries are for python 2 not 3

Update: everything works now, the problem was multiple versions of python, I had to hardcoded some python pahs.
Quick feedback:
1.The console does not support multi-line code e.g. :
         for i in range(3):
               print(i)

The console does not see the system python environment e.g. I have the python version of vtk installed in my system via pip but when I try to import in opensimQt it is not recognized.
      import vtk

@idhamari
i m currently testing the code, i had problems building pythonQt using cmake and msvs15, reporiting back when it's completed

@idhamari

pythonQt has to be built outside the project. it does not support cmake. I was planning to discuss this point with you during our meeting about options:
-- I will try to build by using custom command in cmake.
as per cmake documentation find_package() will search for python installations and will prefer python 3 over python 2. But in your case may be you changed some default python installation paths.
-- should we link python as static lib ? just an option. we can think of other options.

Update: everything works now, the problem was multiple versions of python, I had to hardcoded some python pahs.
Quick feedback:
1.The console does not support multi-line code e.g. :
         for i in range(3):
               print(i)

The console does not see the system python environment e.g. I have the python version of vtk installed in my system via pip but when I try to import in opensimQt it is not recognized.      import vtk

I did not code for that. will fix the above two issues

Update: everything works now, the problem was multiple versions of python, I had to hardcoded some python pahs.
Quick feedback:
1.The console does not support multi-line code e.g. :
         for i in range(3):
               print(i)

The console does not see the system python environment e.g. I have the python version of vtk installed in my system via pip but when I try to import in opensimQt it is not recognized.      import vtk

I did not code for that. will fix the above two issues

I have pushed the code.

for using multi-line, use shift+Enter and then use tab on the next line. once completed, use Enter to execute the code.
I have modified the code to use local python site-packages.

pythonQt has to be built outside the project. it does not support cmake. I was planning to discuss this point with you during our meeting about options: I will try to build by using custom command in cmake,

maybe @yasseerr can help with this.

as per cmake documentation find_package() will search for python installations and will prefer python 3 over python 2. But in your case may be you changed some default python installation paths.

Python 2 is not supported anymore so we should concentrate on python3. The problem now is when someone has multiple versions, as in my case, would produce error in cmake. Probably we should add an option like Python_Version to CMakeLists to handle this. In future, we will try to automate the build of everything using scripts for each system windows, linux and mac.

should we link python as static lib ? just an option. we can think of other options.

I am not sure about this, let's discuss this in our next meeting.

I have pushed the code.

Excellent job :watermelon: , I will test it and report here.
Meanwhile, could you please implement the run function in Script menu, this should be simple. Here is how it works:

The user select Script>Run
An open file dialog appears to select a python file e.g. myScript.py

you can create any simple script file for testing.

The script code is loaded and run in the console.

HI! @VisSimKoblenz/opensimqtteam
the console is also working on windows with some changes to the cmake file, here are some tips that may help with cmake

for the build of pythonQt i had a problem and its fix was to add a third envirement variable for the version PYTHON_VERSION on top of the  PYTHON_LIB and the PYTHON_PATH or you can change it manually from pythonqt/build/python.prf
the version text differ from platform to another in linux it is 3.7 and 37 in windows , that is true also for library names in the find_library() where the {major}.{minor} became {major}{minor} in windows
to find Python3 explecitly i used this line of find package find_package (Python3 COMPONENTS Interpreter Development)
to make it work i also changed all the Python references to Python3, for exemple : Python_FOUND->Python3_FOUND
a helpful like might be this
for the headers i didnt find the headers in the build folder ${PYTHONQT_PATH}/src/,  so i used the ones in the source folder temporarely

the console is also working on windows

great! so far everything is working in all systems. Probably we need to modify the cmake files to be more flexible and save a copy of the pythonqt in our repository if needed .
@yasseerr  if you possible please join our meeting tomorrow at 10 German time.

Meeting on 7.8.2020:

all sources should be forked and modified when needed: opensim, vtk, pythonqt
no hardcoded, setting should be read from a text file e.g. .ini

using local python or a static one.

Next ToDo:
find out how to connect between a model object in python and the same object in cpp e.g.

access the model from python and change it should change the loaded model in cpp.
changing the model in cpp e.g. the navigator should change it also in python.

A good example is the one from Slicer

@idhamari

it is taking more time to do research on this topic. Slicer code is too large and complicated. What I have found is:

Slicer is using PythonQt but it is heavily customised.
Slicer is also using Python Utilities from VTK. I will have to dig deeper to understand exact mechanism.

I am also studying another option which is highly recommended in industry, that is pybind11. It uses features of modern c++ , is very light weight and is well documented.

We will have to invest more time to figure out the right solution to our peculiar problem and lay the right foundation upon which we can build other functionalities.

@riteshsv thanks for your effort and feedback.

it is taking more time to do research on this topic. Slicer code is too large and complicated. What I have found is:
Slicer is using PythonQt but it is heavily customised.
Slicer is also using Python Utilities from VTK. I will have to dig deeper to understand exact mechanism.

VTK has already python wrapping so we probably can use it if needed.

I am also studying another option which is highly recommended in industry, that is pybind11. It uses features of modern c++ , is very light weight and is well documented.
We will have to invest more time to figure out the right solution to our peculiar problem and lay the right foundation upon which we can build other functionalities

I disagree, I think pybind11 is not an alternative as it is meant for Qt.  Probably an alternative would be PySide2. Still, I believe the slicer approach is the one that already well tested so I prefer to stick to it for now. Probably more students will join the project so we can distribute the workload if needed.
My suggestion:

check how slicer shares the object memory between python and cpp, an option is to ask in Slicer discourse forum, you may get some answer.
we make a long term plan to write all the python functions needed for the interface similar to what you already did.

What about a group meeting on Friday for the three of us at 11:00 or 18:00? @yasseerr

@idhamari

What about a group meeting on Friday for the three of us at 11:00 or 18:00?

I am available at both timings.

@yasser @riteshsv
here is a simple idea for linking the model in the navigator and the model in the python:

all model cpp operations on a  model should write the changes to temp model file e.g. modelName_temp_cpp.osim

all model python operations on a model should write the changes to temp model file e.g. modeName_temp_py.osim

we create these helper python functions:
1. pullModelFromNavigator("modelName")
- this function create a python model object from the temp_cpp file
2. modelUpdateFromNavigator(modelObject)
- this function update the model from the temp_cpp file e.g. after some cpp modifications
3. modelSave(modelObject)
- this function save the model to its original file not the temp file
4. pushModelToNavigator(modelObject,modelNode)
- this function update the model node in the navigator using the temp_py file e.g. after some python modifications. First we write the model to the temp file then we load it in the navigator.
4. loadModelToNavigator(modelObject)
- this function load a model from its temp_py file to the navigator e.g. the model is created via python from scratch

These functions are simples, probably each one is a few lines that deal with files closing, updating and opening

We need to create a cpp function that writing a model to its temp file and call this function after each model modification

With the above functions, we can use both opensim cpp and python objects without conflicting and send the update from one to another.

If the performance is good we can also call the update function after each operation so we have the two models synchronized as well, but this need some testing, especially for large complicated model.

Let's discuss this on next meeting in more technical details.

@idhamari
i think the solution that you presented will work no problem, but like you said it needs testing for big/medium models as it involve a lot of InputOutput operations that will  make it difficult to see changes in an acceptable delay. it also valid if you dont need to control  the objects that are created in runtime like Motions & Decorations
for the meeting i can attend in both hours no problem.

@VisSimKoblenz/opensimqtteam we meet on Friday at 11:00

i think the solution that you presented will work no problem, but like you said it needs testing for big/medium models as it involves a lot of InputOutput operations that will make it difficult to see changes in an acceptable delay.

The above solution is better than nothing. We should make it in a flexible way so if a better solution is found, we can modify the code automatically with some script or with minimum effort.

it also valid if you don't need to control the objects that are created in runtime like Motions & Decorations

Let's discuss this in the meeting.

@idhamari

The user select Script>Run

An open file dialog appears to select a python file e.g. myScript.py

you can create any simple script file for testing.
The script code is loaded and run in the console.

The Script>Run is implemented.
Paste operation for the console implemented
History of python statements executed on the console is displayed in history box next to the console.
Console prompt customised.

well done! @riteshsv  :watermelon:  I will test it and provide feedback if needed.

@VisSimKoblenz/opensimqtteam
Team, I have prepared a small presentation so that we can discuss about my findings and suggestions.

Team, I have prepared a small presentation so that we can discuss about my findings and suggestions.

This sounds nice, thanks for your effort.
I just tested the last commit quickly and but there was a problem in linking, I need to double-check what I missed.
when the user wants to see the updated model in GUI, he only need to reload the model. In case there is a conflict when opening the same file from opensim python and cpp, we can handle this using a temp.osim
we also need to create sub tasks e.g.:

MS0401_T0201 Python: opensim Python CPP communication: I think there is no need to have many helper functions. I think we need only two python functions:

python function getModelFromNavigator("modelName")

call save cpp function to save the model
load the model to opensim python/

python function setModelFromPython(modelName)

call save python function to save the model after you check the navigator for the filename
             modelName.printToXML(modelNamePath)

call cpp open/reload model

call our python manager function vsPyManager.UpdateGui()

MS0401_T0202 Python: opensim Python and Qt GUI communications
- visualization:
- call set setModelFromPython

simulation setting
- write our own python function
        vsPyManager.setAccurayc()
        vsPyManager.UpdateGui()

MS0401_T03 Python: GUI macro recording

MS0401_T04 Python: OpenSim Python plugin: this is future work and not important for now.


Minimal example of server with Microsoft.Extensions.DependencyInjection

I wanted to create a simple LSP server. I looked at https://github.com/OmniSharp/csharp-language-server-protocol/tree/master/sample/SampleServer. The example works alright, I'm able to communicate with the server from neovim.
I tried to create something myself, however, I wanted to use the Microsoft.Extensions.DependencyInjection to manage dependencies of my app, including the ILanguageServer. Here's a simple Program.cs I created:
Log.Logger = new LoggerConfiguration()
    .Enrich.FromLogContext()
    .WriteTo.File(AppDomain.CurrentDomain.BaseDirectory + "log.txt", rollingInterval: RollingInterval.Day)
    .MinimumLevel.Verbose()
    .CreateLogger();

Log.Logger.Information("STARTING");

IObserver<WorkDoneProgressReport> workDone = null!;

var serviceCollection = new ServiceCollection();
serviceCollection
    .AddLogging(logging => logging
        .ClearProviders()
        .AddSerilog(Log.Logger)
        .AddLanguageProtocolLogging()
        .SetMinimumLevel(LogLevel.Debug)
    )
    .AddLanguageServer(options => options
        .WithInput(Console.OpenStandardInput())
        .WithOutput(Console.OpenStandardOutput())
        .OnInitialize(
            async (server, request, token) =>
            {
                var logger = server.Services.GetRequiredService<ILogger<Program>>();
                logger.LogInformation("INITIALIZING");

                var manager = server.WorkDoneManager.For(
                    request, new WorkDoneProgressBegin
                    {
                        Title = "Server is starting...",
                        Percentage = 10,
                    }
                );
                workDone = manager;

                await Task.Delay(2000).ConfigureAwait(false);

                manager.OnNext(
                    new WorkDoneProgressReport
                    {
                        Percentage = 20,
                        Message = "loading in progress"
                    }
                );
            }
        )
        .OnStarted(
            async (languageServer, token) =>
            {
                using var manager = await languageServer.WorkDoneManager
                    .Create(new WorkDoneProgressBegin { Title = "Doing some work..." })
                    .ConfigureAwait(false);

                manager.OnNext(new WorkDoneProgressReport { Message = "doing things..." });
                manager.OnNext(new WorkDoneProgressReport { Message = "doing things... 1234" });
                manager.OnNext(new WorkDoneProgressReport { Message = "doing things... 56789" });

                var logger = languageServer.Services.GetRequiredService<ILogger<Program>>();

                logger.LogInformation("STARTED");
            }
        )
    );

var provider = serviceCollection.BuildServiceProvider();

var server = provider.GetRequiredService<ILanguageServer>();
await server.Initialize(CancellationToken.None); // I tried with or without this

await server.WaitForExit;

I never get  to the "INITIALIZING" part, it's like the server doesn't even react to initialization request. The example is very similar to what the official sample provided. Could someone point out what I'm doing wrong?

You can refer to my project. https://github.com/CppCXY/EmmyLuaAnalyzer/blob/master/EmmyLua.LanguageServer/LanguageServer.cs


Update ko.json

Modify some words for better flow

@dogemos please remerge as well to get new korean translations

@dogemos I've just checked the PR. the flow even better than as it was.


Fixing "copy from an editor instance to another"

First error: undefined value at options.cleaner.keepOnlyTags;
Second error: the cleaner's loop with RegExp over options.cleaner.badTags was clearing all content from "" to "", returning an empty string.
First fix: test typeof(allowedTags)
Second fix: restricted clean (first "']>" then "", never ""). I know we can do it on a single expression but it was an emergency for me, hehe.
Plus: I noticed that you was checking "options.cleaner.keepHtml" before trying to escape "options.cleaner.keepClasses" or breaklines and these steps would occur on both situations [true or false]. So I put it outside the condition.

Thanks for the PR, the issue outlined wasn't something I was aware of.


Issues with the dynamic buffer

Im seeing issues with the contents of the dynamic buffer, under very specific circumstances.   I haven't been able to definitively put a finger on them yet, and I expect that might take a bit of time.
These all refer to the buffer used in reader.zig, in the situation where im inside a StartFlow, and Im using an opt.allocator (being the http.result.arena allocator)
In my DB connection, im using 4k page sizes

Starts off with buf = static
When a new message won't fit in the static buffer, it allocates a new value for buf, using the arena allocator. No probs
When another new message in the same flow won't fit in this dynamic buffer, it will realloc the dynamic buffer to be big enough

This is using self.allocator.realloc()
This has 2 possible paths in std.mem :
1 - It tries to resize buf.  If this works, then the buffer is resized, retains the same ptr, and everything works
2 - If a resize fails, it then allocates a new buffer of the correct size,  copies the old buffer contents to the new, then memsets the old buffer with undefined (0xAA ?), then frees the old buffer, then returns the new slice
In cases where the reallocation is small (ie - fits within 4k page size), then everything seems to work fine and reliable.
In cases where the reallocation is large, and resize fails (more than 4k ... and Im checking this by inserting debugs into my stdlib to see that its failing to resize) ... then what Im seeing in my app is that when the next message is read in result.zig, then this code here is returning unreasonably large values
                        message_length = std.mem.readInt(u32, buf[start + 1 .. start + 5][0..4], .big) + 1;

ie - Message size = 820Mb, or 2.3GB or whatever :(
The values of start / pos / etc in the reader look correct - its the contents of but that are incorrect.
Which in turn fail.  Sometimes they fail with a runtime panic, sometimes they fail with a hanging read on the DB socket looking for 800Mb of data.
ouch.  That's hard to reason about.
I have made this small change in my copy of reader.zig, and ... for now ... it seems to fix the problem at my end, and my application works reliably over very large queries.
                            } else {
                                // currently using a dynamically alllocated buffer, we'll
                                // grow or allocate a larger one (which is what realloc does)
                                std.debug.print("realloc the new buff  ml {} current_len {} start {} pos {}\n", .{ message_length, current_length, start, pos });
                                // comment out the old realloc
                                // new_buf = try self.allocator.realloc(buf, message_length);

                               // do it manually
                                if (allocator.resize(buf, message_length)) {
                                    std.debug.print("Resized buffer to {}, buf len is now {}\n", .{ message_length, buf.len });
                                    new_buf = buf;
                                } else {
                                    new_buf = try allocator.alloc(u8, message_length);
                                    std.debug.print("Resize failed, realloc buffer to {}\n", .{message_length});
                                    self.buf_allocator = allocator;
                                    @memcpy(new_buf[0..current_length], buf[start..pos]);
                                    allocator.free(buf);
                                }
                                std.debug.print("realloc success - buf.len is now {}\n", .{new_buf.len});
                                lib.metrics.allocReader(message_length - current_length);
                            }

Very odd - the logic above is similar to what std.mem.Allocator.realloc() is doing ?
If I stick with using realloc, then my application reliably crashes at the same spots.
Suggests that either - My app has some serious memory corruption issues, or Zig stdlib realloc is broken.  One of the 2 must be true.
I notice the test cases in reader.zig don't pick this up at the moment, because there are all small enough re-allocs to fit within the page size, and they all appear to resize correctly (rather than create a new buf to fit the new message)
Another option at my end - if I use 64k page sizes for the DB connection, im not hitting any queries that require a realloc, so I don't see any other problem. This suggests to me that my app might not be the source of memory corruption issues after all.  Hard to say.
I guess the next step is for me to try to build a zig test case that exactly triggers what Im seeing here, then we can debug it from there.
On that note - If I run zig test, it's expecting a DB setup on localhost / user Postgres, with a few tables setup.  I can get it running if I guess what those test schemas should be and manually add them to my local Postgres server. You probably have these on your local setup already, but might need to add CREATE TABLE statements in the test runner so its all setup.

It was manually doing the realloc before last week's issue:
https://github.com/karlseguin/pg.zig/blob/3814e9dec3c2296104f1e653f58be2ce804d32de/src/reader.zig#L184
If you have docker,  you can create a testing image via:
docker build tests/ -f tests/Dockerfile -t "pgzig:pg"

And then start it up for testing via:
make d

What version of httpz?  res.arena as of  ~ 3 weeks is different. It's a thread-local buffer with fallback to a proper arena.  If you have a recent version, maybe try ee92e0a6feca8b831fea9657dcf69a79af35a07c where res.arena is a typical Arena just to see if the problem goes again. This would quickly point to or eliminate the custom FallBackAllocator as a possible source of the issue.

Yep about the manual realloc - my app was working fine on that release, and regressed after the last update that removed the manual realloc to the stdlib version. I did notice the subtle change in the PR
Experiment.
Updated zig from 0.13 -> 0.14.today = same problem in same spot (just in case stdlib changed radically)
http -> ee92e. + pg -> master = same problem in same spot with realloc
http -> ee92e + pg -> my hacked realloc = works fine

Is statement creating an arena based off the allocator passed along as the query opt ?
Creating an arena inside an arena ?

Yes. Arena within Arena should be fine (and even normal, due to the opaque and composable nature of zig allocators).
With res.arena, it's really: arena -> custom fallback allocator -> []byte || arena

The only difference I can see between stdlib realloc, and what you had originally is - stdlib stamps 0xAA values all over the original buffer in the case where it can't be resized.  This is for double-free detection.
Thinking maybe - something to do with arenas skipping the "Free" operation, combined with trashing the old contents.
Will have to do some experiments outside of pg to find out what std.mem.Allocator.realloc() is really doing I think

I think the issue is that this has to still happen during realloc:
https://github.com/karlseguin/pg.zig/blob/3814e9dec3c2296104f1e653f58be2ce804d32de/src/reader.zig#L198
When the buffer is resized, there can still be an old message at the front of it. The "next" message needs to be moved back to the start of the buffer. realloc doesn't know anything about the meaning of the data, it just grows the buffer and, failing that, allocates new space and copies the whole thing over.
Trying to write a test that will reproduce it, because it needs the right (or wrong, depending on your point of view), sequence of reads.

Pretty sure that fixes it. With the new test data in the "Reader: start/endFlow large overread" test, if that new if (start > 0) { .... } is removed, the  data is corrupt.

ah yes - because it then resets self.start = 0 immediately after setting up buf (either alloc new or grow the existing one), so the data was out of synch in just that one case.
Very subtle !   Its been a bit tricky to visualise whats in the buffer, and what start/pos mean. Is making sense now (slowly)
So happy to see this one fixed - pretty sure that was also the root cause of that bus error I was seeing before, so its been lurking around for a bit, just hard to reproduce.
Tested now with a number of large queries that generate a lot of iterator traffic

http.zig latest + pg.zig latest
zig 0.14.today

Works fine.
I haven't spent any time looking at memory usage / leaks yet - doesnt appear to have any leaks that I can see (which is expected given that its all arenas off the http request)
This stack is starting to look really good. Thx again


[QUESTION] How do I set iTerm as the external terminal?

I tried

It still opened macOS's builtin terminal app.

I have created the launch script and set it in settings, but still no luck.
Terminal set to /Users/evar/scripts/dash/itermlaunch.dash
itermlaunch.dash:
#!/usr/bin/env dash
command="$@"
osascript <<EOF
        tell application "iTerm2"
          tell current window
            create tab with default profile
            tell current session to write text "${command}"
          end tell
        end tell
EOF