Develop merge config manager

I ending up moving most of the argument parsing logic in the demo python script to their own classes to make reuse for ROS2 a bit cleaner.

I've also noticed a bug @jonngai
$ python depthai_demo.py -s previewout metaout left right disparity disparity_color -cmx 14 -sh 14 -nce 2 -brd bw1098obc
Using depthai module from:  /home/vandavv/dev/luxonis/depthai-python/venw/lib/python3.8/site-packages/depthai.cpython-38-x86_64-linux-gnu.so
Using Custom Calibration File: depthai.calib
Traceback (most recent call last):
  File "depthai_demo.py", line 307, in <module>
    dai.startLoop()
  File "depthai_demo.py", line 51, in startLoop
    configMan = DepthConfigManager(args)
  File "/home/vandavv/dev/luxonis/depthai/depthai_helpers/config_manager.py", line 22, in __init__
    self.jsonConfig = self.generateJsonConfig()
  File "/home/vandavv/dev/luxonis/depthai/depthai_helpers/config_manager.py", line 115, in generateJsonConfig
    blobMan = BlobManager(self.args, self.compile_model, self.calc_dist_to_bb)
  File "/home/vandavv/dev/luxonis/depthai/depthai_helpers/config_manager.py", line 273, in __init__
    self.blob_file, self.default_blob = self.compileBlob(blob_file)
NameError: name 'blob_file' is not defined

Another one
$ python depthai_demo.py -s previewout metaout left right disparity disparity_color -brd bw1098obc
Using depthai module from:  /home/vandavv/dev/luxonis/depthai-python/venw/lib/python3.8/site-packages/depthai.cpython-38-x86_64-linux-gnu.so
Using Custom Calibration File: depthai.calib
Traceback (most recent call last):
  File "depthai_demo.py", line 307, in <module>
    dai.startLoop()
  File "depthai_demo.py", line 51, in startLoop
    configMan = DepthConfigManager(args)
  File "/home/vandavv/dev/luxonis/depthai/depthai_helpers/config_manager.py", line 22, in __init__
    self.jsonConfig = self.generateJsonConfig()
  File "/home/vandavv/dev/luxonis/depthai/depthai_helpers/config_manager.py", line 205, in generateJsonConfig
    config = self.postProcessJsonConfig(config)
  File "/home/vandavv/dev/luxonis/depthai/depthai_helpers/config_manager.py", line 221, in postProcessJsonConfig
    utils.merge(board_config, config)
NameError: name 'utils' is not defined

I would also merge tests and testsFunctional directory (test_cli_utils.py can be also a part of functional tests)

Path resolution for runFunctionalTests.py is incorrect, it should be relative to the file itself, not to the runtime context.
It works when inside testsFunctional directory, but when I'm in the root depthai folder, this is the output I get
$ python testsFunctional/runFunctionalTests.py
python3: can't open file 'test_meta_d2h.py': [Errno 2] No such file or directory
----------------------------------------------------------------
meta_d2h Failed...
----------------------------------------------------------------
python3: can't open file 'test_object_tracker.py': [Errno 2] No such file or directory
----------------------------------------------------------------
object_tracker Failed...
----------------------------------------------------------------
----------------------------------------------------------------
Running previewout
----------------------------------------------------------------
python3: can't open file 'test_video.py': [Errno 2] No such file or directory
----------------------------------------------------------------
previewout Failed...
----------------------------------------------------------------
----------------------------------------------------------------
Running left
----------------------------------------------------------------
python3: can't open file 'test_video.py': [Errno 2] No such file or directory
----------------------------------------------------------------
left Failed...
----------------------------------------------------------------
----------------------------------------------------------------
Running right
----------------------------------------------------------------
python3: can't open file 'test_video.py': [Errno 2] No such file or directory
----------------------------------------------------------------
right Failed...
----------------------------------------------------------------
----------------------------------------------------------------
Running depth_raw
----------------------------------------------------------------
python3: can't open file 'test_video.py': [Errno 2] No such file or directory
----------------------------------------------------------------
depth_raw Failed...
----------------------------------------------------------------
----------------------------------------------------------------
Running disparity
----------------------------------------------------------------
python3: can't open file 'test_video.py': [Errno 2] No such file or directory
----------------------------------------------------------------
disparity Failed...
----------------------------------------------------------------
----------------------------------------------------------------
Running disparity_color
----------------------------------------------------------------
python3: can't open file 'test_video.py': [Errno 2] No such file or directory
----------------------------------------------------------------
disparity_color Failed...
----------------------------------------------------------------
Traceback (most recent call last):
  File "testsFunctional/runFunctionalTests.py", line 69, in <module>
    cnnlist = os.listdir(cnndir)
FileNotFoundError: [Errno 2] No such file or directory: '../resources/nn/'

I've confirmed that tests work well with BW1098OBC.
However testing out on BW1093 (MegaAI), it started to loop on the left stream test.
So two suggestions here:

After 2-3 failed attempts, the test should fail and continue next ones
Some tests should only be run with the correct hardware (so left/right/disparity/disparity_color streams should not be tested if run against BW1093)

Thanks a ton for taking a look at this @VanDavv. I've fixed the two bugs and the issue with the script run path.

I would also merge tests and testsFunctional directory (test_cli_utils.py can be also a part of functional tests)
test_cli_utils.py was actually a unit test. I felt like keeping them separate because of that but if you want to veto that choice I can move them to the same directory.

However testing out on BW1093 (MegaAI), it started to loop on the left stream test.
Interesting. I don't have a BW1093 but I'm assuming the loop it's getting stuck in is not the main loop where it retrieves packets? Is there an easy way to reproduce this without a BW1093?

Yes, if you unplug the grayscale cameras from your board it should have the same behavior.  Also we'll get you a unit.

Is there any way to detect what model of device we have hooked up from the scripts? It would actually be cooler if we just told the user that the left, right, disparity, etc streams weren't available for the device that they have in the depthai_demo.py. Looks like we give the same usb vendor id for both BW1093 and BW1098OBC.

I'm assuming the loop it's getting stuck in is not the main loop where it retrieves packets? Is there an easy way to reproduce this without a BW1093?
Yes, the source code tries to create a pipeline with the stream left, whereas the BW1093 does not this stream and crashes - which causes the test to start over instead of failing
Is there any way to detect what model of device we have hooked up from the scripts
I know there is EEProm data we flash on our devices, which also contain the board name - we can use it. I believe that @iamsg-luxonis also did the checks for the left/right cameras if they are connected here, so maybe we can also expose this information through python bindings

Yes, agreed this will be very useful.  So the BW1093 is the only model without an eeprom.  All the others can be identified by the eeprom data, and we can safely assume that if there is no eeprom that it is the BW1093.
I agree it would be great to be able to pull this information from Python bindings.  I'm not sure if it exists yet.

Yes, as it stands right now I think additional changes in depthai-core are required to prevent this infinite retry. I agree that it would be good to be able to grab the board ids from the python API and think there's value to that beyond just getting these tests to pass.
If possible, I'd like to check this particular set of changes in so other people can try it out and find more bugs. In the meantime, I can look into adding/finding the bindings necessary to have the script and C++ API tell the user certain cameras aren't available rather than trying to connect to a camera stream to figure out it's missing from a board.
Does that sound reasonable?

Yes, sounds great to me @jonngai .


Create example test for each topic view

Example tests are now available within the develop branch, though complete testing may not be implemented.


Give possibility to provide our own logger

Would it be possible to include the ability to provide our own logger instead of creating a default one ?
Something like :
`class Account:
def __init__(self, email: str, username: str, password: str, *, logger=None, save=True, debug: int = 0):
    self.session = login(email, username, password)
    self.gql_url = 'https://twitter.com/i/api/graphql'
    self.v1_url = 'https://api.twitter.com/1.1'
    self.save = save
    self.debug = debug
    if logger is not None:
        self.logger = logger
    else:
        logging.config.dictConfig(log_config)
        global_logger = logging.getLogger(__name__)
        self.logger = global_logger`

It could be easier for users than using the dict.

I suspect this is a more savvy query related to my own #65. Importing this module seems to turn the logging on for everything else in my program.


Storage Full

Hey I flashed with the Wifi Duck bin file after watching your video, I successfully flashed that but When I connect to AP I can't upload scripts It says storage full and Format button is not working

You made some mistake for sure.
And also check how to open tickets!!!
Read ot all carefully!
https://github.com/whid-injector/WHID/wiki

This issue shows that the FS in the ESP didn't get initialized/formatted properly.
You have to follow exactly how is showed in the video. With the same settings.
If still persists might be your Arduino Version or the fact you use a USB 3.0 port.
About the reset Hall sensor it works. You just need to get used to it. (And of course, u need a magnet)

I did everything stated in video, I have USB 2.0 and It's not letting me upload payload with your firmware. This thing does not work. I need refund!

I am NOT the seller and I have ZERO profit on it.
Is like 99.99999% impossible is a defective piece.
I have tested 20+ devices and so far NO ONE broken. At most I had to reset it.
If people is not skilled enough to understand how one opensource  gadget works... better don't buy and waste time of other people. 🤝

So far you are the first I see with this issue.

I very well know how gadget works, Any way to replace my product ?

Read point 1) and 4) again.

_/_

Try contact the seller and proove them the HW is faulty.


Error in CSS on slot definition techniques example page

I was reviewing the details on this page:
http://flexads.iabtechlab.net:8080/src/slot_definition_techniques.html
And I discovered an error in the css recommendation for publishers:

I belive it should be:

Please make corrections as necessary and double check the rest of the recommendations for code implementation, thanks.
sam

Fixed in text and pushed live.


Initial Implementation of Kotlin SDK

Initial Implementation of the Java / Kotlin SDK for Velocitas.
Covering:

Base classes for service discovery (ClientFactories, via environment variables)
VehicleApp base class (lifecycle management)
Generated code: Selected grpc library; gRPC connection management
Logger
ThreadPool

Misc:

Kotest Integration + Kotest BehaviorSpec Tests
.editorconfig integration
.gitignore

Not covered:
AsyncGrpcFacade:

https://github.com/eclipse-velocitas/vehicle-app-cpp-sdk/blob/main/sdk/include/sdk/grpc/AsyncGrpcFacade.h
https://github.com/eclipse-velocitas/vehicle-app-cpp-sdk/blob/main/sdk/src/sdk/grpc/AsyncGrpcFacade.cpp
=> ClientContext is a cpp-specific grpc class used for "configuration", nothing comparable exists for the Java specific grpc implementation

Out-of-Scope:

Vehicle Model (VSS classes) → future versions
Communication to vehicle data broker via grpc → future versions
MQTT-related topics → future versions
Reliable messaging library and boilerplate code → future versions
No Android-app-template → separate story

Implementing Detekt would be great. But we can do that in a follow up task. But we should not wait too long for that.

Added a PR Pipeline but it looks like it is now "to late" for it to be recognized.
We might have to open a new PR for it to be recognized?

Consider adding pre-commit with similar settings to the other repos

Consider adding pre-commit with similar settings to the other repos

We could use "husky" to enforce the commit hooks.

I don't get the whole picture here so I mainly reviewed it on code level and not functional. An architecture design discussion is ongoing for some classes here. However it would be good if someone additional can approve if this goes into the right direction.

LGTM to make a cut here for the initial implementation


Parent Error

myEncoder.start(); This is the error Please specify root DisplayObject with stage reference in myEncoder.getInstance(specifyHere). Parent set was:

I am having the following error...  "Calling finish but you didn't start recording."
Calling finish but you didn't start recording.
at com.rainbowcreatures::FWVideoEncoder/throwError()
at com.rainbowcreatures::FWVideoEncoder/finish()
at com.rainbowcreatures.swf::FWVideoEncoder/finish()[C:\wamp\www\flashywrappers_svn\FW_src_stable\FlasCC\SWFBridge\com\rainbowcreatures\swf\FWVideoEncoder.as:205]
at Helloworld/onFrame()[/Volumes/PWD/My Apps/EasySketchPro/video_render/3/FW_2_55_premium/examples/exampleHelloworld/Helloworld.as:104]
Cannot display source code at this location.

Not sure about that first one, what are you setting as argument i myEncoder.getInstance(..)?
As for the second one. Its possible the latest version of the framework changed a bit and the helloworld example no longer works. Could you try the other example(camera I think)?

myEncoder = FWVideoEncoder.getInstance(this);
myEncoder.addEventListener(StatusEvent.STATUS, onStatus);
myEncoder.load("../../lib/FlashPlayer/mp4/");
When I run it, it shows the animation....But at the final frame when I call
myEncoder.finish();
there I receive the error "Calling finish but you didn't start recording."
In http://flashywrappers.com/   the version 2.55 , is this the version you are referring?
Can you please mail the working copy you have?
<EMAIL_ADDRESS>


How to reference MDX images from the public folder without copying them to the public directory during the build.

I am trying to use Contentlayer to transform MDX, similar to taxonomy(shadcn-ui example). However, Contentlayer is no longer maintained, so I am attempting to use Velite instead.
According to the Velite example, it suggests placing images and MDX files in the same directory and referencing them using relative paths. I am unable to reference images using absolute paths from the public directory and do not copy images to the public folder, as I could with taxonomy(shadcn-ui example). Is there any solution to this issue?
If I place images in the public folder, like public/images/blog/blog-post-3.jpg and use the path /images/blog/blog-post-3.jpg, velite throws the warning:
[VELITE] issues:
content/blog/deploying-next-apps.mdx
 warning ENOENT: no such file or directory, open 'D:/images/blog/blog-post-3.jpg'  image

⚠ 1 warning

I have to place the images in the same directory as the MDX file and reference them using ./blog-post-3.jpg, and velite will copy them to the public directory during the build.

s.image() defaults to handling referenced images this way. If you don't want to handle them this way, you can use s.string() directly.
BTW, s.image() has a allowNonRelativePath option. But it currently does not support parsing image metadata.

s.image() defaults to handling referenced images this way. If you don't want to handle them this way, you can use s.string() directly.
BTW, s.image() has a allowNonRelativePath option. But it currently does not support parsing image metadata.

Thank you for your reply. I solved my problem using s.string(). It is true that {allowNonRelativePath: true} cannot retrieve the metadata of the image. However, s.string() is sufficient for my needs.


Plan social and fun activities

Schedule some fun and social activities.
Perhaps poll core devs on 7 activities and pick the top 3
Some suggested activities:

virtual escape room
group pixel drawing
https://gather.town/
online board games
virtual lunch/ coffee break
???

https://gather.town/

I think that we could take group photos on not only zoom but also on https://gather.town/

The upcoming signup form includes a section on social activities (including @corona10's mention of Gather), where participants will be able to select as many as they would be potentially interested in. We could potentially post the results in here and use them to structure the social activities.

Based on current signups, the most popular voted social activities are:

unstructured social time
board games
escape room

I will be researching a few options for escape room for the group. Kyle will be researching board games/ games within Discord.
For unstructured social time, we will create a dedicated "break room" channel within Discord. We will also schedule "lunch break" every day.

I just saw this and wanted to let you know about Imaginary Book Club which can be a fun group improv game.


Make tsd, tsd-tensor, and tsd-frame lazy

Fixes #245
@gviejo @BalzaniEdoardo I just removed the [:] when loading arrays from the NWB file and added a lazy flag to the BaseTsd to allow to skip the convert_to_numpy. Note that this works only for array-like, but both h5py.Dataset and zarr.Array support this.
It seems to work well on my side! Let me know what you think!

This seems to break the jitcontinuous_perievent...would yiou be fine in having a parallelized version that doesn't rely on numba, but on the concurrent.futures.ProcessPoolExecutor? This will enable to compute continuous perievents without loading the entire LFP traces in memory

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

7 of 19 (36.84%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-60.0%) to 25.026%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pynapple/core/time_series.py
7
10
70.0%

pynapple/io/interface_nwb.py
0
9
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-60.0%

Covered Lines:
763

Relevant Lines:
2594

💛  - Coveralls

Seems like a coverall issue? Tests are passing locally on my side

I noticed that all the PRs so far has been from you and @BalzaniEdoardo , so maybe some of the actions are relying on some secrets that my fork doesn't have access to

Hi Alessio,
I checked out your PR. It's very cool that the lazy-loading is working. On my side test passes, I'll look more into what is going on with the coveralls.
It would be nice to add tests to test_nwb.py that checks the data in the Tsd is lazy-loaded and that you can run pynapple calls once you slice into the data, something like this,

def test_is_lazy_loaded(path):
    tsd_lazy = nap.load_file(path)
    assert isinstance(tsd_lazy.d, h5py.Dataset)
    assert isinstance(tsd_lazy.t, np.ndarray)

def test_restrict_lazy_loading(tsd_lazy, tsd_regular, epoch):
      assert all(tsd_lazy[:1000].restrict(epoch).t == tsd_regular[:1000].restrict(epoch).t)
      assert np.all(tsd_lazy[:1000].restrict(epoch).d == tsd_regular[:1000].restrict(epoch).d)
      assert np.all(tsd_lazy[:1000].restrict(epoch).time_support.values == tsd_regular[:1000].restrict(epoch).time_support.values)

It would be very nice to have a version of this in which restrict for selecting based on time would work without the slicing. This would allow you to slice based on time instead of having to calculate the indices.
tsd_regular = tsd_lazy.restrict(epochs)

That requires way more work, but it is not technically hard. All you need is splitting the jitrestrict function in two, one that receives time_array, starts and ends and returns the indices for slicing, and a regular function that applies the slicing only.
# in _jitted_functions.py
@jit(no_python=True)
def jit_compute_indices(time_array, starts, ends)
    .... # calculate the ix indices for slicing as in the current jitrestrict
    return ix

def jitresrict(time_array, data_array, starts, ends):
    ix = jit_compute_indices(time_array, starts, ends):
    return time_array[ix], data_array[ix]

I wonder what @gviejo  thinks about this idea. We should compare the performance but my guess is that this new jitrestrict will be still efficient because the last slicing just creates a view.

I can see a path for this but it will take some time since it will requires to update all the jitted functions. Right now, we are focusing on the integration with pynajax so there will be some changes in the core. We can ping you on this PR or in the issue #245 when we can tackle this.

@alejoe91 thanks for the PR Ale!
 The call to restrict will create a vector of indices using the loaded time array, and use it to slice the hdf5.Dataset which will load only what you need.
We will be merging into dev so far, test it out and tell us how it goes!

Thank you Alessio. This should appear soon in 0.6.6.


fix: make draggable views work on firefox

This PR will fix issue#11

Hey @aniruddha-mithya, thanks for contributing!
The PR looks good. My one comment is that it would be more efficient to bind the body dragover event handler on dragstart (in handleDragStart) and remove it on dragend (in handleDragEnd) rather than binding it on every drag event. Can you make that change?

I've updated the code to add the dragover handler on drag start and drag end.

I've updated the code to add the dragover handler on drag start and drag end.

I've made the required changes :)


Upstream updates

Includes many optimizations.

@anselmbradford, when you get a chance, could you please look over this and fix the issue with the map markers? The map is only showing the "Other" marker, and I wasn't sure how to get the markers in markers.js.erb to work with the new map modules you created in the upstream repo. Also, there are some JS lint errors in some of the SMC-specific JS files, like term-popup-manager.js. Thanks!

Coverage increased (+0.01%) to 99.06% when pulling fa9defdbb883d9b7a73406feefa476b55e038929 on upstream-updates into 3aafa1af985f5bb1f17040dbe90fe04c87283054 on master.

Hi @anselmbradford. Just checking to see when you'll be able to take a look at this. Thanks!

Oops, sorry I overlooked this! I'll check tonight.

Coverage increased (+0.01%) to 99.06% when pulling 98958bbdab2e1856e1f7b0c693ed293cffd0b226 on upstream-updates into 3aafa1af985f5bb1f17040dbe90fe04c87283054 on master.

Coverage increased (+0.01%) to 99.06% when pulling c08df454948326fa84db8bd821c120cbdb3a7328 on upstream-updates into 3aafa1af985f5bb1f17040dbe90fe04c87283054 on master.

Coverage increased (+0.01%) to 99.06% when pulling 99cd5155cdca3f2246028f15b5128e703af88e70 on upstream-updates into 3aafa1af985f5bb1f17040dbe90fe04c87283054 on master.

Coverage increased (+0.01%) to 99.06% when pulling a71c892416fd8def9e2b9dc3f6a590efae5026ed on upstream-updates into 3aafa1af985f5bb1f17040dbe90fe04c87283054 on master.

@monfresh Check it out!

@anselmbradford Thanks! Will check it out today.

@anselmbradford, I don't see the "Update search results" alert anymore. Did you remove it, or perhaps when I fixed conflicts, I messed it up?

@anselmbradford Figured it out. I had remove app/alerts from search_filters.js, but I put it back in and it works now.

Coverage increased (+0.01%) to 99.06% when pulling fd3e55ea980e23f628d5f42fbfcfcf053a8d64a5 on upstream-updates into 3aafa1af985f5bb1f17040dbe90fe04c87283054 on master.


ICAL Error - instance system.adapter.ical.2 terminated with code 1 (JS_CONTROLLER_STOPPED)

The ICal Calender data no read anymore and no actual in states.
Restart of adapter will quitt with follow message in log:
instance system.adapter.ical.2 terminated with code 1 (JS_CONTROLLER_STOPPED)
Screenshots & Logfiles
instance system.adapter.ical.2 terminated with code 1 (JS_CONTROLLER_STOPPED)
Versions:

Adapter version: <ICal 1.11.6>
JS-Controller version: <js-controller-version: 4.0.9>
Node version: <node-version: v14.19.0>
Operating system: Debian Stretch

Additional context
Debug exception from console
root@svw2-home-server:/opt/iobroker/node_modules/rrule# iobroker debug ical.2
Debugger listening on ws://<IP_ADDRESS>:9229/af270371-b938-4c7c-8661-01de342cf563
For help, see: https://nodejs.org/en/docs/inspector
internal/modules/cjs/loader.js:329
throw err;
^
Error: Cannot find module '/opt/iobroker/node_modules/rrule/dist/es5/rrule.js'. Please verify that the package.json has a valid "main" entry
at tryPackage (internal/modules/cjs/loader.js:321:19)
at Function.Module._findPath (internal/modules/cjs/loader.js:534:18)
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:888:27)
at Function.Module._load (internal/modules/cjs/loader.js:746:27)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:101:18)
at Object. (/opt/iobroker/node_modules/iobroker.ical/main.js:18:21)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32) {
code: 'MODULE_NOT_FOUND',
path: '/opt/iobroker/node_modules/rrule/package.json',
requestPath: 'rrule'
}

