Integration with CTS

Switching the conversation here to not confuse Lars to much. Hope you have time to discuss this topic to come to a working solution.
There will be no 100% solution i agree with that. I'm still new with AbapGit/AbapLint but have 25+ years in the Abap world. Still i would like to streamline our process for Abap Development. Currently we have no real history of what was done for what issue. Also our Abap developer team is small (4 devs) which should make things easier. What makes thing more complicated for us is the need to support older SAP release. We are basing our transports on 700 but they support up to 1909.
To avoid changing SAP owned code, one can only move control to a higher level (like AbapGit).  Additionally, the few Badi's can be utilized. AbapGit is currently to more Tool than process (as far as i could figure out so far).
My current setup is very similar to what you have in your picture (GitLab-CE, AbapGit, AbapLint, AbapLint Abap-Backend).
If you are interested to discuss this further, we can do it here or via other channels.
my company email is<EMAIL_ADDRESS>(also Teams). German is also no issue if it is easier for you.

Our current process is as follows (without AbapGit) and is mainly manual:

Jira ticket comes in which requires Abap Development
Transport Request is created
Change Request is created for the Developer wo is going to work on it
Development is done using ADT
Change Request is released
Testing is done. If failed, then goto 3
Transport Request is released
Exported Transport is automatically installed on 3 different target SAP releases
If import fails then goto 2

If you are interested to discuss this further, we can do it here or via other channels.

I think it's fine discussing it in the open as others may join in.
Regarding the process you listed I have a few questions:

What is a "Change Request" in this context? Do you mean a transport task as a child of a transport request or are you referring to SolMan/ChaRM change requests?
The testing is done only on the development system? Are there no transports to integration systems before the change is completed?

Regardless of the details I think your options are as follows:

Create or adapt solutions to integrate CTS with Git-based processes, i. e. pull requests and branching, utilizing and possibly changing abapGit and related software around it (for example this repository).
Use existing solutions that might make your change management and CI processes more automated that do not rely on abapGit -> using Solution Manager + (Central) ATC
Use existing solutions that use git but not abapGit -> gCTS (?)
Use third party solutions (if I recall correctly ActiveControl was supposed to get some kind of abapGit integration)

Which basically is the same range as always between "Do it yourself the way you want it without support and with lots of work" and "Use the existing tested proprietary thing with vendor support that mostly does what you want with maybe less work".

I would like to write down some options for abapGit, just need to focus some time, right now I'm deep into some abaplint stuff

To the Questions:
In General, i'm referring to classical TMS/CTS (no Charm/Projects if i can avoid it).

When you create a new "Workbench Request" while in ADT, it creates a "Transport Request" and inside a "Change Request" which will contain the changes you make in ADT. SAP has been inconsistent with their naming over the years...
We do our QA in the target Release systems (700, 702, 740, 1610). ATC we only use in the development system.

The problem with using solutions from SAP is that the new one's require high releases to work from (Central ATC 750, gCTS 1909). Solman is dreadfull to setup and maintain (we have joint development in this area with SAP). Transporting from these newer releases back to 700 is problematic.
For this reason #2 and #3 is not good for us.
I was not aware of ActiveControl. Any expeciances here?
My preference would be #1 as a lot of good things are already available.

Ah okay, we are talking about classic tasks then (I've never seen them called change request before).
I have no experience with ActiveControl, only know about it because of an Inside Track.
If you want to do 1., as you said the tools are already available. The endeavor is to link it all together in a way that is intuitive for developers (and comprehensible for internal and external IT audits). I kind of stopped there because my team was reduced from 2 people to just me, which reduces the complexity by several magnitudes. I am still using GitLab with branches per transport and merge requests with automatic CI (abaplint + ABAP Unit using sapcli) and nightly CI runs on QAS systems (abaplint + ABAP Unit + ATC). Though the link between TMS and GitLab is still manual (branch needs to be manually named with the transport number for CI to recognize it and in abapGit you need to manually only stage the objects that are included in the transport; also the assumption is that you release the transport after merging the merge request and transport it to QAS as the master branch will assume that the QAS system already has all the changes that were merged into master).

That is already a great start... lately abap teams don't tend to be big any how but that allows us to "Keep it Simple". The central start point should be AbapGit as we have more control here.
What about these changes to remove some manual activities:

Extend the Configuration UI with CTS settings

Checkbox: Create Transport Request when creating a Branch
Checkbox: Release Change Request when commiting to Branch
Checkbox: Release Transport Request when staging a Branch

Extend the "Create Branch" functionality to create a "Transport Request" first and use it's name to create the branch. Descriptions can be added at they might be important for references like a JIRA Ticket.
The UI could also contain users input for which Tasks ("Change Requests") are created, defaulting to the user that creates the branch
Extend the "Commit" functionality to also releases the Task (first non released Task of the user in the transport request=branch)
Extend the "Stage" functionality to also release the Transport Request so that test imports are done automatically in QA systems

Some enforcements to avoid problems should be enabled (how?):

Object changed in another branch/transport request
No direct changes in Master

@flaiker could you share your pipelines with us?

@flaiker could you share your pipelines with us?

Sure (probably tomorrow).
In my concept I had the following assumptions (also see #1):

Transport = Branch
Task -> not mapped
Commits are just normal git commits to update the state of the transport to the branch and trigger CI. I also like to document changes using commit messages.
master branch = state of the QAS system (with delay as merged branches need to have their transports imported)
feature branch = state of master + changes in a transport
Parallel feature branches would have to be rebased once another one is merged

I create the transport first in ADT as I am doing the first change and then later create the branch in abapGit and commit, instead of the other way around. I would probably still do this if abapGit had some kind of workflow for it, partly because refreshing the main repo I work on in abapGit takes ~30 seconds.

Looks like we are quite close in the way of process.

feature branch = state of master + changes in a transport
What is the use of the feature branch?

What i did not mention is the releases that we create. They are currently done via CTS (automated) but i would like to move the process to AbapGit/Pipeline. They would become tagged Branches.

The feature branch is the branch created for a transport to be able to do code review and CI in GitLab using merge requests.
Yes, releases is something I wanted to do too but haven't had the time for (create a release using tags in GitLab of the current state in master, this triggers the CI pipeline for tags, this calls a webservice on the QAS system to generate a TOC of the whole package, TOC is returned by the webservice and attached to the release in GitLab and published on an artifact server). This is not a must have thing for me as the target production system is in the same transport route (after QAS) in an inhouse development scenario but would be nice for external use cases or sandboxes.
This is the pipeline for a nightly build triggered by cron in GitLab (the trigger is just for user docs generated by GitLab pages to be run independent of the build pipeline):

Pipeline for normal, non-nightly, master-builds (any build steps using the ABAP system are turned off as there is a delay between releasing a merge request and importing the transport into QAS):

Pipeline for merge requests:

Status on the merge request (parsed junit output of abaplint and sapcli):

I can also share the .gitlab-ci.yml files but will have to anonymize them quite a lot.
There are some caveats I ran into designing these pipelines:

For security reasons the docker containers running a build step cannot have any internet connectivity and must have IP whitelists to only be able to communicate with the QAS and DEV SAP systems and the GitLab server (sorry I don't trust NPM not pulling some dependency which just zips all proprietary code in the build folder and uploads it to some server...). Therefore all build dependencies are build / tested / checked locally and beforehand and published as a trusted docker image in the GitLab docker container registry.
I use a hand built patch file for sapcli as some things need to be adjusted for it to work on 7.40.
abaplint needs a configuration file with the rules to be checked. I don't want to maintain and upgrade the same configuration file accross a dozen repositories. Therefore I put it in the docker image for abaplint (two versions actually, one per namespace as the rule configuration is partly namespace specific, one base file and either the z-namespace or /.../-namespace file are merged using jq). In the repos themselves there is another abaplint configuration just containing the repository specific rule exceptions, which are also merged with the merged base file to generate the final config file used in the build step.
For sapcli the configuration is outsourced into a separate repository to be able to include it and inherit build steps from it without defining tons of variables everywhere.
I haven't quite found a solution for the ATC checks. These are currently just allowed to fail. I don't have someone else to use the exemptions workflow and also exemptions would be maintainted in the system while abaplint exceptions would be maintained in the repo which doesn't make much sense. Also the exemptions would have to be transported or maintained in a central ATC instance which I don't have.
The pipeline for a merge request / a branch should only check the state of the repository in that branch. The system dependant build steps will use the state in the DEV system which might deviate if you have paralllel development. That's why the ABAP Unit step only checks the unit tests in objects that are contained in the transport. For ATC there is currently not way to only check objects in a transport using sapcli therefore it's just turned off. abaplint is of course using the correct basis for its checks.
Cross-repository-transports: You might have transports which have objects that belong to different repositories. You could prevent this by implementing the BAdI or using different transport layers (I have not). These will lead to you having two merge requests in two different repositories and only if both are merged the transport should be released. Some of the build steps will report wrong results though (the ABAP Unit check should only report the tests belonging to the repo and not all of them for example). You run into this quite frequently if you have a common-basis-objects repository / package.


Internal Server Error 500

To reproduce:
Navigate to http://cufcq.com/
Type anything in the search bar, for any type of search, and search.
Note Internal server error

@nbellowe: Thank you for opening this bug up. We've recently migrated servers and this is the second issue we've had with the search element of the site since the transition.
The site is currently working properly, and I've created an automatic checker to notify us if search starts failing silently again.


bug fix for #89

bug fix for #89
those two line in previous version is error msg without panic.
in previous code change, those two error msg cases panic error.
This pr is to fix them back to previous logic.
Signed-off-by: SamYuan1990<EMAIL_ADDRESS>

so, in that case, I am confusing if we should use https://github.com/guoger/tape/commit/926e9ec7ff8f01e04cb70bbe2f1b0d5a3160a130#diff-7207d26fb7501e632376832aef77a88ba628cee403d23d52fa9e27b4b8342550L144
return in this line....


feat!: register substratools function with decorator

Companion PR:

https://github.com/Substra/substra-tools/pull/65 (MAIN)
https://github.com/Substra/substra/pull/310
https://github.com/Substra/substrafl/pull/37
https://github.com/Substra/substra-documentation/pull/202
https://github.com/Substra/substra-tests/pull/225

End to end tests: :hourglass_flowing_sand: STARTING

End to end tests: :hourglass_flowing_sand: STARTING

Usage: /e2e [options] [help]

/e2e may appear anywhere as long as it is on its own line

Options:
  --refs <value>                                         Extra refs (branch or tag) with format REPO=GIT_REF,REPO=GIT_REF.
  Supported repositories: substra-hlf-k8s, orchestrator, substra-backend, substra-frontend, substra-tools, substrafl, substra, substra-tests, substra-ci.
  Example: /e2e --refs substra-backend=some_branch,orchestrator=some_tag (default: {})
  --tests-to-run, --tests <tests-to-run>                 Comma-separated list of tests to run. Valid options: sdk,substrafl,frontend or NONE. (default: "sdk")
  --benchmarks-to-run, --benchmarks <benchmarks-to-run>  Comma-separated list of workflows tests to run. Valid options: mnist, camelyon or NONE. (default: "NONE")
  --orchestrator-mode, --mode <orchestrator-mode>        Comma-separated list of orchestrator modes to run tests for. Valid options: standalone,distributed (default: "standalone,distributed")
  -h, --help                                             display help for command

/e2e --refs substra=gt/decorator,substrafl=gt/decorator,substra-tests=gt/decorator,substra-tools=gt/decorator --tests NONE --benchmarks mnist,camelyon

End to end tests: :hourglass_flowing_sand: STARTING

Couldn't see anything unexpected, it looks good to me


depthai build failure (CMake,toolchain) ERROR LOG INCLUDED

Hi,
Running windows 10.
Visual studio 2019, C++
When I try to use cmake -S. -Bbuild -D'BUILD_SHARED_LIBS=ON' from https://github.com/luxonis/depthai-core , I get the following error:
E:\depthaiLIB\depthai-core>cmake -S. -Bbuild -D'BUILD_SHARED_LIBS=ON'
-- Using specified toolchain file: E:/depthaiLIB/depthai-core/build/generated/toolchain.cmake combined into: E:/depthaiLIB/depthai-core/build/generated/toolchain.cmake
CMake Error at build/generated/toolchain.cmake:48 (message):
Internal error
Call Stack (most recent call first):
build/CMakeFiles/3.23.0/CMakeSystem.cmake:6 (include)
CMakeLists.txt:36 (project)
-- Configuring incomplete, errors occurred!
See also "E:/depthaiLIB/depthai-core/build/CMakeFiles/CMakeOutput.log".
See also "E:/depthaiLIB/depthai-core/build/CMakeFiles/CMakeError.log".
I have attached the log files.
CMakeError.log
CMakeOutput.log

Hi @Swazir9449
Can you try removing the build directory and try again? Toolchain merging procedure can cause such issues - we are yet to address this

Just to confirm, do you mean removing everything that is inside the build directory? and then running the command again?

It worked. I passed that stage of the install. Thank you.

This is reproduced for me. I don't agree deleting the build directory can be considered a solution, as it forces me to do a clean rebuild every time I do a build of my project, which may take ages. Need a proper fix (not sure even where to look to fix it myself).

@iurii-provizio
Addressed in develop with 4747c83733cf2bea07775c62d17dc9c18974de71

@iurii-provizio Addressed in develop with 4747c83
If error still occurs, remove build directory, or for a cleaner resolution: rm build/generated/toolchain.cmake and remove CMAKE_TOOLCHAIN_PATH cache variable from build/CMakeCache.txt file

Thank you, it seems to have solved the issue!


Add support for custom RouteSelector

Need for implement authorization and etc.
Suggestion:

// add abstract RouteSelector
abstract class TransparentRouteSelector : RouteSelector()

private fun getPath(route: Route): String {
        return when (route.selector) {
            is TrailingSlashRouteSelector -> "/"
            is RootRouteSelector -> ""
            is DocumentedRouteSelector -> route.parent?.let { getPath(it) } ?: ""
            is HttpMethodRouteSelector -> route.parent?.let { getPath(it) } ?: ""
            is AuthenticationRouteSelector -> route.parent?.let { getPath(it) } ?: ""
            is TransparentRouteSelector -> route.parent?.let { getPath(it) } ?: "" // this is new abstract class
            else -> (route.parent?.let { getPath(it) } ?: "") + "/" + route.selector.toString()
        }
    }

Hi,   great suggestion.
i think i would add this functionality as new entry in the plugin config:
install(SwaggerUI) {
    // ignore all route-selectors (or subclasses of them) in the given list
    ignoredRouteSelectors = listOf(YourTransparentRouteSelector::class)
}

Imho, this would be a bit more flexible. I would add this in the next version soon.


types: Move all object metadata to info

getdents syscall only have name, if we can move updatedAt into metadata, we can make List much faster.

Fixed in https://github.com/aos-dev/go-storage/commit/7f5459ac44231f813cf6e4bb6c2a3b363f68ba45


Add a note about checking for CPU Compatibility for target-cpu=native

Hi, love the book, it's great!
With M1 Macs there is currently an issue where using target-cpu=native doesn't detect all the CPU features.
See this: https://github.com/rust-lang/rust/issues/93889
You need to pass apple-m1 instead (though this should be fixed soon in an upcoming llvm release, though same thing would happen for other newer CPUs).
Maybe make a note about comparing rustc --print cfg and rustc --print cfg -Ctarget-cpu=native if the user is relying on specific CPU functionality and not seeing the benefit.
Maybe could even discuss about opting into specific features they want to target.

This bug will be fixed by https://github.com/llvm/llvm-project/commit/fcca10c69aaab539962d10fcc59a5f074b73b0de once an LLVM version is released that includes it. (Or rather a bit earlier as rustc generally switches to a new LLVM version while it is still a pre-release. This makes it possible to get bugfixes included in the final release I believe.)

Thanks for the suggestion! Addressed in https://github.com/nnethercote/perf-book/commit/42f42d6315dbdd1991e9bf8363e8bb4b3d79ca48.


Library Usage: Allow to use containerlab as a library

To allow using Containerlab as a go library we need to adjust some things, that went wrong in the past.

Introduce clear seperation of cmd and clab package
Build a proper facade that provides the high-level calls.

What would we consider the right abstraction for topology handover?
Would we provide a file pointer or would we take in a json blob (probably with an additional argument, the working dir, where we would create the lab folder).
My tendency is towards the json blob.

As per our discussion here: https://github.com/srl-labs/containerlab/discussions/1905
I want to outline the (admittedly few) design requirements Cilium would have for utilizing ContainerLab as an embedded library.
I'd like to first mention that our initial goal to using ContainerLab is for embedding test case scenarios. Cilium has quite a few complex testing scenarios. Using ContainerLab would allow us to rely on an already mature solution which can setup network topologies for dedicated Cilium datapath testing. We are tracking this issue here: https://github.com/cilium/cilium/issues/27450
Luckily, our requirements are not too crazy (IMO, you may think otherwise with your mental map of ContainerLab :))

We'd like to define a topology in a JSON file which define a set of network namespaces and connects them via veths (as I understand, this is the core of ContainerLab, we don't really have a scoped focus on other type of network connectivity such as bridge into VMs).
We will need returned to us a list of configured network namespaces and a handle to these namespaces. Whether this is a pinned filesystem path or a FD can be up to the ease of implementation on ContainerLab's side. We just need the handles provided back to us.
I'm discussing this a bit internally, but I also assume we need to understand the created veth devices (netns + ifindex) after the topology is created, since we'd want to apply eBPF programs to these interfaces to facilitate datapath testing.

What would we consider the right abstraction for topology handover?

Can you explain a bit more about what you mean by "topology handover".
If this is "communicating the resulting topology back to the caller" then I think points 2. and 3. above cover this from our requirements.

Would we provide a file pointer or would we take in a json blob (probably with an additional argument, the working dir, where we would create the lab folder).

It would be possible for the library to take in a generic io.Reader, no? Therefore, the caller can provide any medium (file, in-memory, network-socket, etc...) which implements the io.Reader interface. The implications of this is that the one doing the reader must also do the topology syntax checking at read time.

We will need returned to us a list of configured network namespaces and a handle to these namespaces. Whether this is a pinned filesystem path or a FD can be up to the ease of implementation on ContainerLab's side. We just need the handles provided back to us.

What we do is, that we always create the /var/run/netns/<container_name> handle, as this would also be required by the ip command. This contract should suffice getting a hold onto the handle.
(As a sidenote, we already provide json output for most of the clab commands, so you could already get the container names status etc in json as of todays binary)

I'm discussing this a bit internally, but I also assume we need to understand the created veth devices (netns + ifindex) after the topology is created, since we'd want to apply eBPF programs to these interfaces to facilitate datapath testing.

Would it be sufficient for you to get the netns handle and query the interfaces yourself to figure out the ifindex's. Otherwise we could probably provide these in the results.

What would we consider the right abstraction for topology handover?

Can you explain a bit more about what you mean by "topology handover". If this is "communicating the resulting topology back to the caller" then I think points 2. and 3. above cover this from our requirements.

Like what you answered below, provide a file or an io.reader.

Would we provide a file pointer or would we take in a json blob (probably with an additional argument, the working dir, where we would create the lab folder).

It would be possible for the library to take in a generic io.Reader, no? Therefore, the caller can provide any medium (file, in-memory, network-socket, etc...) which implements the io.Reader interface. The implications of this is that the one doing the reading must also do the topology syntax checking at read time.

Yes thats my thinking, you provide an io.Reader seems to be a good approach.
Well for the checking, if we get an io.Reader, we'd hand that over to the yaml library to read the data and hand back an error if that parsing fails. So I think that should be fine. I'm realizing just now that there should be other means to utilize the library function. One would be to export the topology struct, which would allow the topology definition to be created via structs, but we convert that internally to the specific nodes that implement the nodes.Node interface. So this level of abstraction should probably also be exposed as a subsequent step.

@ldelossa Another question: Is your plan to use containerlab also as a means to deploy the container / network namespaces or is it mainly your objective to use containerlab for wiring?

What we do is, that we always create the /var/run/netns/<container_name> handle, as this would also be required by the ip command. This contract should suffice getting a hold onto the handle.
(As a sidenote, we already provide json output for most of the clab commands, so you could already get the container names status etc in json as of todays binary)

This sounds completely reasonable to me. As long as the naming is consistent with the container names in the topology file, the user of the library can do the correlating.

Would it be sufficient for you to get the netns handle and query the interfaces yourself to figure out the ifindex's. Otherwise we could probably provide these in the results.

When you say "query the interfaces" what do you mean here exactly?
My concern here is that say we have a very busy network namespace with 4 veths created.
What is a quick and simple way for us to understand which veth (ifindex/name) goes to which adjacent network?
However if you mean "query the interfaces" as in, Go interfaces the library will provide, then this seems feasible, just not aware of these interfaces.

Yes thats my thinking, you provide an io.Reader seems to be a good approach.
Well for the checking, if we get an io.Reader, we'd hand that over to the yaml library to read the data and hand back an error if that parsing fails. So I think that should be fine. I'm realizing just now that there should be other means to utilize the library function. One would be to export the topology struct, which would allow the topology definition to be created via structs, but we convert that internally to the specific nodes that implement the nodes.Node interface. So this level of abstraction should probably also be exposed as a subsequent step.

100% to this. Especially if you want to modify a topology in Golang, having to go "back-through" the JSON would be inconvenient :).