Hm ... is the file existing that he mentions?
Alternatve to debug (which is mainly there to really debug an adapter, simply change the loglevel of the instance and do a normal run


Databricks REST API does not support cross-origin request

Can the documentation be updated with note to state that the Databricks API does not currently support cross-region request.

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

ID: 25b5fd38-af0a-12e9-e8f8-3e57bcbc273f
Version Independent ID: f3a0cfcb-99eb-77c4-c888-4045d5d93947
Content: REST API 2.0 - Azure Databricks
Content Source: databricks/dev-tools/api/latest/index.md
Service: azure-databricks
GitHub Login: @mssaperla
Microsoft Alias: saperla

Hi @wpcarroll,
Thanks for the feedback! We have assigned the issue to the content author to further review this and update the document as appropriate.

@leifbro , @mssaperla - Could you please review the above feedback? - Thank you

Thanks for your dedication to our documentation. Unfortunately, we have been unable to review your issue and apologize for the delayed response. The requested updates have not yet been made. The timeline for resolution varies based on resourcing. We've created an internal work item (DOC-7019) to incorporate your suggestions. We are closing this issue for now, but feel free to comment here as necessary.
#please-close

#please-close


Require ESM

Hello,
I have a pb importing the lib, got the following issue when instantiated
Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/alexandrepereira/Documents/<EMAIL_ADDRESS>import llama3Tokenizer from "llama3-tokenizer-js";
...etc

tsconfig
"compilerOptions": {
      "module": "commonjs",
      "esModuleInterop": true,
      "target": "es6",
      "sourceMap": true,
      "strictNullChecks": true,
      "outDir": "dist",
      "noEmit": true
  },

Thanks!

It looks like your repo is using CommonJS?
In that case, try this alternative way of importing:
async function main() {
    const llama3Tokenizer = await import('llama3-tokenizer-js')
    console.log(llama3Tokenizer.default.encode("Hello world!").length)
}

main();

I'm gonna close this as I didn't hear back from you, but if you are still having problems importing this lib, just send a message and I'll help you with it.


788 make contributions catalog port configurable

Description
Please provide a summary of the pull request and the issue it fixes. Please add necessary details, context, dependencies, explanation of when review is needed (see next section), etc.
This PR updates the default port to be 5000. It can be configured via the .env file or the CATALOG_PORT environment variable. This will help in the deployment environment as we can continue to use the default port.
Fixes #788
Review Time Estimate
Please give your idea of how soon this pull request needs to be reviewed by selecting one of the options below. This can be based on the criticality of the issue at hand and/or other relevant factors.

[ ] Immediately
[x] Within a week
[ ] When possible

Type of changes
Please select a relevant option:

[ ] Bug fix (non-breaking change which fixes an issue).
[x] New feature (non-breaking change which adds functionality).
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected).
[ ] Other (any another change that does not fall in one of the above categories.)

Checklist:
Please select all applicable options:

[ ] I have signed the Rokwire Contributor License Agreement (CLA). (Any contributor who is not an employee of the University of Illinois whose official duties include contributing to the Rokwire software, or who is not paid by the Rokwire project, needs to sign the CLA before their contribution can be accepted.)
[x] I have updated the CHANGELOG.
[x] I have read the Contributor Guidelines.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My change requires updating the documentation.
[x] I have made necessary changes to the documentation.
[ ] I have added tests related to my changes.
[ ] My changes generate no new warnings.
[ ] New and existing unit tests pass locally with my changes.
[ ] Any dependent changes have been merged and published in downstream modules.

I have re-run this branch, and it seems to be working fine. I will merge this branch based on previous approvals and because the changes after that are minor. If there are new issues, please add them. Thanks.


Allow Typescript files/directories live in a subdirectory?

I have a project I'm building where I would like to place the Typescript files and Typescript configs (package.json and tsconfig.json) in a subdirectory of my workspace.  AFAICT, this doesn't seem to be supported by these rules.  Can you add docs or support for this? Thanks!

I have my files/configs in a subdirectory, and it works just fine... What
seems to be your issue?
On Sun, Jul 2, 2017, 9:30 AM Ross Light<EMAIL_ADDRESS>wrote:

I have a project I'm building where I would like to place the Typescript
files and Typescript configs (package.json and tsconfig.json) in a
subdirectory of my workspace. AFAICT, this doesn't seem to be supported by
these rules. Can you add docs or support for this? Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/bazelbuild/rules_typescript/issues/14, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AAbzdQ494VraRK-UfTYsbBPYjP2d2XXxks5sJ8WNgaJpZM4OLoMK
.

I was experiencing an issue with node_modules not being present (I think?).  The docs just aren't very clear if this works or not, since node_modules isn't explicitly mentioned by label.

Ah, that's true actually. it appears to work for me, maybe because i have tsconfig.json in the same directory as node_modules:
in sub/dir/BUILD, i have:
exports_files(["tsconfig.json"])
# NOTE: this will move to node_modules/BUILD in a later release
filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]))

then, in sub/dir/lib/BUILD:
ts_library(
    name = "lib",
    srcs = [
      "actions.ts",
      "reducer.ts",
    ],
    deps = [...],
    module_name = "sub/dir/lib",
    tsconfig = "//sub/dir:tsconfig.json",
)

But true, there is no reference to //sub/dir:node_modules

Two separate things:

any node program (eg. the typescript compiler) expects to find a label //:node_modules so you need to have a BUILD or BUILD.bazel file in the project root (next to the WORKSPACE) that contains the filegroup
separately, your rules point to a location where your tsconfig.json lives. That can be anywhere, but in order to reference it, you need a BUILD or BUILD.bazel in a directory containing tsconfig.json that has the exports_files. For example:

subdir/tsconfig.json: { ... }
subdir/BUILD.bazel: ```
exports_files(["tsconfig.json"])
ts_library(tsconfig = ":tsconfig.json")

I can change the example to express this degree of freedom.

if all node programs expect a //:node_modules, does this mean that all node libraries and programs (and typescript libraries / programs) will all use a single, shared node_modules directory to resolve dependencies?
how do i get two independent cli tools to yarn install their package.jsons and use their own separate node_modules folder?

you can have a single //:node_modules or multiple. Internally at google, we actually have a separate rule for every node module, then we have to declare dependencies on each one.
Here's an example:
https://github.com/bazelbuild/rules_nodejs/blob/master/WORKSPACE#L30
when you bazel run @yarn//:yarn it will install dependencies for the two examples independently.
Then each node-related rule uses its node_modules attribute to point to the ones it wants:
https://github.com/bazelbuild/rules_nodejs/blob/master/examples/rollup/BUILD.bazel#L32
In theory you could have many separate filegroups, like node_modules_for_use_case1, node_modules_for_use_case2 and then each use case references a different one.


Refactor dynamic import in frontend application

Purpose
I'm not confident with what I made in my PR managing i18n and I don't know if we can really rely with this kind of dynamic require.
So I look for an other solution using dynamic import in a more "typescript" way.
Proposal

[x] use core-js 3 to have a more recent version of core-js, this is not really realted with the main purpose of this PR but it's I think better to use this new version.
[x] use @babel/plugin-syntax-dynamic-import to have dynamic import
[x] refactor index.tsx file

There are maybe negative points here :warning:  :

the build now have lot of files and not only one index.js. This is because the build import every possible file "importable" and react-intl as a lot of locale-data files.
I have switch the module resolution use in the typescript config, so I don't really know with which browser our code will work now, I found nothing about this in the documentation, but with babel maybe we have no compatibility regression.

IMO this does not change anything as far as browser support is concerned because all imports (dynamic or otherwise) are replaced by __webpack_require__.
The typescript config change has no influence on that because typescript does not emit anything (it only runs as a linter and es6 => esnext made this linter accept the use of lazy imports)
Ditto the babel plugin does not transpile import(), it simply lets babel parse it without throwing errors

Overall I like this approach much better than the other one with require! This is a good idea 👍
Just one concern: do you think the hundreds of bundle slices will be handled by our static file pipeline properly and cache busted as needed? @sampaccoud maybe?

The Django ManifestStaticFileStorage back treats all static files equally so... yes they will be hashed, served and cached busted like all the other static files.


Render all pages on one page

There'd be a few benefits of this:

Can use browser search
Entire sitemap in the sidebar
Can print for PDF for offline mode

What's needed:

[ ] Figure out a way to get hexo to render all pages at one route. Maybe there's a plugin for it? (I searched and didn't find one)
[ ] Update our main.js code to handle the multi-page case (I think right now it would put all sub menu items under the first top-level menu item.
[ ] Ensure the "all page" is not indexed by google.

Happy to advise if someone wants to have a go at this.

I am just going to an airplane. How can I program now in Meteor without that nice tab opened? :-(

cd meteor-checkout-dir
git checkout master
cd docs
meteor

;)

What is then in meteor/docs repository?

Oh I mean if you wanted to get the old docs (all in one page) going, that would be the way to do it.

Aha. OK.


Bezier-rs: Add lookup table for subpath and support euclidean

Added compute_lookup_table to subpath class.
Added tvalue_type: Option<TValueType> to compute_lookup_table in both bezier and subpath classes which allows computation based on euclidean distances rather than parametric.

Now that #1085 is merged, there are some breakages when you run the site.


Error when creating ISO

Hello,
Trying to build ISO but running up against errors in the last bit, the script just errors at the end,
`**********************
Windows PowerShell transcript start
Start time:<PHONE_NUMBER>1450
Username: INSPIRETEC\Josh.Powell
RunAs User: INSPIRETEC\Josh.Powell
Configuration Name:
Machine: DIAMOND (Microsoft Windows NT 10.0.17763.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 3524
PSVersion: 5.1.17763.316
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17763.316
BuildVersion: 10.0.17763.316
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: <IP_ADDRESS>

Transcript started, output file is C:\Users\josh.powell\Documents\PowerShell_transcript.DIAMOND.xdL66VIJ.20190429221450.txt
Script version 1.4.3
Downloading CreateSrsMedia...
done
Validating signature for update.ps1...
success.
919C06207B8A9C6B71423B7916AB61D3F6EF6DC7BD04AD4EC9CB172053B3317991E8274D1DC0F6335D27B8F4E299F7336FEE6F5966624F2A5815A7EB8293884E
68308
What type of customer are you?
Please make sure you have all of the following available:

A USB drive with sufficient space (16GB+).
The contents of this drive WILL BE LOST!
Windows 10 Enterprise media that matches your SRSv2 deployment kit.
Enterprise customers can access Windows 10 Enterprise media from the Volume Licensing Service Center:
http://www.microsoft.com/licensing/servicecenter
Any language pack (LP and/or LIP) files to be included.
MPSA customers:         http://go.microsoft.com/fwlink/?LinkId=125893
Other volume licensees: http://www.microsoft.com/licensing/servicecenter

Please do not continue until you have all these items in order.
Found deployment kit already downloaded.
Validating signature for SRSDeploymentKit-<IP_ADDRESS>.msi...
success.
Extracting the deployment kit...
done.
This deployment kit is built for Windows build 10.0.17134.1.
This deployment kit draws its drivers from %configsetroot%\AutoUnattend_Files\DistShare\Out-of-Box Drivers.
Please indicate what drivers you wish to use with this installation.
[ 0] Logitech SmartDock
[ 1] Crestron SR
[ 2] Polycom MSR
[ 3] Lenovo Hub 500
[ 4] LRS
[ 5] HP Slice 2.0
[ 6] Crestron Flex
[ 7] None
Selected option 0.
[ 0] Surface Pro 4
[ 1] Surface Pro (2017)
[ 2] Surface Pro 6
Selected option 0.
Found driver already downloaded.
Validating signature for SurfacePro4_Win10_16299_1803301_1.msi...
success.
Extracting SurfacePro4_Win10_16299_1803301_1.msi...
done.
Identifying language packs...
... done identifying language packs.
Found update KB4340917 already downloaded.
Validating signature for windows10.0-kb4340917-x64_ed5f586fa9d7064d61e45c523f20ba7fc1ff142a.msu...
success.

Because you are pre-installing an update, you will NOT be able to pre-install language packs to the image at a later point.
You are currently building an image with NO pre-installed language packs.
Are you ABSOLUTELY SURE this is what you intended?
WARNING: PROCEEDING TO GENERATE SLIPSTREAM IMAGE WITH NO PRE-INSTALLED LANGUAGE PACKS.
Reminder: all data on the drive you select will be lost!
[ 0] SanDisk Ultra Fit
Selected option 0.
Creating Enterprise media.
Creating UEFI-compatible media.
Using SRSv2 kit:       C:\Users\josh.powell\Desktop\SRSv2\SRSDeploymentKit-<IP_ADDRESS>.msi
Using driver packs:
C:\Users\josh.powell\Desktop\SRSv2\SurfacePro4_Win10_16299_1803301_1.msi
Using Windows media:   C:\Users\josh.powell\Desktop\SRSv2\Windows
Using language packs:
Using updates:
C:\Users\josh.powell\Desktop\SRSv2\windows10.0-kb4340917-x64_ed5f586fa9d7064d61e45c523f20ba7fc1ff142a.msu
Writing stick:         SanDisk Ultra Fit
Formatting and partitioning the target drive...
PS>TerminatingError(New-Partition): "The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Not enough available capacity
Activity ID: {01b69fd2-a7d3-4155-8fdf-6567211b5bc4}"
done.
Copying Windows...
done.
PS>TerminatingError(New-Item): "The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: An item with the specified name C:\Users\josh.powell\Desktop\SRSv2\com-mnt already exists."

TerminatingError(Dismount-WindowsImage): "The directory could not be completely unmounted.  This is usually due to applications that still have files opened within the mount directory.  Close these files and unmount again to complete the unmount process.
"
Confirm
The item at C:\Users\josh.powell\Desktop\SRSv2\com-mnt has children and the Recurse parameter was not specified. If you continue, all children will be removed with the item. Are you sure you want to continue?
&Yes  Yes to &All  &No  No to A&ll  &Suspend
N

Windows PowerShell transcript end
End time:<PHONE_NUMBER>1812

`

@Powelljl please open a support case. This isn't clearly an issue with the documentation and will require more investigation than we are able to do.

@Powelljl please open a support case. This isn't clearly an issue with the documentation and will require more investigation than we are able to do.

@jambirk trying to find a location too? Where would you recommend?

You can call<PHONE_NUMBER> to file case over the phone.

@Powelljl  - thank you for submitting feedback.
As @jambirk mentioned I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:  https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.

@officedocsbot close


Bug: link-notes and presumably traverse-notes don't handle embedded links well

---
BC-link-note: down
---

![[Note]]

Fixed


Love it! One thing please

http://braillebug.afb.org/braille_deciphering.asp
'the'
'for'
'and'
'ed'
'ing'
have their own braille codes..
Can you add them?! :)

@CraigglesO Thanks for issuing this. I didn't realize there were separate codes for these words.
I'll try to implement it in next release. I hope to find time for this at the beginning of the next month.


Unable to patch a function

I'd like to make a simple, two-line change to a rather involved function.  The original is here and my attempt to patch it using el-patch and el-patch-swap is here.
The function comes from w3m-form.el of emacs-w3m [1].  It's what gets called when point is over something like a github clone web form on a github repo web page, where the user can use the c key to copy the contents of the web form to Emacs' kill ring.  My patch just uses a custom function of mine (set-clipboard-contents) to also copy it to the X primary selection.
The change is to just line 40 in the original, using el-patch-swap in lines 40-43 in the patched version.
If I simply redefine this function using defun instead of el-patch or el-patch-swap but just changing
(define-key keymap "c" `(lambda nil (interactive) (kill-new ,value)))