Another question: Is your plan to use containerlab also as a means to deploy the container / network namespaces or is it mainly your objective to use containerlab for wiring?

I'm not sure I'm seeing a difference between "deploying" and "wiring".
But for our use cases we would want the network names spaces, veths wired up, routing tables configured, etc.. I'm leaning towards "deployed" here, we expect a full end to end network topology setup. From there we will apply eBPF programs to specific interfaces and then run various unit tests across these network namespaces/eBPF programs.


[AutoPR healthcareapis/resource-manager] Adding swagger spec for healthcareapis resource manager and examples.

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/5096

Build output:

This PR has been merged into https://github.com/Azure/azure-sdk-for-java/pull/3167


Book - typography of title and author

I think I've mentioned this somewhere else but I can't find it again.
We have two sets of sizes for book title and author, "Book title S", "Author" and "Book title S", "Author S" Zeplin. The "Book title S" and "Author S" are for book cover cards on library page in S viewport.
So in this screenshot, cover on the left side should be the same as in library page, and the related section is using the small set. Both don't appear to be right in the test site now.

other issues:

leave 100 px between the end of content and the footer. in case the fixed-position cover is longer, add 100 px margin(?) to the last item in that side section.
body text shouldn't be italic, only section titles.

publication year for related books shouldn't be italic


Add day of the week picker

Would like to know if you have an included day of week selector, something that only displays Monday - Sunday. And also a day of month selector for days in a month eg 1 - 30.

Not specifically, but I've built a Weekday selector by just using a FormBuilderCheckboxGroup or FormBuilderRadioGroup.
Here is a tip on generating the Weekdays (localized):
      final weekdayFormat = DateFormat.E();
      // Note that 2018-01-01 is special because it is a Monday,
      // so replacing the date with the weekday ordinal produces
      // the correct value from the formatter.
      ...
      final weekdays = List.generate(7,
        (weekday) => Text(weekdayFormat.format(DateTime(2018, 1, weekday))),
      );

Hi @Prn-Ice
This is a nice feature but I don't know if a feature with a lot use. How awhitford says, you can create easily a CheckboxGroup or RadioGroup with options and your own style.
Create this field means idealize a design and now don't exist a pattern (Material or Cupertino) for a week day selector


Fix casing and spacing

Keep in mind any time you change a proto file you need to re-compile the pb files.
protoc --go_out=./ profile.proto

This creates a conflict with the other fileDescriptors in the same package so I've been renaming them.

@cpacia Would it make sense to generate the pb files at compile time?

@duosearch I prefer generating them by hand as necessary, as the resulting Structs can then be inspected by autocompleting IDEs, etc.

I fixed this and update the pb file


Adding and updating init files for modules

Description
Adding init files to standardize import method of modules
How Has This Been Tested?
Tested via lint and currently implemented translate tests
OS: RHEL 8.9 Ootpa
Built conda environment using workflow in github action configurations
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules
[x] New check tests, if applicable, are included

Getting there! I think there's more that can be moved down the chain, but my main quibble is with defining abstract base classes in ndsl.typing instead of keeping them where they were and importing them into ndsl.typing for exposure

Yes ndsl.typing should be a stub, code should remain in the original places.
E.g.
typing.py
from ndsl.comm import Communicator

any calling code can then do
from ndsl.typing import Communicator

It is more correct and also would allow us to swap implementation below without touching the exposure


Enhancement: Integrating material_quantities into the ArchiCAD converter.

Prerequisites

[x] I read the contribution guidelines
[x] I checked the documentation and found no answer.
[x] I checked existing issues and found no similar issue.
[x] I checked the community forum for related discussions and found no answer.
[x] I'm requesting the feature to the correct repository (see also speckle-server, speckle-sharp, specklepy, speckle-docs, and others)

What package are you referring to?
ArchiCAD connector
Is your feature request related to a problem? Please describe.
Quantity extraction of materials is time-consuming, and BIM models often do not provide the info in a standardized way. We have been working on integrating the material_quantities into Speckle. material_quantities include the quantities of each material in an element. So far, the Revit connector is the only connector supporting this feature. As it is a fairly valuable approach, we would appreciate extending the scope of the material_quantities to the ArchiCAD connector.
Describe the solution you'd like
Similarly to the Revit connector, the ArchiCAD connector should add the material_quantity information to each element. This would also require to implement the Objects.Other.Material element in ArchiCAD. As we have never worked with the ArchiCAD API, we would appreciate support in this matter.
Describe alternatives you've considered
in Issue #3112, we propose a solution that could partly solve the issue. However, we should still consider converting the materials for purposes beyond rendering (which is the only material information available at the moment.
Additional context

Related issues or community discussions
#3112

Hey @ks-cph ,
Thank you for your report. We will work on adding quantities and user attributes support, so please stay tuned for the next release.

Hey @ks-cph ,
FYI we have added support for quantities and user attributes in 2.18 release. You can get it from Manager.

As of 2.20 this is supported and can be closed @bimgeek


Example of fine-tuning the audio sub-network.

I want to perform the fine-tuning of the audio subnetwork to fit my audio classification problem.
To this aim, I plan to use the _construct_linear_audio_network, _construct_mel128_audio_network, and _construct_mel256_audio_network functions to load the pre-trained Keras model and then append one or more fully-connected layers to perform the classification.
However, I don't understand the Input shape of such models. According to the models.py, the input shape is input_shape = (1, asr * audio_window_dur), where asr= 48000 and audio_window_dur=1; what's asr and why it has that value? Can you please provide an example of using the Keras model from the .wav file?
I really appreciate any help you can provide.

Hi @mattiacampana Could you please tell me how you got the pre trained keras weights for the audio sub network or any code to read the model and load the pre trained weights?
Thanks you.


Add basic features to CursiveLogger

Hello,
This is my attempt at following the first of my suggestions in #714 .
I tried to leave as much alone as I could so that there would be no breaking changes with as many useful features as possible. Anyone using the logger now shouldn't have to change anything and get the exact same behavior. There shouldn't be any breaking changes to the existing API, either in function signatures or behavior.
Logging would use two different filter levels, one each for logs generated internally by cursive and externally by whatever else. This solves the issue in #714 as the debug messages won't clog the log with all the redraws from scrolling (assuming the filter levels are set appropriately). These levels are set either directly or by the environment variables RUST_LOG and CURSIVE_LOG. I also added the ability to change the log queue size too. I hope this meets option 2 in #467 as a "good enough" feature set.
Two small examples:
cursive::logger::CursiveLogger::new()
    .with_int_log_level(log::LevelFilter::Warn)
    .with_ext_log_level(log::LevelFilter::Debug)
    .with_log_size(10000)
    .init();

cursive::logger::CursiveLogger::new()
    .with_env()
    .with_log_size(10000)
    .init();

The whole Box::leak(Box::new(self)) thing is to avoid having to add the std feature flag to log and change Cargo.toml. This is exactly how log handles set_boxed_logger internally.

Thanks for the work! Just a couple nitpicks.

@gyscos
What do you think about the current state with the global logger?
What about the change to not having a set_log_size() function and just using reserve_logs()? (for reference)
Are there other changes/issues in the way of merging this?

Not sure we even need to expose reserve_logs? shrug

I'm personally in favor of not making breaking changes to the API unless necessary. I don't know that it hurts to have it there, but it's your call.

Thanks again for all the work and updates, and sorry for the trouble!


Display rockets - Lists render

Issue requirements

Use useSelector() Redux Hook to select the state slices and render lists of rockets in corresponding routes. i.e.:

You can style the whole application "by hand" or you could use React Bootstrap, a UI library that could speed up the process. This is a popular library and working with its components would be good practice.

Render a list of rockets (as per design). For the image of a rocket use the first image in the array of flickr_images.

Hi @Estete9  👋,
Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉
Highlights
✔ Reducers are set up nicely
✔ The add and remove functions are working as expected
Optional suggestions
N/A
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you consider them as they can improve your code. Some of them were missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Incorrect query in quickstart when retrieving IoT Hub connection string

The query used in the command to retrieve the IoT Hub primary Connection String into the $hubConnectionString variable is wrong.
Instead of the query term being connectionString it should read cs.
Here is a working version of the statement
hubConnectionString=$(az iot hub show-connection-string --hub-name bssdpsqshub --key primary --query cs  -otsv)

Note this is in addition to issue #25777 regarding the incorrect --name parameter (should be --hub-name or just -n).

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

ID: aa3ce593-7e34-29a9-12b5-44a8003a8372
Version Independent ID: 6b3de82a-b44f-e87a-0b69-9abf652009ad
Content: Set up a Device Provisioning Service using Azure CLI
Content Source: articles/iot-dps/quick-setup-auto-provision-cli.md
Service: iot-dps
GitHub Login: @wesmc7777
Microsoft Alias: wesmc

@BretStateham Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@wesmc7777 Please check this issue and update the doc as appropriate.

#reassign JimacoMS3

Hi @BretStateham,
Thanks for your feedback. Can you provide more details here? The command works fine for me as-is with the query set to "connectionString". If I set the query to "cs" nothing is returned.
Also, the hub name can be referenced using one of the following ways "-n", "--name", "--hub-name".  Any of these should work.
I'm using Azure Cloud Shell. Are you using a local installation of Azure CLI? If so, are you sure it's up to date?
Thanks again for your feedback,
Jimaco

Hi @BretStateham would you please help with the previous troubleshooting questions?

Hi @BretStateham just wanted to check if you have any updates?

@BretStateham Since we haven't heard back from you we will be closing this issue for now.
If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Update Set-OrganizationConfig.md

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/organization/Set-OrganizationConfig.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/organization/Set-OrganizationConfig.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/organization/Set-OrganizationConfig.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


python311Packages.meson-python: 0.12.1 -> 0.13.2, python311Packages.python-rtmidi: 1.4.9 -> 1.5.4, ledfx: 2.0.67 -> 2.0.69

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

The first group of failures is because they expect a specific darwin sdk framework to be present
>       assert name.group('plat') == PLATFORM
E       AssertionError: assert 'macosx_10_12_x86_64' == 'macosx_10_16_x86_64'
E         - macosx_10_16_x86_64
E         ?            ^
E         + macosx_10_12_x86_64
E         ?            ^
tests/test_wheel.py:182: AssertionError

We can substitute them with our version.

        # Flush the line to ensure that the log line with the executed
        # command line appears before the command output. Without it,
        # the lines appear in the wrong order in pip output.
        print('{cyan}{bold}+ {}{reset}'.format(' '.join(cmd), **_STYLES), flush=True)
        r = subprocess.run(cmd, cwd=self._build_dir)
        if r.returncode != 0:
>           raise SystemExit(r.returncode)
E           SystemExit: 1
/private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/mesonpy/__init__.py:741: SystemExit
----------------------------- Captured stdout call -----------------------------
+ meson setup /private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib /private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib/.mesonpy-4otp_0t3/build -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --cross-file /private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib/.mesonpy-4otp_0t3/build/meson-python-cross-file.ini --native-file=/private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib/.mesonpy-4otp_0t3/build/meson-python-native-file.ini
The Meson build system
Version: 1.1.1
Source dir: /private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib
Build dir: /private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib/.mesonpy-4otp_0t3/build
Build type: cross build
Project name: purelib-and-platlib
Project version: 1.0.0
../../meson.build:5:0: ERROR: Unable to get clang pre-processor defines:
Compiler stdout:
-----
Compiler stderr:
clang-11: error: cannot use 'cpp-output' output with multiple -arch options
-----
A full log can be found at /private/tmp/nix-build-python3.11-meson-python-0.13.2.drv-0/meson_python-0.13.2/tests/packages/purelib-and-platlib/.mesonpy-4otp_0t3/build/meson-logs/meson-log.txt