to
(define-key keymap "c" `(lambda nil (interactive) (kill-new ,value)
                          (set-clipboard-contents ,value)))

it works just fine -- the contents of the form get copied to the X primary selection as expected.
But if I use el-patch and el-patch-swap to do it, nothing happens when I press the c key in a github clone form.
Also, after the regular re-define of the function, (describe-function 'w3m-form-expand-form) tells me just that w3m-form-expand-form is a Lisp function. and does not tell me where it was defined.
But, if instead of re-defining the function using defun I instead used el-patch, when I (describe-function 'w3m-form-expand-form) emacs tells me that w3m-form-expand-form is a Lisp function in ‘w3m-form.el’. so I'm not sure if emacs is even detecting that the function has been re-defined using el-patch (though maybe that's how el-patch is supposed to work).
I'm not sure how to troubleshoot this further, so I thought I'd ask here.
Thanks in advance for any help you can provide.
[1] - cvs -q -d:pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

I just tried M-x el-patch-ediff-patch and that showed the change I made as expected.
Then I thought that maybe the behavior I'm seeing is due to w3m-form.el being byte-compiled, so I tried evaling the original defun of w3m-form-expand-form and then evaling my el-patch'ed version, but didn't have any more luck.  It's still not copying the contents of the web form under point to the clipboard when I type c.

My first question would be whether you are making sure to load your patch inside a with-eval-after-load 'w3m-form. (Although it sounds like something else is wrong if evaluating your el-patch form after the original definition has already been loaded doesn't fix the problem.) I can try to debug it, but I would need a way to reproduce the problem locally (I don't use w3m normally).
To debug further on your end, you could check (symbol-function 'w3m-form-expand-form) and see whether the code is the normal definition or your modified one (or some byte-compiled version). You can also look at the source code of el-patch. All an el-patch-defun does is resolve the directives inside, and then evaluate the resulting defun form. So if you're observing a discrepancy between using defun and el-patch-defun, you could pp-macroexpand-last-sexp on the el-patch-defun and see if that is generating the same defun that you are testing with. I get this; what if you use the macroexpanded output instead of the el-patch-defun? Either way, it should be easy to bisect between it and either the original el-patch-defun or the defun you were testing with.
As a side note, wouldn't interprogram-cut-function be the correct way to accomplish what you're trying to do?

Wrapping the el-patch call within a with-eval-after-load 'w3m-form did it!  Now it works.
I'd had it wrapped in with-eval-after-load 'w3m thinking that'd be enough, but obviously not.
Regarding why I'm not just using interprogram-cut-function: it's because if I set it, then every copy/kill that I made would wind up in the X primary selection, while I want only certain specifically sepected copies/kills to go there.
On the other hand, now that you mention it, another way of approaching this problem would have been to advise w3m-form-expand-form so that it sets interprogram-cut-function before w3m-form-expand-form runs and set it back to nil afterwards.  That might actually be cleaner, since then I wouldn't be patching this function.
Thanks for the idea!

It looks like the plan to advise w3m-form-expand-form doesn't work because all that function does is set up a keybinding:  (define-key keymap "c" (lambda nil (interactive) (kill-new ,value)))which is not really affected by settinginterprogram-cut-functionright beforew3m-form-expand-formruns, as what matters is when the user typesc(by which timeinterprogram-cut-functionwill have been set back tonil).  So it looks like I'll have to patch w3m-form-expand-form` after all.
Anyway, thank you for all your help!

In https://github.com/raxod502/el-patch/commit/a5999539e42fb41d2b31f09022b9efe27ae76684, I updated the "Basic usage" section to better reflect best practices for using el-patch.

sets interprogram-cut-function before w3m-form-expand-form runs and set it back to nil afterwards

Sounds like let to me. But as you said, this approach won't work since there's no (sane) way to intercept the temporary keymap before it's assigned directly to a text property except by patching the function definition. It might be worthwhile to make a feature request upstream.

Thank you.  That documentation is very helpful.
I might make a feature request, as you recommend, but unfortunately I don't think emacs-w3m is actively maintained any more, so I'm not sure how much good it'll do.


Split plugin into ATAK/Meshtastic halves?

I'm not sure if the ATAK product center would allow this, but have you considered splitting the Meshtastic stuff into another APK that doesn't need to go through the signing process?
This would allow for development towards the MT half to proceed at a pace while simplifying the ATAK stuff enough that it might be possible to stay current on the signing process.
Also, thanks for this great project.  Once everything stabilizes some both here and in Meshtastic I think this is going to become a premier use case for ATAK and MT.

I doubt they'd let the plugin load and execute arbitrary code. We could have a separate service/application that the plugin could communicate with, but that requires writing and maintaining an abstraction layer. The 1.2 version of the Meshtastic API contained breaking changes (which they reached out to me and others about) so I'd have to design and write an abstraction layer that would've worked with both versions of the API. I don't think it's valuable, the signing process is pretty quick but I just haven't had a build that is ready for signing in a while.
There is a new dev build on my Drive link that you can try out, if it is stable I'll send it in for signing.
https://drive.google.com/drive/folders/1appNh7iZ7ir9j0naGD6Ohf_c0iQQfHhJ?usp=sharing

Copy that.  Thank you for the heads up.  As a side note, my primary usage
is tactical.  I am the head instructor for field tactics at a large
training center, but also work in mobile telecom.
I'm doing a testing round with the 4.2.1 build right now paired with your
signed 4.2.1 ATAK.
My Setup:
TTGO T-beam Meshtastic (Setup as Tracker)
TTGO LORA Board (Hooked to ATAK)
Metastatic 1.2.28
Samsung Active Tab 3
Results so far:

Loaded ATAK 4.2.1
Loaded Plugin
Activated plugin
Set my callsign in ATAK
Selected previously paired TTGO LORA radio.
Set a channel (mid range)
Configured Tracker parameters and selected tracker to load (TTGO T-beam)
8.  I received a ping from the tracker initially, but after that its
definitely strange.  Doesn't seem to want to keep updating.

I am working on getting a second android device to test this further.
I am getting a lot of errors from the interface, but some delivered packets
as well.  Suspect that it errors out without another device other than the
tracker on the opposite side.
It looks like all settings and options have moved into a sub-menu instead
of being accessible from the main pane of glass?
Will send another update once testing continues.
On Tue, Apr 27, 2021 at 2:19 PM paulmandal @.***> wrote:

Closed #79 https://github.com/paulmandal/atak-forwarder/issues/79.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/paulmandal/atak-forwarder/issues/79#event-4652986210,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AT3RX3M2KYMLP2UOPY7H4X3TK4L5HANCNFSM43VODVCQ
.

Thank you for testing this out! One of the users in the Discord was having an issue where the plugin would not actually set the reporting frequency for Trackers. If you use the Meshtastic app in the Advanced screen you should be able to see/set the reporting frequency.
The settings were moved to make the UI cleaner and use ATAK's built-in settings classes. I was a little unsure about moving some of the settings (i.e. Write to Tracker) but I'm not sure how frequently they would be used in the field -- my thought was that most people would set everything up and then only need to check the status screen after that. I'm open to suggestions here.

Also I would highly recommend checking out the ATAK Discord, especially the #lora channel, there are a few people testing the plugin there and they can probably give some tips


Compile error

I installed all dependences including protobuf dependencies. The compiler detected is g++ and protoc is detected in /usr/bin/protoc.
However, on doing make and at a progress of 91% i hit the following error:
undefined reference to `google::base::CheckOpMessageBuilder::NewString[abi:cxx11]()'

I tried to rename /usr/bin/protoc in the hope that caffe2 tries to compile its own protobuf (I saw it in the thirdparty I think) but it led to further errors.
Any hints anyone?

Sorry this never got answered. I will now move this to #1980


this.splice() doesn't work as expected, requires notifyPath call

HTML
<template is="dom-repeat" items="[[list]]">
	<cs-music-playlist-item data-index$="[[index]]" on-tap="play" playing$="[[item.playing]]">
		<template is="dom-if" if="[[item.playing]]">

		</template>
		[[item.artist_title]]
	</cs-music-playlist-item>
</template>

CoffeeScript
update_status	: (new_id) ->
	@list.forEach (data, index) =>
		if (
			data.id == new_id ||
			(
				data.playing && !new_id
			)
		)
			data.playing	= true
			data.icon		= if cs.bus.state.player == 'playing' then 'play' else 'pause'
			@splice('list', index, 1, data)
		else if data.playing
			data.playing	= false
			delete data.icon
			@splice('list', index, 1, data)
icon_class		: (icon) ->
	"fa fa-#{icon}"

Looks like this should be enough, but indeed it is not, icon is updated only for element, that had icon during initial rendering, other icons never appear in DOM, also playing property never appear on other elements as well.
However, manual notification for all sub-properties finally works:
update_status	: (new_id) ->
	@list.forEach (data, index) =>
		if (
			data.id == new_id ||
			(
				data.playing && !new_id
			)
		)
			data.playing	= true
			data.icon		= if cs.bus.state.player == 'playing' then 'play' else 'pause'
			@notifyPath('list.' + index + '.playing', data.playing)
			@notifyPath('list.' + index + '.icon', data.icon)
		else if data.playing
			data.playing	= false
			delete data.icon
			@notifyPath('list.' + index + '.playing', data.playing)
			@notifyPath('list.' + index + '.icon', data.icon)
icon_class		: (icon) ->
	"fa fa-#{icon}"

@notifyPath('list.' + index) also is not enough, only explicit notification of every property helps.
I'm using Shadow DOM if it is relevant here.
Source code here: https://github.com/nazar-pc/CleverStyle-Music/tree/polymer-1.0/html/cs-music-playlist
To be honest, Polymer 1.0 is barely usable with multitude of such tricks I've encountered while migrating relatively simple app from Polymer 0.5 where there was not only a bit more magic, but everything worked as expected, I have no idea how it is called stable...

In Polymer 1.0, you can assign data directly to element properties, but performing assignments to object sub-properties outside of Polymer's purview require using Polymer's set API for the changes to be observable (set performs both the assignment and the notification).  This is indeed an ergonomic concession for the very real benefit of a simpler, synchronous system that does not rely on polling polyfills.
In your code above, you can simply write:
if (data.id == new_id || (data.playing && !new_id)) {
  this.set(['list', index, 'playing'], true);
  this.set(['list', index, 'icon'], cs.bus.state.player == 'playing' ? 'play' : 'pause');
} else if (data.playing) {
  this.set(['list', index, 'playing'], false);
  this.set(['list', index, 'icon'], null)
}

But what if modifications come from outside?
There should be a way to notify path change recursively deeper into structure, while currently it works only on targeting path.
Also splice() is in your API for a reason, but it doesn't cause changes in rendered list on modification. I've removed one item and inserted another, yes this is the same item, but anyway after such explicit modification it should walk through all sub-properties and check whether they change.


FizzBuzz using ternary operator

I have solved fizzbuzz problem using ternary operator in cpp.
It is a one liner and a creative solution without requiring the usage of stl.

Why did you delete another C++ file with your PR?

I committed the deleted file again. Merging now


LSTM Training using .traineddata file

I have learned on how to created .traineddata file.
I want to know how to start LSTM Training based on that trained data file.

I run the above command.
Can anyone please tell me what is meant by
  --train_listfile ~/tesstutorial/engtrain/eng.training_files.txt \
  --eval_listfile ~/tesstutorial/engeval/eng.training_files.txt \

and what should be there in those training files while running the command files, as these files are empty when i run the command.
As i currently have .traineddata file

As far as i know ,there's no way to train the pytesseract data.


Come up with some better strategy for geolocating measurements

Currently there are some measurements that appear to be coming from a country that is not actually the true country from where the tests were run.
This is due to the fact that Maxmind geolocation data is not particularly accurate for resolving IP->location when a server is involved (it claims to be better for clients).
Maybe some logic in the pipeline can be placed to classify ASNs based on how likely they are to be of a residential line vs a vantage point of some data center.
Alternatively (or additionally) there should be some way of flagging reports that have been run from servers or maybe have a way to allow the user to override the geoip lookup to supply the correct network location.

I think a way to override / correct the lookup may help during the process of setting up ooni-probe (i.e. first run configuration)


Fix "Explicitly number replacement fields in a format string" issue

This pull request automatically fixes all occurrences of the following issue:
Issue type: Explicitly number replacement fields in a format string
Issue details: https://www.quantifiedcode.com/app/project/gh:qbahn:grortir?groups=code_patterns/%3A3aSZNLMu
To adjust the commit message or the actual code changes, just rebase or cherry-pick the commits.
For questions or feedback reach out to<EMAIL_ADDRESS>Legal note: We won't claim any copyrights on the code changes.
Cheers,
Cody - Your code quality bot

Coverage remained the same at 100.0% when pulling a25e3beea5eb3204617eb9bbcdd45bf0e741d5ba on autofix/wrapped2_to3_fix into 5fbb7bc74ae6d30e7579c4b964874a6b6f1fe667 on master.

Coverage remained the same at 100.0% when pulling a25e3beea5eb3204617eb9bbcdd45bf0e741d5ba on autofix/wrapped2_to3_fix into 5fbb7bc74ae6d30e7579c4b964874a6b6f1fe667 on master.


Labeling/reviewer assignment not working correctly in azure-rest-api-specs

I think our GitHub automations use the CODEOWNERS file to assign labels and reviewers to PRs that are opened in the azure-rest-api-specs repo. But PR #20258 opened yesterday was not labeled or assigned as specified in CODEOWNERS.
PR #20258 has 4 added/changed files:
specification/loadtestservice/data-plane/Microsoft.LoadTestService/preview/2022-06-01-preview/examples/GetTestRun.json
specification/loadtestservice/data-plane/Microsoft.LoadTestService/preview/2022-06-01-preview/examples/GetTestRunEngineHealthMetrics.json
specification/loadtestservice/data-plane/Microsoft.LoadTestService/preview/2022-06-01-preview/examples/GetTestRunEngineHealthMetricsFilters.json
specification/loadtestservice/data-plane/Microsoft.LoadTestService/preview/2022-06-01-preview/loadtestservice.json

CODEOWNERS contains:
# PRLabel: %Load Test Service
/specification/loadtestservice/data-plane/ @mikekistler

Since all the files in the PR are in /specification/loadtestservice/data-plane/, I think the automation should have added the "Load Test Service" label and included me as one of the reviewers.
What happened here?

@weshaggard says that CodeOwners picks the _last_match.

@ruowan We need to add the Load Test Service to the Fabric Bot.

I will add it.

https://github.com/Azure/azure-rest-api-specs/pull/20763

PR was merged.


Binance Trading Error

Note: for support questions, please join our Discord server

I'm submitting a ...
[x] bug report
[ ] feature request
[ ] question about the decisions made in the repository

Action taken (what you did)
Trade with Gekko using Binance exchange and API

Expected result (what you hoped would happen)
Trades to execute

Actual result (unexpected outcome)
Trades did not execute

Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, etc)\

It keeps saying it cannot read "statusCode" which I believe is what was added after Binance shut down the other day, but I created a new API yesterday and it still won't trade.
Error below:
C:...\Gekko\gekko\node_modules\binance\lib\rest.js:78
if (response.statusCode === 400 && payload.code === -1021 &&
^
TypeError: Cannot read property 'statusCode' of undefined
at Request.request [as _callback] (C:...\gekko
\node_modules\binance\lib\rest.js:78:34)
at self.callback (C:...\gekko\node_modules\req
uest\request.js:186:22)
at emitOne (events.js:116:13)
at Request.emit (events.js:211:7)
at ClientRequest. (C:...\gekko\node
_modules\request\request.js:816:16)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at ClientRequest.emit (events.js:208:7)
at TLSSocket.emitTimeout (_http_client.js:708:34)
at Object.onceWrapper (events.js:313:30)
RECEIVED ERROR IN GEKKO<PHONE_NUMBER>13006
Child process has died.
(node:6204) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejec
tion id: 1): Error: ESOCKETTIMEDOUT
(node:6204) [DEP0018] DeprecationWarning: Unhandled promise rejections are depre
cated. In the future, promise rejections that are not handled will terminate the
Node.js process with a non-zero exit code.
git log | head:
commit 5e502a97d041940af24c5a3b5257c3b8d7be65f6
Author: Clifford Roche<EMAIL_ADDRESS>Date:   Sat Feb 10 14:13:40 2018 -0500
Fix providesHistory property for Bitfinex

commit df62ec032f6337cd3e0c5c320aef9295798ea85c
Author: Paulovms<EMAIL_ADDRESS>Date:   Sat Feb 10 17:12:22 2018 -0200

Could you download the latest development branch version and try again?

I pulled and restarted. I'll have to wait for the bot to make a trade before I know.

Still receiving the same error.
C:...\gekko\node_modules\binance\lib\rest.js:78
if (response.statusCode === 400 && payload.code === -1021 &&
^
TypeError: Cannot read property 'statusCode' of undefined
at Request.request [as _callback] (C:...\gekko
\node_modules\binance\lib\rest.js:78:34)
at self.callback (C:...\gekko\node_modules\req
uest\request.js:186:22)
at emitOne (events.js:116:13)
at Request.emit (events.js:211:7)
at Timeout._onTimeout (C:...\gekko\node_module
s\request\request.js:849:16)
at ontimeout (timers.js:475:11)
at tryOnTimeout (timers.js:310:5)
at Timer.listOnTimeout (timers.js:270:5)
RECEIVED ERROR IN GEKKO<PHONE_NUMBER>3787486
Child process has died.

ive been using gekko for binance, no problem here. Just letting you know

Try npm install please, to make sure your binance module is up to date.

Still receiving this problem. Ran npm install. Nothing updated.


[RFC][Feature] Parsing Batterystats from Bugreports

Background context
There is a power analysis tool called Battery Historian which allows loading bug reports and viewing various timeline stats and events like battery drain, wakeups, etc. However Battery Historian appears to have been deprecated and is now directing people to use alterate tools including Perfetto: https://developer.android.com/topic/performance/power/setup-battery-historian
Perfetto is currently capable of parsing battery stats data emitted by ATrace. It is also capable of parsing data from dumpstate in bug reports, but it does not appear to be capable of parsing Battery stats events from dumpstate contained within the bug reports.
Feature proposal
I wanted to propose closing this gap. It looks like there is already a logical place to batterystats parsing this alongside the existing android_log_reader which parses logcat from dumpstate: https://cs.android.com/android/platform/superproject/main/+/main:external/perfetto/src/trace_processor/importers/android_bugreport/android_dumpstate_reader.cc;l=117-119
In theory it should also be possible to insert these events in the SQLite DB in the same format as what results from importing battery stats data via atrace, so the existing Perfetto plugins should be able to operate transparently on the data regardless of the underlying file format.
I wanted to solicit comments on this:

does the proposed feature make sense as part of perfetto or not?
If yes, does the suggested implementation of extending the dumpstate importer make sense?

does the proposed feature make sense as part of perfetto or not?

Yes it absolutely makes sense to be part of Perfetto! The only reason it is not is because no one has done the work but otherwise, makes total sense!

If yes, does the suggested implementation of extending the dumpstate importer make sense?

Yes absolutely! When we wrote the bugreport importer, the idea was that we slowly extend the tool to support more of the data in bugreports over time but inside Google there is already a tool for ingesting bugreports and visualizing them so we did not feel like it was the best use of resources and the implementation did not get much further than just parsing logcat.

I put up a CL to start on this:
https://android-review.googlesource.com/c/platform/external/perfetto/+/3368462

In theory it should also be possible to insert these events in the SQLite DB in the same format as what results from importing battery stats data via atrace

This CL only covers the data already emitted by atrace from BatteryStats.java.
I think there is additional data in the battery stats checkin that is still worth displaying (wake locks being one, battery drain info being another). This data is available via atrace too, but doesn't come from battery stats, so if we want to import this data and have it used by existing plugins, we probably wouldn't be able to use the "battery_stats.*" tracks for everything like that current CL does.

Thanks for all the reviews so far! i think we're parsing about 30-40% of the battery events at this point. I'm going to take a break on this work for a few weeks, but in the meantime I had a few questions.

I think the files test/data are stored on GCS so i'm not sure i can upload new files there. I think the current bugreport comes from an AOSP version that is quite old at this point. Something from Android 14 or newer would be nice to have here for diff tests as these newer OS builds contain events that are not present in the older ones. Would it it be possible to get a newer bugreport uploaded here?
Logcat i've noticed is currently out of sync with the battery stats events due to BatteryStats being in UTC while Logcat is in the local TZ. TZ offset info is not currently being parsed, so it is assumed to be zero, which is wrong most of the time. We can try to parse the TZ from the bugreport, but handing every timezone to compute the offet is a bit complex. C++ 20 includes timezone APIs that would be nice to be able to use here, but i understand Perfetto only supports up to C++ 17. Do you have plans to migrate to C++ 20 at some point, or would you be willing to accept limited use of C++ 20 APIs if we guard them with ifdefs?

Would it it be possible to get a newer bugreport uploaded here?

The GCS bucket is only writable by Googlers - if you give me a file, I can upload it for you.

Do you have plans to migrate to C++ 20 at some point, or would you be willing to accept limited use of C++ 20 APIs if we guard them with ifdefs?

I'm sympathetic to the complexity of timezones (https://www.zainrizvi.io/blog/falsehoods-programmers-believe-about-time-zones/) but unfortunately not: we cannot add C++20 features as TP has a bunch of embedders who are still 17 only. And I would really like to not ifdef and have diffferent features.
Is there no way to do it without 20?

The GCS bucket is only writable by Googlers - if you give me a file, I can upload it for you.

Thanks for the offer, although if i had to provide one, i'm  I'm not confident i'd be able to anonymize the bugreport sufficiently enough to feel comfortable uploading something that would be publicly available.

Is there no way to do it without 20?

There are alternatives, just using 20 APIs seemed like the simplest and least risky options if it was available. third-party projects and writing our own are also alternatives here, although i'd really prefer to not write our own if possible.
We can also try to find two timestamps in the dumpstate file that were recorded while the dump was going on. So long as dumpstate didn't take too long to run, we should be able to diff the two timestamps and then round to the nearest valid tz_offset which is what we're really after.
So far i've found one candidate line which looks good. The alarm service outputs this line which could be leveraged:
" nowRTC=1629844744041=2021-08-24 23:39:04.041 nowELAPSED=403532"
The more i think about it, that line seems great for a variety of reasons. as not only does it give us what looks like the tz offset, but it gives us nowElapsed, wich i think maps to CLOCK_BOOTTIME (although i'd need to double check), so this could allow us to generate a fairly accurate clock snapshot as well.
The the main downsides I see are:

We'd need to rely on the Alarm service to provide this line, and i'm not sure how appropriate it is to have such a critical dependency on the Alarm service dump in order for dumpstate to import properly.
The alarm service doesn't appear in dumpstate until a significant way thorough the dumpstate file. At this point we'd have already parsed large number of logcat lines and sent them to the sorter already. Instead we'd probably need to buffer the parsed logcat events in memory and only send them to the sorter once we have a valid tz_offset, or instead maybe do multiple passes of the dumpstate file.

Let me know if you have any thoughts on this. I probably won't be able to work on anything here for a few week though.

Makes sense. One option is to flash a clean build with no account and then take a bugreport there. Afaik that should be pretty safe in terms of privacy.

We'd need to rely on the Alarm service to provide this line, and i'm not sure how appropriate it is to have such a critical dependency on the Alarm service dump in order for dumpstate to import properly.

I think it's ok to have this dependency. Correctness and simplicity is key and seems like both are achieved by using this line. I'd go for it.

The alarm service doesn't appear in dumpstate until a significant way thorough the dumpstate file. At this point we'd have already parsed large number of logcat lines and sent them to the sorter already. Instead we'd probably need to buffer the parsed logcat events in memory and only send them to the sorter once we have a valid tz_offset, or instead maybe do multiple passes of the dumpstate file.

Buffering like this is probably fine. At the end of the day, I've learned over time that people care more about things working than that performance is perfect. Yes it might be a few hundreds of MB in memory but it's better if the report is actually useful.

I probably won't be able to work on anything here for a few week though.

No worries, we can pick this up whenever you get time. Thanks so much for the contributions so far, it's been a pleasure working together!


cli: Use new glob pattern in examples

Use the new '[   ..   ]' pattern in the examples.


Add ACS aggregations and hook up to airflow

Maya - is there a better place I can put the aggregation SQL file? Seems like it doesn't belong in the config folder, but I'm not sure where it should go and how to make sure the terraform config can find the file if it's in a parent or sibling directory

Maya - is there a better place I can put the aggregation SQL file? Seems like it doesn't belong in the config folder, but I'm not sure where it should go and how to make sure the terraform config can find the file if it's in a parent or sibling directory

Yea. My concern about moving it out is that we then depend on the relative paths of config and whatever new sql dir remaining the same. We could have a separate sql dir or one per source if thats more useful for organization. Either or leaving as is seems fine to me.

Maya - is there a better place I can put the aggregation SQL file? Seems like it doesn't belong in the config folder, but I'm not sure where it should go and how to make sure the terraform config can find the file if it's in a parent or sibling directory

Yea. My concern about moving it out is that we then depend on the relative paths of config and whatever new sql dir remaining the same. We could have a separate sql dir or one per source if thats more useful for organization. Either or leaving as is seems fine to me.

Maya - is there a better place I can put the aggregation SQL file? Seems like it doesn't belong in the config folder, but I'm not sure where it should go and how to make sure the terraform config can find the file if it's in a parent or sibling directory

Yea. My concern about moving it out is that we then depend on the relative paths of config and whatever new sql dir remaining the same. We could have a separate sql dir or one per source if thats more useful for organization. Either or leaving as is seems fine to me.

I'll leave for now, we can re-evaluate if this gets out of hand

Maya - is there a better place I can put the aggregation SQL file? Seems like it doesn't belong in the config folder, but I'm not sure where it should go and how to make sure the terraform config can find the file if it's in a parent or sibling directory

Yea. My concern about moving it out is that we then depend on the relative paths of config and whatever new sql dir remaining the same. We could have a separate sql dir or one per source if thats more useful for organization. Either or leaving as is seems fine to me.

I'll leave for now, we can re-evaluate if this gets out of hand


[Feature Request] Allow string union to override basic string type

When merging interfaces, a successive use of the same field must have the exact same value typing. This is good, except when the desired effect is narrowing. For example:
interface MessageDescriptor {
    id?: string | number;
    description?: string | object;
    defaultMessage?: string | MessageFormatElement[];
}

Let's say that is provided by a third party library and I want to provide a more specific set of string IDs in my project for better intellisense:
import 'react-intl'

declare module 'react-intl' {
  interface MessageDescriptor {
      id?: 'hi' | 'hello' | number;
  }
}

"hi" is certainly a string, just a more specific string. TS should analyze the effective type and if that at least matches the original or is more specific, the overwrite should be allowed.

This is too confusing to reason about because it would imply some very, very precarious reasoning about file ordering to figure out what "the original" type is when more than one of these changes occur.

This should be reopened.

Frankly it's a bug that the above code doesn't work. Very counterintuitive.

@RyanCavanaugh - if this won't work, maybe you can think of a workaround for this pattern?
Basically as a tool author I need a way of letting the end-user of my tool override (usually narrow) some type I'm using within the internals. In some cases, it could be doable using generics, but in some other cases where the type is used throughout many different function calls, it may not be possible/easy. Letting the user just override the type and having clear instructions on how to do so would be a very easy solution.
Thanks so much!

My issue is I'm running into various TS problems where our types in Tamagui are making things "too complex" or too deep. And we have a feature where users only really use this for types, but we also can't allow overriding at just the type level because of this constraint either :/


Fix crash on removing added sibling in _ready

If a Node that was added to the tree via add_sibling() was removed/reparented in its _ready() function, it would cause a crash.
Example:
extends Node

class MyNode extends Node:
	var new_parent = Engine.get_main_loop().current_scene
	func _ready() -> void:
		reparent(new_parent)

func _ready() -> void:
	await get_parent().ready
	for i in 3:
		add_sibling(MyNode.new())

Could you provide a reproduction project?

Better yet a formal bug report to track this in case this doesn't solve it

Could you provide a reproduction project?

Updated description with reproduction example

Awaiting parent ready signal seems like a huge no-no here to me

It's not safe, it's explicitly saying that you can't add children if you try it:

Parent node is busy setting up children, add_child() failed. Consider using add_child.call_deferred(child) instead.

While we should prevent the crash, this example looks confusing. What's the real life need for this kind of logic?

Have a node in a scene;
When it parents become ready, add 3 siblings;
But not really, because as siblings become ready, we move them elsewhere.

I don't understand the intent here, and as mentioned ready is not the best time to add children to a node. We should probably add a check to add_sibling, similar to the one we have in add_child.
As for the crash, we likely need to catch its condition with an ERR_* macro and prevent further execution.

get_parent().add_child shouldn't work either, it should be blocked the same way. If this doesn't happen, there are either other differences or a bug.
I think for now we can go with https://github.com/godotengine/godot/pull/78847 and then re-evaluate if there are still problems that cause crashes for your example. Then we can either update this PR to address them, or close it as superseded if https://github.com/godotengine/godot/pull/78847 ends up fixing all of it.

As far as I understand https://github.com/godotengine/godot/pull/78834#discussion_r1246620135, the bug will not be completely fixed by #78847, which solves a related problem.
As mentioned above, it should be investigated, if a data.blocked++-data.blocked---section helps fixing this bug without introducing any problems.

get_parent().add_child shouldn't work either, it should be blocked the same way. If this doesn't happen, there are either other differences or a bug.

I think the example I used in the description has caused some confusion, especially in my use of running the example in the  _ready function and using await get_parent().ready. These may be bad practice but do not affect the issue at hand. Here's a simpler MRP that avoids these problems:
extends Button

class MyNode extends Node:
	func _ready() -> void:
		get_parent().remove_child(self)

func _pressed() -> void:
	add_sibling(MyNode.new())

As mentioned above, it should be investigated, if a data.blocked++-data.blocked---section helps fixing this bug without introducing any problems.

The only way to address this with data.blocked is to ensure that a parent is always blocked when adding a child.
I tried this by adding a blocking clause around _add_child_nocheck in Node::add_child, and it does work, but this is a very significant change that would no doubt break compatability in countless projects, as I personally find adding a child in the _ready function to be a common operation.

Can't reproduce the crash in 4.3.

I can reproduce a crash with the script in the OP on 4.3-rc2 and latest master<PHONE_NUMBER>2450494683929b82c450e95851a0bf):
ERROR: Index p_index = 1 is out of bounds (count = 1).
   at: remove_at (./core/templates/local_vector.h:75)
ERROR: Index p_index = 2 is out of bounds (count = 1).
   at: remove_at (./core/templates/local_vector.h:75)
ERROR: FATAL: Index p_index = 2 is out of bounds (count = 2).
   at: operator[] (./core/templates/local_vector.h:177)

================================================================
handle_crash: Program crashed with signal 4
Engine version: Godot Engine v4.3.rc.custom_build<PHONE_NUMBER>2450494683929b82c450e95851a0bf)
Dumping the backtrace. Please include this when reporting the bug to the project developer.

-- END OF BACKTRACE --
================================================================

Looks like the crash does not happen if the node is a child of scene root, only when it's nested.

Place some part, and add it to the world with add_sibling.

Why are you adding the part with add_sibling() instead of get_parent().add_child()? The crash happened, because add_sibling() changes node index. Unless you care about the specific index, you should use add_child() and add_sibling() should result in an error.


drivers: modem: modem_cellular: extend CMUX timeout

This commit adds a timeout of 300ms to the generic (gsm_ppp) init chat script. This delay is required for some modems (discovered on a Telit ME910G1-WW) to allow it to enter CMUX mode. Without this delay, the modem simply refuses to respond to any CMUX commands.

@rerickson1 Comment added. An issue is nearly created and will be linked to this PR shortly as well :)

Would it make sense to make the delay Kconfig-configurable?

@ycsin  There is a "default" or minimum delay of 100ms, we can make this configurable with Kconfig, but I am unsure if this change is a feature or a bugfix :) WDYT?

but I am unsure if this change is a feature or a bugfix

To me it is a bugfix, cc @jhedberg


Implement subcollection support in Firestore

User request: https://stackoverflow.com/questions/62043573/how-to-fetch-documents-from-subcollection-in-firestore-using-spring-data/
Currently we support embedded collections, but Firestore has one more type of associated collections, called subcollections.  That feature allows loading the collection independently from the parent document.

Is the only way today to use firestore subcollections to use FirestoreTemplate or is it possible to create a Repository extending FirestoreReactiveRepository that supports subcollection documents?
Looking at the sample code and the PR, it seems the answer is the former, but i want to confirm if i'm missing something

@theHilikus you are right, currently we only support FirestoreTemplate way. Please create a ticket if you are interested in an alternative way of accessing subcollections, so we can discuss it.
And also, contributions are welcome!
Thanks

Partially fixed in #2415. Please re-open if needed.


code: frontend setup

This PR resolves the issue #21
Kindly review the PR and merge it under "hacktoberfest-accepted" label

@devvspaces Kindly add the hacktoberfest-accepted label !

you see this, it's not required, i gave you a review


Keep the attachments attached

This is basically a duplicate of #20, with tests adjusted for expected (sane) behavior.
There should probably be more tests. The one right now only checks that the attachment is saved along with the document on creation. Additionally, we want to ensure that the attachments are not lost when the document is updated, unless we explicitly delete some/all of them.

Yeah, I'm not really sure what the "sane" behavior is here. To be honest, I haven't paid much attention to attachments in relational-pouch, and I've mostly let the community handle those things since I thought it was an edge case.
Your changes make sense to me, though. The new test definitely looks saner than the old test. You're right that we need more tests, and I would appreciate any PRs you want to write that have those tests. :)


Add a .NET web app building docker file

Goal is to have a Dockerfile that results in an image capable of building .NET and .NET Core web apps
For image building and running see web/readme.md

#Hello @heaths. Please review.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: gparlakov sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Thank you for your contribution!

Thank you for your contribution!

I'd like to thank you for the initial effort. It was very helpful and gave me the tool I needed for the job I could not do otherwise. For some reason on my work PC visual studio (and all the tooling surrounding it) can not be installed and so this dockerfile/image actually helped me build the backend of our app.

Sorry to hear that. If you're getting errors during install, be sure to file a feedback ticket and we can have a look.


extensions.cmake: add two cc/compile_options callgraph comments

This would have saved me about an hour exploring the code and piecing it
together.
Signed-off-by: Marc Herbert<EMAIL_ADDRESS>

but this feels like the sort of thing that is easy enough to grep for

Absolutely; if everyone interested has about an hour to waste. Being new to this code this is approximately how long it took me. Don't forget there are many more functions than the ones I selected.
Now of course this entire framework should be some day properly documented in a new section in the developer guide, think something like PR #13805. However that's a longer term documentation project; this PR is just a quick fix to save questions on Slack and/or wasting time.

Improvements to the documentation are always welcome.
Did you discover this documentation:
https://github.com/zephyrproject-rtos/zephyr/pull/15377/files#diff-e64e7d3f59d40d3325fa7a458c531dd3R337
and would that have helped?
AFAICT what this ascii art is trying to convey is (attempted) documented there.
Perhaps the zephyr_* API should be referencing the zephyr_library_* API to ensure it is easier to discover.
In any case, we don't want to convey the same thing differently in two different places, so perhaps the ascii art should be moved to the zephyr_library_* API docs.

Did you discover this documentation: https://github.com/zephyrproject-rtos/zephyr/pull/15377/files#diff-e64e7d3f59d40d3325fa7a458c531dd3R337 and would that have helped?

(This links fast forwards to the 1.2 zephyr_library_* section in the same file)
Yes, I did read these comments. And then scroll up and read others. And then scroll down and read more. And then used grep and read more. And then I got tired of getting lost and drew this tiny "map"/cheat sheet. At the end of it all I thought it could save others time hence this PR.
Section 1.2 zephyr_library_ is specific to (surprise) zephyr_library_ functions and located at line 330 so probably not the best introduction to the grander zephyr_ scheme of things?


Camera permission dialog (EXPOSUREAPP-9612)

Camera permission dialogs

Ticket
https://jira-ibs.wbs.net.sap/browse/EXPOSUREAPP-9612

@mtwalli wouldn't it be better to check with shouldShowRequestPermissionRationale() if the user wants to see such a dialog, like it is recommended here?

shouldShowRequestPermissionRationale does not differentiate when user can be asked again  and when permission is denied permanently. CameraPermissionProvider was not introduced to workaround this , cause the dialog should be presented when user denied the permission permanently. Additionally shouldShowRequestPermissionRationale() is actually used:
https://github.com/corona-warn-app/cwa-app-android/blob/fa7780f1eafd587179f5b8d1e45d1647e731ff77/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/qrcode/ui/QrCodeScannerFragment.kt#L48-L59

@mtwalli wouldn't it be better to check with shouldShowRequestPermissionRationale() if the user wants to see such a dialog, like it is recommended here?

@marcauberer shouldShowRequestPermissionRationale does not differentiate when user can be asked again and when permission is denied permanently. CameraPermissionProvider was not introduced to workaround this , cause the dialog should be presented when user denied the permission permanently. Additionally shouldShowRequestPermissionRationale() is actually used:
https://github.com/corona-warn-app/cwa-app-android/blob/fa7780f1eafd587179f5b8d1e45d1647e731ff77/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/qrcode/ui/QrCodeScannerFragment.kt#L48-L59

@mtwalli okay. Did not consider that. Then everything is fine 👍🏼


Commit d74fe33 breaks project post-build execute steps

Since commit d74fe33 (Run cbuild2cmake per context), post-build execute steps in projects are no longer executed. Pre-build steps that create files needed by the build are still executed.
This is because all execute steps are created as separate targets in the "superlists" CMakeLists.txt, but cbuild now invokes only the project+context target, which misses the post-build step targets.
Reverting commits 6059425 and d74fe33 fixes the issue when building all contexts (default behaviour of cbuild). However, compiling single projects with --context does not run post-build steps (and also did not run post-build steps before the commit that broke this).
Expected Behaviour

Running cbuild --cbuild2cmake mysolution.csolution.yml should build all projects and their pre- and post-build steps.
Running cbuild --cbuild2cmake mysolution.csolution.yml --context myproject+context should build that project and its pre- and post-build steps.

Actual Behaviour

Running cbuild --cbuild2cmake mysolution.csolution.yml builds all projects and their pre-build steps, but no post-build steps (this was working before d74fe33)
Running cbuild --cbuild2cmake mysolution.csolution.yml --context myproject+context builds that project, but no post-build steps (this never worked)

Example Executes Step
    - execute: Generating application hexdump
      run: xxd $input$ $output$
      input:
        - $bin()$
      output:
        - $OutDir()$/application_hexdump.txt

Potential Fixes
The most reliable fix is probably to create a separate CMake target that has dependencies on the main build step and all pre- and post-build steps for a project, and have cbuild invoke those targets instead of just the main build step target.
Since execute steps are not associated with their corresponding projects at the moment in the .cbuild-idx.yml (the project/context name is only available as part of the execute string) this might need a bit of restructuring to implement properly.

@EaselinkBachmann Thanks for reporting this.
Calling e.g. cmake --build tmp --target all or omitting the --target option after building the selected contexts should fix the regression concerning the build of the whole solution (or context-set). We should provide a PR soon.
As it is implemented today an execute node is not defined as pre- or post-build step, the point in time when it is triggered depends only on declared inputs and outputs.
Specifying a context triggers the build target of such context and its dependencies, but not other targets that depend on it.
In this new scenario a specific post-build execute could/should be called with the -t option, for example cbuild <solution>.csolution.yml -t <my_post-build_step>, which would trigger all dependencies needed to generate the output of such execute.
In the Open-CMSIS-Pack meeting from 2024-05-07 at the minute 41:00 I started demoing the executes nodes and at about 53:50 I spoke about the calling "post-build steps" in this new concept.

I can confirm that building the all target of the generated CMake project works and understand that execute nodes are currently only implicitly added to the build command.
Manually calling the CMake target works, but requires knowing the exact absolute path of the output file for execute nodes with outputs, and requires using the mangled target name (project+context-Executes_description) for execute nodes without explicit outputs. It also makes it really inconvenient to manually trigger multiple independent post build steps for a project if building all other projects is not intended.
IMO the description of execute nodes on projects in the spec implies that execute nodes are automatically run as part of building a project/context, as nothing to the contrary is specifically stated.

Calling e.g. cmake --build tmp --target all or omitting the --target option after building the selected contexts should fix the regression concerning the build of the whole solution (or context-set). We should provide a PR soon.

This works, but would potentially trigger the whole project to be built twice if one of the pre-build steps is an execute node with the always: flag.

Specifying a context triggers the build target of such context and its dependencies, but not other targets that depend on it.

This seems reasonable from an implementation strategy point of view, but is unexpected for users given the structure of the project yaml files (a user might expect execute nodes from the project yaml file to be run when that project is built).

In the Open-CMSIS-Pack meeting from 2024-05-07 at the minute 41:00 I started demoing the executes nodes and at about 53:50 I spoke about the calling "post-build steps" in this new concept.

Thank you for the resource, I will look into it.

The regression was fixed in https://github.com/Open-CMSIS-Pack/cbuild/pull/256 and will be part of the upcoming CMSIS-Toolbox release 2.5.0.
Triggering "post-build" executes described at project level as part of a context build should be possible when generating them in CMakeLists using ExternalProject_Add_Step for the related contexts instead of custom target/command. It should be scheduled for a future release.

The regression was fixed in #256 and will be part of the upcoming CMSIS-Toolbox release 2.5.0.

Thanks!

Triggering "post-build" executes described at project level as part of a context build should be possible when generating them in CMakeLists using ExternalProject_Add_Step for the related contexts instead of custom target/command. It should be scheduled for a future release.

Yes, from local testing I can confirm this works. It also works to add an empty ExternalProject_Add_Step(${CONTEXT} executes DEPENDEES build) with no COMMAND that then gets dependencies assigned using add_dependencies(project+context-executes some-executes-item). That way only minimal changes to Maker.BuildDependencies() (and the extra step in superlists) are needed in cbuild2cmake. After changing this, triggering the all target after build seems to no longer be required.


SACT for accelerating convolution

I have checked your code and find in file flopsometer.py, function conv2d you don't actually accelerating convolution but just calculate the FLOPS. However, even if FLOPS is less, you cannot say that the convolution operation must be accelerated. Because in convolution, most of the time cost is IO, for example, the im2col operation.

I explored the achievable speedups for perforated convolutional layer (that only computes the outputs in a subset of positions) in PerforatedCNNs paper (NIPS 2016). Take a look at Table 5 at page 11. You can see that the empirical speedup is about 80% of the theoretical one. In that paper, I used im2col+gemm convolution implementation. I did not implement an efficient perforated convolutional layer for the SACT paper, because matching the speed of the modern CuDNN versions written in GPU assembly is infeasible for me.

Also, I think that convolutions are compute bound nowadays. E.g., the first GPU convolution kernel written in assembly, maxDNN, claims that

maxDNN reaches 96.3% computational efficiency on typical deep learning network architectures

Interestingly, you can go above 100% efficiency by using Winograd algorithm, see Scott Gray's blog post. I am reasonably sure that one can implement a perforated convolutional layer using both the implicit GEMM and Winograd algorithms, although in the Winograd case the perforation mask would have to be tiled into k times k blocks.

Hi, @mfigurnov .
Great work!
I just have a more or less relevant question.
In your paper you said this:
An alternative approach to using the perforated convolutional layer is to tile
the halting scores map. Suppose that we
share the values of the halting scores h l within k × k tiles. For example, we can perform pooling of h l with a kernel size k × k and stride
k and then upscale the results by a factor
of k. Then, all positions in a tile have the same active flag,
and we can apply the residual unit densely to just the active
tiles, reusing the commonly available convolution routines.
k should be sufficiently high to mitigate the overhead of the
additional kernel calls and the overlapping computations of
the first 1×1
convolution. Therefore, tiling is advisable
when the SACT is applied to high-resolution images

I am not quite getting it, can you, please elaborate if you have spare time or maybe you have
a reference to some material where a similar approach is used?
I understand the dilation and perforated convolution part, but this one is not obvious for me.
Is it an approximation and how do you choose k?
Thank you.

Hi @warmspringwinds, thank you!
The idea is quite simple. In the basic version of SACT you have a H x W x C feature map and produce a H x W active mask. Therefore you need to use perforated convolutions to get speedup. Now, let's say you first produce a h x w active mask, h << H, w << W, and then upsample/tile it. In the corner case when h=w=1, you'll get ACT which is simple to implement (just skip the layer if the only value of the active mask is zero). For larger h and w, you split the feature map into chunks of size (H/h + k) x (W/w + k) x C, where k is an overlap that ensures that there are no "border effects" around the edge of the chunk (maybe you can ignore this overlap and still get okay results). Then, you apply the standard residual unit only to the active chunks and stitch the outputs to get the final output feature map. Maybe someone did something similar for processing of very high resolution image using convnets, where a whole feature map wouldn't fit into GPU memory, but I can't give you a reference out of top of my head.
I did some preliminary experiments with this approach. It seemed to work fine. You can take a look at the code from an older version that I used: https://github.com/mfigurnov/sact/blob/f3dbaaeae1f420669e6f839ef38811fa2412d182/python/resnet_act_utils.py#L137 . resolution there is the h = w from the text above.