The first group of failures is because they expect a specific darwin sdk framework to be present
>       assert name.group('plat') == PLATFORM
E       AssertionError: assert 'macosx_10_12_x86_64' == 'macosx_10_16_x86_64'
E         - macosx_10_16_x86_64
E         ?            ^
E         + macosx_10_12_x86_64
E         ?            ^
tests/test_wheel.py:182: AssertionError

We can substitute them with our version.

10.16 is a compatibility version for macOS 11.0. Is it actually using 11.0 APIs or just hard-coding a particular SDK assumption?

meson-python will be included with #239969, I am going to cherry-pick the other things into python-updates already.


how to copy a same augmenter with same random seeds in python 2.7

I'd like to do data augmentation on both bounding boxes and keypoints, but it can't be done in python2.7.So I do them seperately with same augmenter and using random functions outside to choose the same parameter.
Since some of augmenters  they have different results for the same parameters ex:PerspectiveTransform(scale =0.2)
how to get the same augmentation ? is there anyway to copy the randomseed of the previous augmentation?

If your goal is to augment BBs + keypoints, the canonical way would be along the lines of either
aug = iaa.Affine(rotate=(-45, 45))
batch = aug(bounding_boxes=bbs, keypoints=kps, return_batch=True)
bbs_aug = batch.bounding_boxes_aug
kps_aug = batch.keypoints_aug

or alternatively
aug = iaa.Affine(rotate=(-45, 45))
aug_det = aug.to_deterministic()  # must be called once per batch
bbs_aug = aug_det.augment_bounding_boxes(bbs)
kps_aug = aug_det.augment_keypoints(kps)

You can also initialize augmenters with a seed, e.g. aug = iaa.Affine(rotate=(-45, 45), random_state=1) and set it later via aug.random_state = imgaug.random.RNG(1). You can also manually seed an augmenter in-place via aug.seed_(1) (this also affects child augmenters). You can also explicitly copy random states from one pipeline of augmenters to another, see the function copy_random_states() offered by all augmenters for that (and localize_random_states_(), which usually will have to be called first).


Environment variables aren't loading in Rails 4.1.8 (possibly 4.2)

This issue is basically the same as #144, I'm reopening since it's not fixed at least in the latest version on rubygems.

dotenv 2.0 was released today, which definitely works (#160).
Backports for 1.x are welcome, but I won't be implementing a fix for it.


Gradle/AGP brings in inconsistent builds which prevents androidaudioplugin-manager.aar from MavenLocal

from https://github.com/atsushieno/aap-core/issues/172#issuecomment-1716034775:

It seems the latest implementation seems to work locally, if I replace the library references in app/build.gradle to the submodules (using the methodology documented at README.md, with the diff gist I have updated a few days ago).
The actual behavioral difference somehow appears at aap::AudioDataSourceNode::setAudioSource() for WTF reason. AudioFileReader.readFrames() from OggAudioFileFormat fails to consume SeekableByteBuffer.
It was discovered through this local patch against androidaudioplugin-manager sources (also logging changes to choc). I was forced to do this ugly logging debugging because if I want to put breakpoints on any code in androidaudioplugin-manager.aar it must be part of the project, and that means, we have a WORKING build without this problem!
HOW COME such a behavioral difference could happen, depending on whether androidaudioplugin.aar is resolved as a project() or Maven package!? I have no idea. Gradle has been bringing in incompatibility and unstability changes and AGP has to follow that, which brings in even more nightmare.
And Android Studio and Jetpack Compose requires fairly recent versions of Gradle i.e. 8.0+, so we have no way to go back to good (okay, "better" to be precise) old versions.
At this state. the only fix I can think of is to make structural changes to all those aap-lv2-XXX plugins to NOT resolve aars from MavenLocal but rather from the project, adding those aap-lv2 and aap-core modules into it. It is ugly, but better than lame not working version.
We really want to dump Gradle, but unfortunately we can't.

I have created a reverting branch that uses Gradle 7.6 and AGP 7.4.2, and the problem still persists. There are workaround builds that resolves aap-core and aap-lv2 modules from git submodules, and they successfully builds. But aap-lv2-mda on GitHub Actions, unlike local builds on Android Studio, resulted in missing lv2 assets(!). The build system still blocks...

The same workaround is added in main branch in aap-lv2 and aap-lv2-mda i.e. their dependencies { ... } is full of implementation (project (...)) instead of module name artifacts. We will stick to that solution until we could get working builds...
We keep this issue open until then.

The MavenLocal problem also seems to affect the new realtime preset setter implementation. It works well if androidaudioplugin-manager is resolved via project(...). Looks like it is caused by the same dependency resolution failure.

When I tried to build the release version 0.2.8 (with aap-core 0.7.8, both without -pre), the revised version of aap-lv2 that resolves aap-core aars somehow broke aap-ayumi build because of missing libandroidaudioplugin-lv2.so(!)
Gradle and/or AGP with NDK support is such a wild field.
Fortunately, aap-lv2-mda effect plugins generate valid audio outputs from those MavenLocal .aars this time, I decided to go with MavenLocal for this release. The same issue would come back at any time so I leave this issue open.

Actually the observation ^ was wrong, the audio resource resolution failure issue that occurs only with MavenLocal was never gone. We have to revert the change and find some viable solution (but how?? I have no idea at all).

It also prevents aap-lv2 package releases because Maven publication task results in publishing androidaudioplugin.aar and androidaudioplugin-manager.aar to Nexus OSSRH (because they are dependencies). I have no idea how many more problems Gradle will bring in by trying hard to fix/support it so I leave it as is.

Now the same problem occurs in aap-juce apps. Sigh.

This also affects testImplementation. So if a project has testImplementation(libs.aap.testing) it will also cause the problem. I had been stuck at aap-ayumi for a while due to this issue.

After facing the same issue at ktmidi, I figured that it's not going to work because we cannot "publish" the dependency modules. Either we need to figure out how to exclude them or we need to fix this issue.

I have bumped Gradle to 8.5 and AGP to 8.2.2, and the problem still persists.

Same for Gradle 8.6-rc1 and AGP 8.4.0-alpha07.

Comparing androidaudioplugin-manager.aar from ~/.m2/repository/org/androidaudioplugin/androidaudioplugin-manager/0.8.0/, the native libraries are certainly different:
$  issue-174  ls -l working/lib/arm64-v8a
total 35600
-rw-r--r--  1 atsushi  staff    75584 Jan  1  1981 libaapbarebonepluginsample.so
-rw-r--r--  1 atsushi  staff  4381656 Jan  1  1981 libandroidaudioplugin-manager.so
-rw-r--r--  1 atsushi  staff  9321360 Jan  1  1981 libandroidaudioplugin.so
-rw-r--r--  1 atsushi  staff  1822720 Jan  1  1981 libc++_shared.so
-rw-r--r--  1 atsushi  staff  2620112 Jan  1  1981 liboboe.so
$  issue-174  ls -l problematic/lib/arm64-v8a
total 16304
-rw-r--r--  1 atsushi  staff    75584 Jan  1  1981 libaapbarebonepluginsample.so
-rw-r--r--  1 atsushi  staff   442896 Jan  1  1981 libandroidaudioplugin-manager.so
-rw-r--r--  1 atsushi  staff  5716576 Jan  1  1981 libandroidaudioplugin.so
-rw-r--r--  1 atsushi  staff  1822720 Jan  1  1981 libc++_shared.so
-rw-r--r--  1 atsushi  staff   280128 Jan  1  1981 liboboe.so

Since they are already different at .aar level, dealing with native libs at app level would not make any difference. Yet, those options on androidaudioplugin-manager/build.gradle.kts did not matter:

packaging.jniLibs.keepDebugSymbols.add("**/*.so")
packaging.jniLibs.useLegacyPackaging = true

Here are what I found so far:

It is a matter of Release build. Debug build does not matter.
It seems caused by something in libandroidaudioplugin-manager.so being stripped.
It does not seem to be related to keepDebugSymbols in build.gradle.kts

the input library libandroidaudioplugin-manager.so is already stripped (explained later)

and it should not be a matter of "debug symbols"

AGP resolves those native libraries without stripping when we use implementation(project(...)). This smells like a bug, but does not matter this time

Release builds should respect our cxx compiler flags (explaned later), nonetheless.

It is not a Prefab issue, or any Gradle task around it (e.g. inflexible to be unable to add export_libraries options - it is true, but does not matter this time)
It is not an issue StripDebugSymbolsTask itself - the task seems working as expected in general

It is rather one or more CMake issues.

The problem is that no matter what arguments we pass to cmake section in build.gradle.kts, they cannot beat the optimization flagsCMAKE_BUILD_TYPE.
Neither CMAKE_CXX_FLAGS nor CMAKE_CXX_FLAGS_RELEASE works.
arguments("-DCMAKE_BUILD_TYPE=Debug") on release configuration makes it work again, but that means we are left not optimized on release builds, so it's better to avoid it

https://gitlab.kitware.com/cmake/cmake/-/issues/23378

arguments("-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=-O2 -g -DNDEBUG") is not working, and                     arguments("-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=-O2 -g") is working, somehow.
We can go without -DNDEBUG.


Some questions about "Class Data" ?

Thanks for your work, however I have a question: in each iteration, do you sample 15 different objects for 15 base categories as the data of support set? In other words, should we sample 60 different objects for 60 base categories as the data of support set? I don not have the GPU with enough memory. Can you give me some suggestions?

For each iteration we will select one class data for each training categories, so in the stage of base-training, there would be 15 different objects for PASCAL and 60 for COCO, then 20 for PASCAL and 80 for COCO in the stage of few-shot finetuning.
The GPU memory is indeed an issue when training big network on large data, one work-around could be reduce the batch size and re-scale the learning rate accordingly (cf here)

In the Figure 3 of Paper "Meta R-CNN : Towards General Solver for Instance-level Low-shot Learning" writes "The illustrative instance of RoI meta-learning process in Meta R-CNN. Suppose the image Faster/ Mask R-CNN receiving contains objects in “person”, “horse”. Then Cmeta = ( “person”, “horse” ) and Dmeta includes K-shot “person” and ”horse” images with their structure labels, respectively. As the training image iteratively changes, Cmeta and Dmeta would adaptively change.". In the stage of base-training,  the sampled objects of support set adaptively change based on the objects of query set.
However, why their source codes don not correspond with their paper?  May I get it wrong?

Actually this is just an illustration, the support data does not depend on the query data, and it should not.
All the support data is generated before training and they are iterated recursively by a meta_data_loader, whose order is independent to the query_data_loader.

Thanks for your reply. I can only run the code of meta_data_loader since I cannot build the roi_align/roi_crop/roi_pooling. I don not want to change the version of CUDA(10.0), and try to reproduce your model based on the MMDetection. It is very laborious due to the abstract programming framework. It is much better if your code supports CUDA10.0.


Bioclinica - The message "Târgu Mureș is not a city in Romania" is displayed instead of job location

ENVIRONMENT: production
URL: https://scrapers.peviitor.ro/src/bioclinica/index.html
Browser: Chrome
Version: 120
Device: Laptop
OS: Windows 10
STEPS TO REPRODUCE:

Open the url
Click on "run scraper"
Scroll to "Manager zonal"
Click on "Vezi postul"
Compare the job location from the company's website with the job location displayed on scrapers.peviitor.ro.

EXPECTED RESULTS:
The job locations match - Targu Mures.
ACTUAL RESULTS:
The message "Târgu Mureș is not a city in Romania" is displayed instead of the job location on scrapers.peviitor.ro.
Attachments:

fixed can you retest?

Verified - fixed


Add Blazor with ingress sample

Client side Blazor is now released. Could we add a sample using Blazor WASM client? Blazor uses SignalR that requires Websockets to be enabled on the ingress.

anything new about Websockets support?

I tested it with blazor server and couldn't get it work with the following message:

Error: Failed to start the transport 'WebSockets': Error: There was an error with the transport.

This issue is quite likely caused by: #933 Ingress w/ Tye websocket (signalr) support


User registration form

New registration form with the new fields - name, profile type, url and about me.
No photo upload yet.

this is a front end issue isnt?
in terms of design, I guess I'm following the current input design.
what about the profile type input though? this is a dropdown I guess, should I use a dropdown from MUI?

yes this is the frontend part of the new registration flow.
sadly design is not final yet.. i'll let you know as soon as it is.
yes, for the profile type input you can use material ui's select component.


Equivalent paths are considered different (should use os.path.normpath)

I have one task with a (auto-generated) target of "./some_file" and another task with a dependency of "some_file", and doit failed to recognize the dependency between the two tasks, presumably because is uses string equality to determine whether two paths are not equal. I recognize that, in the presence of symlinks, hard links, bind mounts, and other such things, the general problem of determining whether two paths lead to the same file is difficult, but I think at the very least doit should run os.path.normpath before comparing two paths for equality.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26989884-equivalent-paths-are-considered-different?utm_campaign=plugin&utm_content=tracker%2F1885485&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1885485&utm_medium=issues&utm_source=github).

There is also the issue about detecting if 2 paths are the same file on case-insensitive file systems.
This came up before and I decided it is a wontfix. You can easily use normpath yourself when required.
I am keeping this open as doc issue to make sure this behavior is documented somewhere.


Arithmetic operations in boolean GMW -- expected running time?

Hey,
Apologies for the long issue. We are using MOTION in research that we are getting ready to publish and we don't want to misrepresent MOTION.
I wonder what your experience is with the execution time of MOTION using Boolean GMW to execute arithmetic operations? For example, I wrote the following small benchmark which computes Hamming distance. Am I doing anything incorrectly which would significantly slow things down?
void EvaluateProtocol(mo::PartyPointer& party, std::uint32_t value) {
  mo::SecureUnsignedInteger zero(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 0), 0));
  mo::SecureUnsignedInteger one(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 1), 0));

  std::vector<mo::SecureUnsignedInteger> inputA(value);
  std::vector<mo::SecureUnsignedInteger> inputB(value);

  for (uint32_t i = 0; i < value / 4; i++) {
    inputA[4 * i]     = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 1), 0));
    inputA[4 * i + 1] = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 0), 0));
    inputA[4 * i + 2] = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 1), 0));
    inputA[4 * i + 3] = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 1), 0));
  }

  for (uint32_t i = 0; i < value / 4; i++) {
    inputB[4 * i]     = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 1), 1));
    inputB[4 * i + 1] = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 0), 1));
    inputB[4 * i + 2] = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 1), 1));
    inputB[4 * i + 3] = mo::SecureUnsignedInteger(party->In<mo::MpcProtocol::kBooleanGmw>(mo::ToInput((uint32_t) 0), 1));
  }

  auto distance = zero;

  for (uint32_t i = 0; i < value; i++) {
    distance += (inputA[i] == inputB[i]).Mux(zero.Get(), one.Get());
  }

  // construct an output gate
  auto output = distance.Out();

  // run the protocol
  party->Run();
  party->Finish();

  // retrieve the result
  auto result = output.As<std::uint32_t>();
  // print the result into the terminal
  std::cout << "Distance " << result << std::endl;
}

A rough measurement of this program with two parties (hardcoded), on an input size of 1000, gives an end-to-end execution time of about 8 seconds. I am running a 2019 Intel MacBook Pro w/ 16g of physical RAM. It was run locally, so the network latency is very low (RTT to localhost appears to be about 50 microseconds). I was also careful to ensure that the two MOTION processes did not cause exhaustion of physical RAM.
For a comparison, I ran the same benchmark with an input size of 10000 using EMP's sh2pc library and the elapsed time is about 1 second.
I should mention that I'm aware there are ways to improve this particular benchmark. I'm only using this as a representative example of how we are using MOTION to do arithmetic, etc. We have some benchmarks that will only work with Boolean GMW, and require arithmetic. So, using conversions to Arithmetic GMW and/or using Boolean operations are not an option.
Does this agree with your expectation? Obviously, there are a lot of differences between using MOTION w/ Boolean GMW and EMP w/ Boolean Yao. But, this is a larger difference (8x slower on an input size which is 1 order of magnitude smaller) than I expected.
My understanding of the main performance concerns when comparing these two frameworks are...

Since MOTION supports N parties (and therefore needs to use secret sharing for GMW and BMR), it needs to build up a circuit for optimal communication round complexity. This causes a significant amount of memory allocation / deallocation since each gate and wire object has (at least) 1 - 2 pointers which take up 1 - 2 words of memory. In contrast, EMP uses a streaming version of Yao's protocol in which gates are garbled and send over the wire on-demand. Therefore, EMP's memory requirements are much lower.
Since MOTION uses secret sharing, the communication round complexity is proportional to the depth of the circuit. In contrast, EMP's communication round complexity is constant. Even with streaming gates, communication is unidirectional.

Does that sound right?

I'll try to answer this more exhaustively later.
A short answer is: A high level of abstraction definitely comes with a cost. That's why we advise to use SIMD operations where possible,  which run one operation on many elements, as one gate. For that, you would input vectors instead of single elements and do operations as if on a single element.
GCs are often faster than GMW but that's likely not the main problem here.
What also may help is the use of other memory allocators (e.g., see how MOTION_USE_TCMALLOC is used in the docker script).
Maybe trivial but better double-check that you compiled in Release.


Server rendering example

WIP right now.

See #59. Server rendering will be included with that change.

Not going to do it this way. See https://github.com/shakacode/react_rails_server_rendering/


noCoverage option not used if using a configuration file

Adding { noCoverage: true } to the options does not add the "--no-coverge" argument to phpunit if you have also specified a configuration file via either gulp-src('phpunit.xml') or with { configurationFile: 'phpunit.xml' }.  This option should be allowed even if code coverage is defined in the configuration file.
The code below shows that 'skip' is set to true if an .xml configuration file is specified. 'skip' is then later checked to allow the no-coverage option.
    if ((file.path) && (! skip) && (!opt.noConfiguration)){
      var ext = file.path.substr(file.path.lastIndexOf('.') + 1);
      if ( ext === 'xml') {
        cmd += ' -c "' + file.path + '"'; skip = true;
      }
    }
    // ...
    if ((! skip) && (opt.noCoverage)) {
      cmd += ' --no-coverage ';
    }

Better would be to do something like this:
  /* code coverage */
    if(opt.coverageClover)      { cmd += ' --coverage-clover=' + opt.coverageClover; }
    // ...
    if(opt.noCoverage)          { cmd += ' --no-coverage'; }

Thanks for the report, I will get it updated in the next few days (likely weekend work)

You rock. Thanks!


Revert "Merge pull request #294 from makkes/default-observed-generation"

It is likely this new default trips up existing HelmRelease resources as the change seems to reset existing state.
If so, we need to figure out how to avoid this before reattempting.

Report seems to be false, phew.


configure-apt.sh - is_ubuntu24 not found

Description
Non-terminating error found in configure-apt.sh since the introduction of Ubuntu 24 into the scripts.
2024/05/21 12:38:28 ui error: [1;31m==> amazon-ebs.build_image: /tmp/script_5264.sh: line 45: is_ubuntu24: command not found[0m
From what I see, the os.sh helper script needs to be sourced into the script at the top so the is_ubuntu24 function is brought in but that's not present.
The placement of configure-apt.sh and it's mock in the Packer template would also need to be updated in the Ubuntu templates to after the helper file provisioner.
Platforms affected

[X] Azure DevOps
[X] GitHub Actions - Standard Runners
[X] GitHub Actions - Larger Runners

Runner images affected

[X] Ubuntu 20.04
[X] Ubuntu 22.04
[X] Ubuntu 24.04
[ ] macOS 11
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[ ] macOS 14
[ ] macOS 14 Arm64
[ ] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Currently in Main branch of the runner-images repo.
Is it regression?
Yes, this issue was introduced with the introduction of Ubuntu 24.
Expected behavior
Configure-apt.sh should complete successfully.
Actual behavior
Configure-apt.sh fails with is_ubuntu24 not found as the os.sh helper script isn't sourced in.
Repro steps

Set up build of the new Runner Images main branch
Configure-apt.sh fails during build, does not cause the build to terminate

fixed, please sync your main


Import WIP to modals template

Please import the WorkInProgress component into the ModalsTemplate found inside components/ContentTemplates folder.
Then render the WorkInProgress component instead of the current div and placeholder sentence.
See the AlertsTemplate component if unsure how to do this and follow the same pattern.

I would like to work on this.

Sure!


audio merge develop

PR types

Others
PR changes

Others
Describe

merge develop

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.9 out of 10 committers have signed the CLA.:white_check_mark: Zth9730:white_check_mark: yt605155624:white_check_mark: lym0302:white_check_mark: david-95:white_check_mark: zh794390558:white_check_mark: WongLaw:white_check_mark: kFoodie:white_check_mark: zxcd:white_check_mark: SmileGoat:x: michael-skynorthYou have signed the CLA already but the status is still pending? Let us recheck it.


hidden classes are gone

explanation found http://getbootstrap.com/docs/4.0/migration/#responsive-utilities

Can we remove the relevant documentation here - https://v4-alpha.getbootstrap.com/layout/responsive-utilities/#available-classes. It's confusing.


PlatformException(AndroidAudioError, Failed to set source) after upgrading to 6.0.0

Checklist

[X] I read the troubleshooting guide before raising this issue
[X] I made sure that the issue I am raising doesn't already exist

Current bug behaviour
After upgrading to audioplayers: ^6.0.0 we see multiple crashes on the crashlytics dashboard:
Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: PlatformException(AndroidAudioError, Failed to set source. For troubleshooting, see: https://github.com/bluefireteam/audioplayers/blob/main/troubleshooting.md, java.io.FileNotFoundException: /data/user/0/il.talent.winner/cache/dba7d3aa-99e7-46e8-b999-a065848e9f93/sounds/example.mp3: open failed: ENOENT (No such file or directory)
	at libcore.io.IoBridge.open(IoBridge.java:574)
	at java.io.FileInputStream.<init>(FileInputStream.java:160)
	at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1209)
	at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1187)
	at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1152)
	at xyz.luan.audioplayers.source.UrlSource.setForMediaPlayer(Unknown Source:7)
	at xyz.luan.audioplayers.player.MediaPlayerPlayer.setSource(Unknown Source:10)
	at xyz.luan.audioplayers.player.WrappedPlayer.setSource(Unknown Source:15)
	at xyz.luan.audioplayers.AudioplayersPlugin.methodHandler(Unknown Source:550)
	at xyz.luan.audioplayers.AudioplayersPlugin.access$methodHandler(Unknown Source:0)
	at xyz.luan.audioplayers.AudioplayersPlugin$onAttachedToEngine$1$1.invoke(Unknown Source:14)
	at xyz.luan.audioplayers.AudioplayersPlugin$onAttachedToEngine$1$1.invoke(Unknown Source:4)
	at xyz.luan.audioplayers.AudioplayersPlugin.safeCall(Unknown Source:0)
	at xyz.luan.audioplayers.AudioplayersPlugin.onAttachedToEngine$lambda$0(Unknown Source:20)
	at xyz.luan.audioplayers.AudioplayersPlugin.a(Unknown Source:0)
	at xyz.luan.audioplayers.b.onMethodCall(Unknown Source:2)
	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(Unknown Source:17)
	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(Unknown Source:18)
	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0(Unknown Source:41)
	at io.flutter.embedding.engine.dart.DartMessenger.a(Unknown Source:0)
	at io.flutter.embedding.engine.dart.a.run(Unknown Source:12)
	at android.os.Handler.handleCallback(Handler.java:942)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at<truncated: 792 chars>

The crashes occur on multiple devices, for example Galaxy A03 Core, Galaxy A13, Redmi 9A.
Expected behaviour
No crash
Code sample

Code sample
static void playApplauseSound() {
    AudioPlayer()
      ..setAudioContext(
        AudioContext(
          android: const AudioContextAndroid(audioFocus: AndroidAudioFocus.gainTransientMayDuck),
          iOS: AudioContextIOS(options: const {AVAudioSessionOptions.duckOthers}),
        ),
      )
      ..play(AssetSource('sounds/example.mp3'));
  }

Affected platforms
Android
Platform details
No response
AudioPlayers Version
6.0.0

yes thats happening

Does this also happen, if you await setAudioContext and then play?

@Gustl22 That seems to resolve the issue. Thanks.

no still happening after setting setAudioContext
PlatformException(DarwinAudioError, Failed to set source. For troubleshooting, see https://github.com/bluefireteam/audioplayers/blob/main/troubleshooting.md, AVPlayerItem.Status.failed on setSourceUrl: Unknown error, null)<…>
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(DarwinAudioError, Failed to set source. For troubleshooting, see https://github.com/bluefireteam/audioplayers/blob/main/troubleshooting.md, AVPlayerItem.Status.failed on setSourceUrl: Unknown error, null)
its working fine in android issue comes in iOS

@sandeep-kadyangc1 then its probably another issue. Can you open a full bug report please?

that solved.. it was problem with my simulator


Loading strokes doesn't work on Xamarin.Forms

Description
I'm trying to restore a signature that I created earlier. The points are stored in a database along with a TouchUp field from which I can restore the strokes. The problem is that the setter for the Strokes property seems to ignore the value I put in and so the signature doesn't load.
Expected Behavior
The Strokes property gets set and the signature is rendered
Actual Behavior
Nothing happens. If I set a breakpoint after setting the property, the strokes are empty.
Basic Information

Version with issue:  3.0.0
Last known good version:  -
IDE: Visual Studio 2019 Professional
Platform Target Frameworks:

Xamarin.Forms:  <IP_ADDRESS>5419

Target Devices:

UWP (Desktop computer)

So it turns out this is because the SignaturePadCanvasView triggers an event in the renderer to set the strokes, but the control isn't rendered yet so there is no renderer. Is there any way to circumvent this?

I am facing the same Issue only difference is i am trying the same in iOS do we need to implement a custom renderer? because i have only added

signatureView.Strokes = newStrokes;
line in my xaml.cs

hello @SuNNjek Implement below code in UWP C#
Point[] points = GetStringToPoint(canvasPoints);
signatureCanvas.LoadPoints(points);
public Point[] GetStringToPoint(string canvasPointsString)
{
Point[] points = new Point[] { };
try
{
if (!String.IsNullOrEmpty(canvasPointsString))
{
int length = canvasPointsString.LastIndexOf(";");
string signature = canvasPointsString.Substring(0, length);
points = signature.Split(';').Select(x => x.Split(',')).Select(y => new Point(float.Parse(y[0]), float.Parse(y[1]))).ToArray();
}
return points;
}
catch (Exception ex)
{
new ExceptionHelper().AddException(ex.Message, this.ToString(), "GetStringToPoint");
return points;
}
    }

@jyt1902 My problem isn't converting the data to points, it's that the points don't get loaded because at the time I try to load them, I don't have a renderer.

@SuNNjek  check above updated code

The missing link in @jyt1902's example was the SignaturePadView doesn't have a Loaded event, nor does Xamarin Forms. Not sure how he has implemented that, but I was able to do it using this method to get view life cycle events on views using effects. I added an instance of this effect to my SignaturePadView control, then set the Strokes property of the signature pad control inside the Loaded event to my saved JSON data (IEnumerable<IEnumerable<Xamarin.Forms.Point>>). Don't forget to unsubscribe to this event if adding programmatically instead of in Xaml. Thanks @jyt1902 for pointing me in the right direction.

@breenbob please, share your complete example using ViewLifecycleEffect. I copied example from provided link and attached this way:
<sigpad:SignaturePadView.Effects>     <effects:ViewLifecycleEffect         Loaded="ViewLifecycleEffect_OnLoaded"         Unloaded="ViewLifecycleEffect_OnUnloaded"/> </sigpad:SignaturePadView.Effects>
but no messages raised on loading/unloading page with SignaturePadView.
Where did I miss valuable steps?

I'm having the same problem. Is this project even being updated or monitored?

@evoynov  Do you know if you solved your problem of the messages not being raised? I'm having the same issue.

Having same issue...
Got it working by delaying the call to strokes setter.
`
protected override void OnAppearing()
{
base.OnAppearing();
        Task.Run(()=> {
            Thread.Sleep(1000);
            SignatureView.Strokes = YOUR_COLLECTION_HERE;
        });
}

`


Remove Quadz

The artist is asking us to hide the testing collection that was created thx to his code. He is not happy that its visible.
Collection: https://kodadot.xyz/base/drops/quadz
Pls Remove or Hide or whatever.

I cannot find proof right now, but I am 100000% confident that we have asked you if we can fork the art and use it for the testing.
As far as I know we got AYE from the artist.
Art will be removed from the indexer

https://github.com/kodadot/basick/pull/58

Should not be visible anymore

it's still there on the past drops section. should be removed now

I just realized, vortices also already removed from the database: https://github.com/kodadot/private-workers/issues/215


[4.0] [ClangImporter] Filter import-as-member decls by preferred submodule.

Explanation: The "import-as-member" feature was not checking the right context for a definition that had previously been forward-declared elsewhere in a module; in rare circumstances this would lead to these declarations being dropped entirely.
Scope: Affects import-as-member declarations from Objective-C.
Radar: rdar://problem/32816381
Reviewed by: @DougGregor
Risk: Low. Anything that previously got the right answer should continue to get the right answer.
Testing: Verified that the original test case succeeded, passed source compatibility suite on master.

@swift-ci Please test


C.submit_batch. return error: "NEAR DA client handler error: [Timeout]" when a large data

C.submit_batch. return error: "NEAR DA client handler error: [Timeout]"
How to fix this?

up!
Please help me...

Interesting. Could you share some of the payload you're sending? Also, whats your RPC config?

It is intermittent on testnet, I encountered it a few days ago

@iavl could you provide the payload that you are sending to the da-rpc?

@iavl could you provide the payload that you are sending to the da-rpc?

https://explorer.testnet.near.org/transactions/EN5uFceXsTksmiRpsax2HdmgNshYjSiPUJBxmsvze2JW

I think we can close this since 0.4.0


RELATED: RAIL-5217 Use correct documentation links

Build succeeded (check pipeline).

Build succeeded (gate pipeline).

https://checklist.intgdc.com/job/compliance/job/gooddata-ui-apidocs-sonarqube-scan-zuul-gate/30/ : SUCCESS in 1m 40s
https://checklist.intgdc.com/job/compliance/job/gooddata-ui-apidocs-fossa-scanning-zuul/2/ : SUCCESS in 2m 04s (non-voting)
https://checklist.intgdc.com/job/compliance/job/gooddata-ui-apidocs-merge-compliance-check/25/ : SUCCESS in 10s


Replace type alias with a 'use'.

Fixes #222

We should consider doing that for the other aliases, e.g. use na::Vector3 as Vector instead of type Vector<N> = Vector3<N> (can be in a separate PR).

See https://github.com/dimforge/parry/pull/232

the difference is more subtle and I'm not sure it's more consistent, it still redirects to an alias (which is alright, but has this big dislaimer "Because this is an alias, not all its methods are listed here. See the Point type too." ; but yes let's discuss it in the other PR.

This adds a warning when running cargo +nightly clippy:
warning: casting to the same type is unnecessary (`f32` -> `f32`)
    --> crates\parry3d\../../src\shape\shape.rs:1466:9
     |
1466 |         f32::MAX as Real
     |         ^^^^^^^^^^^^^^^^ help: try: `f32::MAX`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast

Interestingly, this first one seems correct ^ ; but the following is more difficult to fix:
warning: casting float literal to `f32` is unnecessary
  --> crates\parry3d\../../src\query\sat\sat_cuboid_cuboid.rs:14:18
   |
14 |     let signum = (1.0 as Real).copysign(pos12.translation.vector.dot(axi...
   |                  ^^^^^^^^^^^^^ help: try: `1.0_f32`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast

Real::MAX was what I intended to do when I got to these.
For the other, you could try Real::from(1.0) and see if that warns ... or a quick trait like the One trait from num.


fix #119 List collection call

Fix #119
There is too many call to listCollection. Now this is the top component Data/Layout which performs this call

Current coverage is 86.10% (diff: 33.33%)

Merging #136 into develop will decrease coverage by 0.17%

@@            develop       #136   diff @@
==========================================
  Files           116        116
  Lines          1924       1907    -17
  Methods          57         57
  Messages          0          0
  Branches        147        143     -4
==========================================
- Hits           1660       1642    -18
  Misses          210        210
- Partials         54         55     +1

Powered by Codecov. Last update d50fa36...5e9c554