IP2Tor Down?

Is the IP2Tor Service down? Had IP2Tor working yesterday but cannot get to my DuckDNS domain today.

In preperation to the final v1.6 release we are closing down the bridge we had running on AWS (which was for testing the relase candidate). Changing the bridge should work like: Go to SUBSCRIBE and List all Subscription - cancel the old IP2TOR Bridge and the setup a new one that directs to the same tor address. Check if your DuckDNS is updating the new IP (if not please report back). The LetsEncrypt should normally stay valid during that process.

Additionally to that there really was a bug in the activation script: https://github.com/frennkie/django-ip2tor/commit/662d7b9ec1133f509ae7c44f1d95c1d9670da137#diff-a06799e4473b486e72da6187a734011b
So thanks for the info.. 😉

Thank you.  As far as I can tell it's working now.
BTW, I tried to follow the instructions to self host and things got a
little fuzzy.
Here's where I gave up...
"Thirdly you need to register the Hosts in at least one Shop first to get
the credentials that are needed to retrieve the specific information for
this Host from the Shop database and to make updates (e.g. mark a Bridge as
active).
Don't forget to allow the TCP port ranges on your firewall (both local and
network/cloud based)."
On Wed, Jul 29, 2020 at 1:41 AM frennkie<EMAIL_ADDRESS>wrote:

Additionally to that there really was a bug in the activation script:
frennkie/django-ip2tor@662d7b9#diff-a06799e4473b486e72da6187a734011b
https://github.com/frennkie/django-ip2tor/commit/662d7b9ec1133f509ae7c44f1d95c1d9670da137#diff-a06799e4473b486e72da6187a734011b
So thanks for the info.. 😉
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/rootzoll/raspiblitz/issues/1389#issuecomment-665443903,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AASXQDUAWXIPLJG5XVFEL53R56ZBLANCNFSM4PLC6LSQ
.

Did you want to setup a Shop where people can pruchase such Bridges?
Or do you have a VPS and want to use it to host one or two bridges just for your self?

To start out I'm just trying to host my own, but i you need more publicly available hosts I would be willing to provide one.

The idea is to get enough people using the Fulmo IP2Tor Shop and paying a few sats so that the virtual machines hosting these are paid for. So if like 50 people pay 10 cents a month that would cover the ~ 5€ for a cheap VPS.
If you have a host with public IP all you need is this script: https://github.com/frennkie/django-ip2tor/blob/master/scripts/ip2torc.sh


Add ability to force skip auto-init

This is a workaround for https://github.com/gruntwork-io/terragrunt/issues/1545
Sometimes, we need to be able to run a terraform command with partial initialization (in this case, only the state needs to be initialized and nothing else). However, terragrunt attempts to detect full initialization of modules and refuse to run terraform commands even when the --terragrunt-no-auto-init flag is passed in. This is problematic for the issue linked above as now there is no way to run the required upgrade command to finish initialization.
To workaround this, this PR introduces another flag --terragrunt-force-skip-init that will bypass the error message.

I'm sure I'm missing something obvious, but why doesn't the existing terragrunt-no-auto-init skip auto init?

Are you suggesting that we change the terragrunt-no-auto-init to avoid this error message in the first place?

Ok implemented the version where no-auto-init doesn't error out (https://github.com/gruntwork-io/terragrunt/pull/1549). I used a separate PR + branch in case I misunderstood and we want to come back to this flavor. I'll close this PR for now (but we can reopen if we want this version).


Write "Random models of Boolean networks"

See #55 for context.
This should describe various random models of Boolean networks that we are considering.
The basis are N-K networks. However, we can probably just fix K=2 from the beginning, as this is where the critical transition occurs.
However, we need to differentiate between networks with constant in-degree and exponential/Poisson in-degree.
The second aspect is the considered update functions. The "baseline" are completely random functions. However, we would like to also test something more biologically realistic like locally-monotonic functions. Since these are hard to generate randomly, we might want to consider something like threshold old nested-canalising functions.

The paper is done. Let's close this.


⚠ GLDDNS Server (ns2.glddns.com) has degraded performance

In 5d6229e, GLDDNS Server (ns2.glddns.com) (ns2.glddns.com) experienced degraded performance:

HTTP code: 200
Response time: 632 ms

Resolved: GLDDNS Server (ns2.glddns.com) performance has improved in 5fcbcbe after 7 minutes.


listening <IP_ADDRESS>

listening <IP_ADDRESS> work well
listening <IP_ADDRESS> not work
config yml can change it ? thank you so much,

What you are looking for is the bindAddr property in the config.yml. Thanks for your interest in this project. In the future, use issues only for bugs.
Slack community


Possibility to support RFT3D?

RFT 3D is commonly used in neuroscience, is it possible to support it in this package? :P

Hi Losses,
Thanks for writing! Our efforts are currently directed to writing a manuscript of the software and finalizing the existing code.
Support for volume data can be added but I cannot promise anything for the near future.
Best regards,
Tuomas

😂 Thanks for your reply


Fixes 77: add gpg key and verification option

Unhides the GPG key form in the Edit and Add modals.
Adds a radio button for the metadata verification option.

I was thinking GPG Key and the verification option should be their own components, but it seems like that would be more than a little disruptive to the current formik stuff. I welcome suggestions there (and anywhere).

https://issues.redhat.com/browse/HMSCONTENT-77


Code up EN track check

Code up the constant value check described at http://www.metoffice.gov.uk/hadobs/en3/OQCpaper.pdf page 7. The program file should be called EN_track_check.py and be put into the qctests directory. It should follow the structure shown in EN_range_check.py.
This is quite a challenging check to code up as the check needs to use information about other profiles rather than just the profile itself. Therefore the whole list of profiles will need to be passed in as an additional argument.

I'll have to look a bit closer, but instead of passing as an argument, we could load the list of profile headers (just the headers, not the level data) as part of the global datastore being introduced in #84 for WOD_range; that way, we avoid having to add special cases or extra kwargs to the main routine to support individual tests. Not necessarily better - just an alternative that I think might help avoid blowing up the complexity of the main routine in future.

resolved in #93.


Todo: @ and ~

In sxhkd man page:
If @ is added at the beginning of the keysym, the command will be run on key release events, otherwise on key press events.

If ~ is added at the beginning of the keysym, the captured event will be replayed for the other clients.

In the config_devel branch, we've already implemented checking for those prefixes.
As you can see in the struct KeyBinding, there are two bool items send and on_release.
Calling .is_send() or is_on_release() method on struct KeyBinding or Hotkey returns the value respectively.
Need help to actually implement this feature to daemon.rs

@angelofallars @Shinyzenith @vainiovano
Please check config_devel branch when convenient

I'll work on this later today if when I get time :D

I forgot to handle the case where a keysym has both prefixes 🤦


Update macos setup script to account for changes to screenshot shortcuts

With Firefox shortcut keys, there is conflict with some of the default Mac screenshot (incl. TouchPad screenshots).
Research links:
https://stackoverflow.com/questions/21878482/what-do-the-parameter-values-in-applesymbolichotkeys-plist-dict-represent
https://web.archive.org/web/20141112224103/http://hintsforums.macworld.com/showthread.php?t=114785
https://gist.github.com/stephancasas/74c4621e2492fb875f0f42778d432973

Add'l links:

https://zameermanji.com/blog/2021/6/8/applying-com-apple-symbolichotkeys-changes-instantaneously/
https://alexfedoseev.com/blog/post/fight-for-your-hotkeys


Fix a ruby warning when executing with bundle exec rubocop in this repository

check_commit.rake requires 'English' but when doing bundle exec rubocop this repository this file will also be evaluated.
This also happens in the rubocop repository (my main motivation here) if rubocop-ast is in the parent folder because of this line in its Gemfile: https://github.com/rubocop/rubocop/blob/66c8276b5d9e60fed1fb8d937649c3c153e5037d/Gemfile#L29-L30
$ RUBYOPT=-w bundle exec rubocop -V
.../rubocop-ast/rubocop-ast.gemspec:18: warning: global variable `$RS' not initialized
1.62.1 (using Parser <IP_ADDRESS>, rubocop-ast 1.31.2, running on ruby 3.3.0) [x86_64-linux]
  - rubocop-performance 1.20.2
  - rubocop-rspec 2.27.1

Yeah, sure. Updated

Can you update this PR so I can finally have it merged?

Yeah, sure. I changed the solution, can't actually use $/ since there is a cop for discouraging these constants. Instead I use lines(chomp: true) which results in the same thing, $/ is the default separator.

Thanks for addressing this so quickly! 🙇


Add api key restriction for API and web app

Description
Changes to API module to make api private (x-api-key)
Changes to WEB module to allow setup of API key at launch of application.
Related issue(s) (if applicable)

Fixes #78

Checklist
Generic

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Development

[x] Have you added comments to all relevant changes within the code?
[ ] Have you lint your code locally prior to submission?
[x] Have you formatted (Python Black and Prettier) your code locally prior to submission?

Testing

[ ] Have you created new tests for your submission?
[ ] Does your submission pass all tests?
[ ] Does your submission improve or at the very least kept code coverage at the same percentage?

Documentation

[x] Have you added or changed any and all applicable documentation?

Thanks for the change @miki79... much appreciated.


make openapi tags align with rest of aca-py

Signed-off-by: sklump<EMAIL_ADDRESS>

Codecov Report

Merging #900 (b1d0bd7) into master (5687d28) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #900   +/-   ##
=======================================
  Coverage   98.90%   98.90%
=======================================
  Files         298      298
  Lines       16746    16746
=======================================
  Hits        16562    16562
  Misses        184      184

Codecov Report

Merging #900 (b1d0bd7) into master (5687d28) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #900   +/-   ##
=======================================
  Coverage   98.90%   98.90%
=======================================
  Files         298      298
  Lines       16746    16746
=======================================
  Hits        16562    16562
  Misses        184      184


Make uuid middleware work with other service-registry than mdns

See https://github.com/owncloud-docker/compose-playground/blob/master/examples/services/add-user/add-user.go#L17 for an example. Maybe there is even a better way which does not require instantiation of a new service?
Micro controls the service-registry type with the environment variable MICRO_REGISTRY. This setting does not work because the proxy is not wrapped in a micro-service.
Two possible routes to fix this:

Use the micro way and wrap the proxy in to a service.
Manually instantiate a dummy service and use it`s client. (like in the example above)

@IljaN @butonic this is an old issue that was transferred from the archived ocis-proxy repo a few weeks ago.
Please close if no longer relevant.


Cannot Create Nullable Computed Properties

✏ Describe the bug
You cannot create computed properties that are nullable.
↪ To Reproduce
Provide us a pest test like this one which shows the problem:

it('cannot have nullable computed properties', function () {
    class TestDataA extends Data
  {
      #[Computed]
      public ?string $url;

      public function __construct(
          public array $stuff,
      ) {
          $this->url = $this->stuff['link_url'] ?? null;
      }
  }

class TestDataB extends Data
  {
      #[Computed]
      public string $url;

      public function __construct(
          public array $stuff,
      ) {
          $this->url = $this->stuff['link_url'] ?? null;
      }
  }

    // TestDataA Throws an exception for Cannot Set Computed Property

   // TestDataB works correctly because we make the ?string non-nullable

   // However I would like to use this for data where `link_url` key might not be in '$stuff' and return null in that case

    dd(
TestDataA::validateAndCreate([
  'stuff' => ['link_url'=> 'google.com']
]),

TestDataB::validateAndCreate([
  'stuff' => ['link_url'=> 'google.com']
])
});

✅ Expected behavior
I would expect computed properties to be allowed to be set to nullable. Optional is not the same.
🖥 Versions
Laravel: 10x
Laravel Data: 3.7
PHP: 8.2

I'm having the same issue. I get an error message
Cannot set property UserData::$phone because it is a computed property.
But the phone property can be null so it should allow it to be nullable
/** @var string|null  */     #[Computed]     public ?string $phone;

Yes agreed, seems like there are real world use cases where this behavior would be useful. I am having a hard time thinking of reasons why we may not want to allow this.

Will be fixed in the next release, not really a reason why we didn't support it.


exp/inotify: Read hangs, AddWatch, RemoveWatch fail on recreated directories

Before filing a bug, please check whether it has been fixed since
the latest release: run "hg pull", "hg update default", rebuild, and
retry
what you did to
reproduce the problem.  Thanks.

What steps will reproduce the problem?
- If I am watching a directory, and delete it, and recreate it,
  and watch it again, any events after that are hosed:
  - the event.Name is incomplete, with the path stripped out e.g.
    instead of /home/myname/a/b/c/d.txt, I get /d.txt
    instead of /home/myname/a/b/c/, I get ""
  - RemoveWatch fails with message: invalid argument
  - Close() doesn't really close. Most times, the reader goroutine hangs.

Which compiler are you using (5g, 6g, 8g, gccgo)?
8g

Which operating system are you using?
Ubuntu Linux 2.6.38-12-generic #51-Ubuntu SMP 32-bit GNU/Linux

Which revision are you using?  (hg identify)
6abf04c86097+ tip

Please provide any additional information below.

fsnotify has been removed from exp


Connect button doesn't work on Microsoft Teams

Due to the lack of support of a SigninCard, clicking the button doesn't open a URL, as one would expect. The C# AuthBot had also noted this issue and makes use of a ThumbnailCard: https://github.com/MicrosoftDX/AuthBot/blob/master/AuthBot/Dialogs/AzureAuthDialog.cs with a button that has an associated openUrl action.

I'm planning on changing this to ThubnailCard in the new Flows feature

@mattdot I have a fix ready, if you're ok with taking a PR :)

Sure


About the ImageNet zero-shot performance with the released models

Hi, CLIP authors,
Really great work! Appreciate much for releasing the code!
Recently, I am trying to evaluate the released two models (RN50 and ViT-B/32.) on imagenet validation set. What I can get with prompt engineering without ensemble are shown below:
ResNet-50 top-1: 55.09, top-5: 83.59
ViT-B/32 top-1: 59.06, top-5: 85.59
Not sure whether these numbers match those on your side. As a reference for us to do trial-and-errors, can you report the validation accuracies for these two models?
thanks,
Jianwei

We're planning to release a code example for replicating the paper's zero-shot ImageNet results that can be used as a reference for helping with this, apologies for not including sufficient details in the paper!

We're planning to release a code example for replicating the paper's zero-shot ImageNet results that can be used as a reference for helping with this, apologies for not including sufficient details in the paper!

Hi, Alec, thanks for sharing this information. looking forward to see the updates!

Hi, Alec, thanks for sharing this information. looking forward to see the updates!

Just updated a code example here. You can also open in Colab. Hope this helps!

Just updated a code example here. You can also open in Colab. Hope this helps!

Hi, @jongwook , this is fantastic! I will follow your Colab to reproduce your numbers!

Hi, @jongwook , this is fantastic! I will follow your Colab to reproduce your numbers!

Just updated a code example here. You can also open in Colab. Hope this helps!
Top-1  55.73，Top-5  83.45？

Hey just had a quick clarifying question, the results of the notebook you released achieve a zero-shot accuracy of 55.73% but Table 17 of the paper (last page) mentions that ViT-B/32 can achieve a 63.2% accuracy. Do you know how I can recreate this performance?

Sorry it's confusing, the notebook evaluates on ImageNetV2 since it has a public evaluation set. When evaluated on ImageNet it is within noise of results reported in Table 17.
In the notebook this is explained below:

The ILSVRC2012 datasets are no longer available for download publicly. We instead download the ImageNet-V2 dataset by Recht et al..
If you have the ImageNet dataset downloaded, you can replace the dataset with the official torchvision loader, e.g.:

images = torchvision.datasets.ImageNet("path/to/imagenet", split='val', transform=preprocess)

Update: had changed imagenetv2 to imagenet validation set, and verified that the performance matches the reported numbers in Table 17. Thanks!

Hello, I followed this code https://github.com/openai/CLIP/blob/main/notebooks/Prompt_Engineering_for_ImageNet.ipynb to use the templates ensemble for zero-shot prediction on imagenet, the reproduced result is 57.81%, which matches the reported 55.73% in the notebook. However, this result is far from the 76.2% accuracy reported in Table 1 in the paper. Am I missing something?

Hi, I noticed in the official CLIP paper, it says you get a 77.2% accuracy on zero-shot CLIP, I assume this is evaluating the accuracy over the subset of ImageNet classes ImageNet-A uses (200 classes) and not the full 1000, otherwise I would expect a much lower result. The second thing is that following this code, and using only that 200 subset of classes, I am getting 70.7% accuracy.
I was wondering if anybody could help, thanks.


Allow for data licenses other than CC0

Fixes issue #35

Not sure if this is my preferred method for fixing this.
My understanding is that you allow any value of the license.
In my case it is my cdx file aggregator which hardcoded sets the license so from my point of view it is completely arbitrary.
Not sure what would be a better alternative but to force the value of CC0 always. But maybe my case is special.

Not sure if this is my preferred method for fixing this. My understanding is that you allow any value of the license.
In my case it is my cdx file aggregator which hardcoded sets the license so from my point of view it is completely arbitrary.
Not sure what would be a better alternative but to force the value of CC0 always. But maybe my case is special.

@flemminglau as mentioned in my issue comment, I do not think we should be changing a data license.  If someone (or something) places a license on data, that should be carried forward to any transformation of the data. I know if I put a license on something and someone (or something) translated it and changed the license, I would not be happy.
If indeed the assignment of the MIT license is arbitrary, perhaps you can have the source utility that creates the CDX documents generate a compatible CC0 license.


[Bug] Inline Solve preview has incorrect span in list items

Describe the bug
When using an inline solve in a list element, the span of the inline solve is offset incorrectly in preview, though the actual replacement works properly.
To Reproduce
Steps to reproduce the behavior:

Open an Obsidian note.
Insert the following text

- Foo s`1 + 100`

It will appear as follows

- Foo s`1 + 10 = 1010`

In particular the last zero is actually the final zero of the 100, not part of the answer. If you use a numbered list instead, the offset is two characters instead of one.

Expected behavior
The inline solve looks normal in list items!
Screenshots

Obsidian

Version: 1.0.1
Platform: Desktop, Mobile

Hello! Thanks for reporting, that's a silly mistake from me. Rest assured I've fixed it and 1.0.2 patch has been released.

Thanks so much, Liam! That was super quick and I can absolutely confirm the fix!


Hot module replacement compatibility

Hi there,
I've switched to JIT module for a project to test it out and the project is using webpack encore. Does this support HMR?  It works in npm run watch mode, but in HMR it only gets the initial styles but any change is not picked up, I have to restart the server to see changes.

With Laravel Mix it just works fine with HMR.

I have exactly the same issue. Even when using the WatchExternalFilesPlugin like this: .addPlugin(new WatchExternalFilesPlugin({         files: [             './templates/**/*.html.twig'         ]     })).
It does trigger a build on changes to the templates but somehow the tailwind compiler is not picking up the changes.

Ah, figured it out! You have to make sure you're in DEV environment. You can do it like so NODE_ENV=development encore dev --watch.

Hey! Thank you for your bug report!
Much appreciated! 🙏
If you setup HMR, then it should work as expected.
It seems that @nithiz also uses encore and has it working now!

@nithiz thanks for the tip, that does it! added cross-env NODE_ENV=development into the hot command in package.json and it works now.

@RobinMalfait maybe it should be specified in the docs or readme that it only works if NODE_ENV is development?

@filipac Already is: `
Make sure you set NODE_ENV=development if you are running a watcher, or Tailwind won't watch your template files for changes. Set NODE_ENV=production for one-off builds.

If you want to control whether Tailwind watches files or not more explicitly, set TAILWIND_MODE=watch or TAILWIND_MODE=build to override the default NODE_ENV-based behavior.

`
That's how i found out :) But it's easy to assume you're in dev mode automatically when you run yarn encore dev --watch.

oh, then forgive my stupid thoughts :)) did not notice it


Build error in react-native 0.7

I got the error in this image in RN 0.7 when I try to run

I had a problem in RN 0.69.
can't found maven
And I can't run your example. It had same problem

@duylinhdang1998  Sorry for my super late reply, it's been a while since I've touched RN.
Have you tried branches
https://github.com/jackbayliss/react-native-nfc-card-reader/tree/gradle7.0 or
https://github.com/jackbayliss/react-native-nfc-card-reader/tree/gradle7.2

I am also facing the same issue and have tried all 3 branches:
npm install react-native-nfc-card-reader --save
npm install "https://github.com/jackbayliss/react-native-nfc-card-reader.git#gradle7.0" --save
npm install "https://github.com/jackbayliss/react-native-nfc-card-reader.git#gradle7.2" --save

I am also facing the same issue and have tried all 3 branches:
npm install react-native-nfc-card-reader --save
npm install "https://github.com/jackbayliss/react-native-nfc-card-reader.git#gradle7.0" --save
npm install "https://github.com/jackbayliss/react-native-nfc-card-reader.git#gradle7.2" --save

@ajaysidhu  Thank you for letting me know, I need to dedicate some time to investigating when I'm free. Do you have a RN sample app I can use for testing?

I fixed it by copying your code into my android folder and export native modules.
It worked

@ajaysidhu  Thanks for the information, I can't see the project sadly- could you make it public? I just need the basics so I can tinker with it :)

Oops! Can you please check again @jackbayliss  ?

@ajaysidhu  perfect!
Thanks

Thanks for repo

I have the same problem. Have you solved this issue?

I opened the Android project in Android Studio. And it shows some problems with building the Gradle project and shows that the problem in
react-native-nfc-card-reader\android\build.gradle' line: 118
So I just commented the line below and it's working now.
classpath += files(project.getConfigurations().getByName('customConfig').asList())

After spending hours of trying to make it work, I ended up downgrading my gradle version to 6.9 and React Native version to 0.67.4. It was painful to downgrade React Native version from 0.70 to 0.67, but it was the only solution for me because NFC card scanning was an important feature for our app.

Hi,
Same issue here. Any fix for 0.70.5?
Regards.

Any update we all are facing the same issue?

@Adeel984  I will check over the holiday period, I built this a long time ago so I'm not sure what's changed, it seems gradle doesn't play ball.
I will download the latest RN version and see what I can do while I'm free ☺

@jackbayliss after you complete all errors. You will face to an error about "flag_immutable" error also because of pro100svitlo library. Please check it if you be free :).
Thanks for your attention and happy holidays.

After spending hours of trying to make it work, I ended up downgrading my gradle version to 6.9 and React Native version to 0.67.4. It was painful to downgrade React Native version from 0.70 to 0.67, but it was the only solution for me because NFC card scanning was an important feature for our app.

is there any app repo, u build after downgrading? if possible please share it with us, thanks in advance

This issue is still a thing, if anyone has time to make a PR I will for sure pull it in. I haven't had time to do any updates, I'm no longer working on apps etc.


[Un]Marshaling partially

Is your feature request related to a problem? Please describe.
Sometimes I only need to get 1 field of a protobuf object, and I have to Unmarshal the entire thing, an unnecessary latency overhead
Describe the solution you'd like
I'd like to optionally specify which fields to unmarshal (like, giving the field numbers, and the unmarshaller would ignore the fields that are not requested)
Describe alternatives you've considered
Additional context

Without a major change to the generated API, this can't be supported. If we had an opaque message representation, then we can load contents of a field lazily on demand.

Thanks for the response! I didn't mean it as a lazy loading, it's more of an "ignore the non-selected fields and un/marshal everything else now" kind of a method

The golang/protobuf project is intended to be a faithful implementation of protocol buffers. Since the ability to select specific fields to unmarshal is not a feature of other implementation (especially the C++ one), it's not a feature we can provide. We do not intend to invent new semantics.


vg-error doesn't appear to handle 404s?

I found that vg-error doesn't fire when it's trying to reference a corrupted video.
I ran into this issue, here.

@kfeinUI @2fdevs  - Still an issue. Any possible way to take a look at this?

Supposedly thrown by the source as opposed to video element. Will have to
experiment.
On Aug 22, 2017 6:59 PM, "Logan B. Lehman"<EMAIL_ADDRESS>wrote:

@kfeinUI https://github.com/kfeinui @2fdevs https://github.com/2fdevs

Still an issue. Any possible way to take a look at this?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/videogular/videogular/issues/439#issuecomment-324174711,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AE0hHlldd64pxp4Sxi5uuqTOlbhI-D72ks5sa11ngaJpZM4MEzJY
.

vg-error appears to be working for me. At least in Chrome and FF. Is this an issue in a particular browser?
Simple codepen with a vg-error handler that will throw up an alert in your face.
https://codepen.io/anon/pen/JyZjze


MX ID addressable devices

Changes 'name' identifier of a device from [usb port]-[state name] to [mx id]-[state name]
This enables selecting a specific device even in case with multiple devices attached to the system.
Fixes issues with changing 'usb port' name between unbooted and booted states (as usb changes from 2.0 to 3.0 - super speed)
This PR includes changes from #3 as well as:

Added MX ID as the means of detecting current device, which enables specifying a specific device unambiguously
Added MX ID retrieval XLinkGetMxSerial for Windows (To be tested)

Until further testing is done, this will remain a draft PR.
To be improved:

System wide MX ID caching
MX ID retrieval of booted devices without IO

As an update, this has been fully used in Gen2, we just hadn't pushed this to master (as then it would effect Gen1 as well).

As an update, this has been fully used in Gen2, we just hadn't pushed this to master (as then it would effect Gen1 as well).

Merged to develop


Pages: Sorting and Pagination

Description

[x] Sort by title, path
[x] Paginate by page, 20 records by page
[x] Use query params to preserve state as ?query=FOO&page=INT&sort=NAME
[ ] Searching should reset pagination to page 1 and preserve sort query param and current state
[x] Paginating should preserve search query and sort params and their current state
[x] Navigation component

Issue
This PR tackles https://github.com/BeaconCMS/beacon_live_admin/issues/87
Screenshots

Pagination Component Demo
https://github.com/BeaconCMS/beacon_live_admin/assets/13787741/86c39717-ae75-4615-a4d4-8a7ac5c556b8

Hey @ChristianTovar it's looking good. Just found a small bug.
When there are no pages, it displays the following:

Clicking on the 0 crashes with:
%Postgrex.Error{message: nil, postgres: %{code: :invalid_row_count_in_result_offset_clause, line: "374", message: "OFFSET must not be negative", ...}

@leandrocp I've fixed the error for when there are no pages at all, we won't render the pagination component nor the upper sorting element. We still have some tests that are complaining about some code that is currently on beacon core for counting pages, how do we use the latest up-to-date beacon core stuff in tests for this particular case?

@leandrocp I've fixed the error for when there are no pages at all, we won't render the pagination component nor the upper sorting element.

👍🏻

We still have some tests that are complaining about some code that is currently on beacon core for counting pages, how do we use the latest up-to-date beacon core stuff in tests for this particular case?

You can just update the dependency: mix deps.update beacon - there's no blockers for doing so, actually beacon_live_admin should keep beacon as fresh as possible


WIP: Run Upgrade Test from AppStudio sha

Ensure that the Pipeline Service upgrade test runs a full upgrade from what is currently deployed in the AppStudio staging cluster. This should help us catch any upgrade failures/risks before they are deployed in AppStudio.

Add start_revision parameter to upgrade test pipeline.
Add fuller descriptions to upgrade test pipeline parameters.
dev_setup.sh: Print the git URL and ref that Pipeline Service uses for its ArgoCD deployment.

This is an attempt to simulate the failure that caused PLNSRVCE-1262

generally LGTM @adambkaplan
comparing plnsvc-setup and plnsvc-upgrade-setup and searching on github.com/openshift-pipelines/pipeline-service/developer/openshift/gitops/argocd?ref I see how it went from  8f3ebf86101a4cf21fe7e86335e85a3fb6e3671f to fe2c5c3367c973042b76e2632bba6a95d7ba5812
one "non-blocking" thought, as much a question as a suggestion - I wonder if it is worth tracking the image shas in the tekton-results namespace (perhaps chains,pac,pipelines as well) between pre and post upgrade.  And then flag whether a pipeline-service bump actually included a bump in one of those components.  Maybe it is not even something we keep long term, but keep until we get a warm fuzzy that our results tests are catching upgrade issues like 1262.
one idea for the future - once we can re-enabled https://github.com/openshift-pipelines/pipeline-service/blob/main/.tekton/infra-deployment-push.yaml.disable we can add a new pac job that submits a PR against this repo to bump https://github.com/openshift-pipelines/pipeline-service/pull/578/files#diff-85bb240671fd16c74c6c85e06780d895b4bd524e8ecaf801bb64cca6283ed7d4R31 .... it would like like https://github.com/openshift-pipelines/tektoncd-results/blob/downstream/.tekton/tekton-results-update-pipeline-service.yaml but that sed script at https://github.com/openshift-pipelines/tektoncd-results/blob/downstream/.tekton/tekton-results-update-pipeline-service.yaml would manipulate the correct file

/hold
I think we have a bug or feature gap in our dev setup scripts (which is what the CI test relies on). Our upgrade test pipeline ultimately calls openshift/dev_setup.sh (through a long chain of tasks that needs to be better documented). This deploys the ArgoCD application that is hard-coded to target the main branch: https://github.com/openshift-pipelines/pipeline-service/blob/8f3ebf86101a4cf21fe7e86335e85a3fb6e3671f/developer/openshift/gitops/argocd/pipeline-service.yaml#L14. Setting git_ref in config.yaml deploys the main branch, no matter what.
@Roming22 @xinredhat @prietyc123 I frankly wonder if our normal CI is testing the right thing, if it ends up deploying the main branch of the developer's repo...

coded

@adambkaplan our CI uses the argument --use-current-branch to deploy the proper branch when calling openshift/dev_setup.sh, see the command. Then it will modify targetRevision and repoURL with the proper values, see here


[BUG] Cannot unlock fps more than 240

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.
[ ] My answer given in the checkbox above is a lie.

What problem did you encounter?
I used it to unlock the fps in roblox for 360 fps, but the maximum fps is still 240.

alright this is not pizzaboxer but the fps limit depends on your display, if example you have 240 hz as your display your fps can only reach 240, reaching a higher amount than the limit can possibly destroy your monitor or have screen tears

alright this is not pizzaboxer but the fps limit depends on your display, if example you have 240 hz as your display your fps can only reach 240, reaching a higher amount than the limit can possibly destroy your monitor or have screen tears

actually my monitor's refresh rate is 360 but the bloxstrap cannot change the refresh rate to 360 even I have set it already.

Do you need to go any higher than 240?

Do you need to go any higher than 240?

Yes, as my monitor's highest refresh rate is 360.

The problem is that Roblox intentionally hard-caps the framerate at 240 for compatibiility reasons. There are workarounds that may remove it (such as setting both FFlagTaskSchedulerLimitTargetFpsTo240 and FFlagTaskSchedulerLimitTargetFpsTo2402 to False in the flag editor), but you may run into issues with games, and Roblox will likely remove the ability to configure those in the future.

The problem is that Roblox intentionally hard-caps the framerate at 240 for compatibiility reasons. There are workarounds that may remove it (such as setting both FFlagTaskSchedulerLimitTargetFpsTo240 and FFlagTaskSchedulerLimitTargetFpsTo2402 to False in the flag editor), but you may run into issues with games, and Roblox will likely remove the ability to configure those in the future.

Thanks a lot, it works! I hope these flags will work for a long time as I play Arsenal in Roblox, an FPS game that needs a high refresh rate for a better experience.


Error during annotation

Hi there!
I am using TACCO to annotate my spatial single cell data with a pubblished datasets. In particular, I am having issues with this dataset. I would like to ask and to understand which is the problem and I can solve it.
Best regards,
Giulia L.
`
import tacco as tc
tc.tl.annotate(adata, reference, annotation_key='tissue_type',counts_location='X', result_key='cell_type',max_annotation=1,assume_valid_counts=True,multi_center=0)`
Annotation profiles were not found in `reference.varm["tissue_type"]`. Constructing reference profiles with `tacco.preprocessing.construct_reference_profiles` and default arguments...
Finished preprocessing in 6.31 seconds.
There is no expression data available in the `reference` (`np.prod(reference.shape) == 0`)! Therefore no platform normalization is performed even though `platform_iterations=0`.
Starting annotation of data with shape (126176, 0) and a reference of shape (79522, 0) using the following wrapped method:
+- maximum annotation: max_annotation=1
   +- multi center: multi_center=0 multi_center_amplitudes=True
      +- bisection boost: bisections=4, bisection_divisor=3
         +- core: method=OT annotation_prior=None
bisection run on 1
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[18], line 3
      1 import tacco as tc
      2 #tc.tl.annotate(adata, reference, annotation_key='Detailed_Cell_Type', result_key='cell_type',max_annotation=1,assume_valid_counts=True,method='svm')
----> 3 tc.tl.annotate(adata, reference, annotation_key='tissue_type',counts_location='X', result_key='cell_type',max_annotation=1,assume_valid_counts=True,multi_center=0)

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py:820](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py#line=819), in annotate(adata, reference, annotation_key, result_key, counts_location, method, bisections, bisection_divisor, platform_iterations, normalize_to, annotation_prior, multi_center, multi_center_amplitudes, reconstruction_key, max_annotation, min_counts_per_gene, min_counts_per_cell, min_cells_per_gene, min_genes_per_cell, remove_constant_genes, remove_zero_cells, min_log2foldchange, min_expression, remove_mito, n_hvg, skip_checks, assume_valid_counts, return_reference, gene_keys, verbose, **kw_args)
    818     print('\n'.join(method_construction_info[::-1]))
    819 start = time.time()
--> 820 cell_type = _method(tdata, reference, annotation_key, annotation_prior, verbose)
    821 if verbose > 0:
    822     print(f'Finished annotation in {np.round(time.time() - start, 2)} seconds.')

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py:499](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py#line=498), in max_annotation_method.<locals>._method(adata, reference, annotation_key, annotation_prior, verbose)
    495 def _method(adata, reference, annotation_key, annotation_prior, verbose):
    497     nonlocal annotation_method, max_annotation, prepare_reconstruction
--> 499     cell_type = annotation_method(adata, reference, annotation_key, annotation_prior, verbose)
    501     if max_annotation is not None and max_annotation > 0:
    502         _cell_type = cell_type.to_numpy()

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py:381](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py#line=380), in multi_center_annotation_method.<locals>._method(adata, reference, annotation_key, annotation_prior, verbose)
    378 nonlocal annotation_method, multi_center, prepare_reconstruction
    380 if multi_center is None or multi_center <= 1:
--> 381     cell_type = annotation_method(adata, reference, annotation_key, annotation_prior, verbose)
    382     if prepare_reconstruction is not None:
    383         prepare_reconstruction['annotation'] = cell_type.copy()

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py:208](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py#line=207), in boost_annotation_method.<locals>._method(adata, reference, annotation_key, annotation_prior, verbose)
    205 if verbose > 0:
    206     print(f'bisection run on {todo}')
--> 208 cell_type = annotation_method(adata, reference, annotation_key, annotation_prior, verbose)
    210 #print('update result with weight', current)
    211 cell_type *= 1 / cell_type.sum(axis=1).to_numpy()[:, None]

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py:115](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_annotate.py#line=114), in annotation_method.<locals>._method(adata, reference, annotation_key, annotation_prior, verbose)
    112     else:
    113         _annotation_prior = annotation_prior(adata, reference, annotation_key)
--> 115     cell_type = annotate(adata, reference, annotation_key, annotation_prior=_annotation_prior, **verbose_arg, **kw_args)
    117     #cell_type/cell_type.sum(axis=1)[:,None]
    118 else:
    119     cell_type = annotate(adata, reference, annotation_key, **verbose_arg, **kw_args)

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_OT.py:66](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_OT.py#line=65), in _annotate_OT(adata, reference, annotation_key, annotation_prior, epsilon, lamb, decomposition, deconvolution, **kw_args)
     59 """\
     60 Implements the functionality of :func:`~annotate_OT` without data
     61 integrity checks.
     62 """
     64 cell_prior = helper.prep_cell_priors(adata, reads=True)
---> 66 type_cell_dist = helper.prep_distance(adata, reference, annotation_key, decomposition=decomposition, deconvolution=deconvolution, **kw_args)
     67 if decomposition:
     68     type_cell_dist, mixtures = type_cell_dist

File [~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_helper.py:74](http://localhost:50188/~/.conda/envs/seurat/lib/python3.9/site-packages/tacco/tools/_helper.py#line=73), in prep_distance(tdata, reference, type_key, n_pca, zero_center, log_norm, scale, metric, min_distance, decomposition, deconvolution)
     71     raise ValueError('The deconvolution and decomposition workflow dont work together!')
     73 if (np.array(tdata.X.sum(axis=1)).flatten()==0).any():
---> 74     raise ValueError('There are observations without non-zero variables!')
     76 tdata, reference = tdata.copy(), reference.copy() # dont touch the originals
     78 if log_norm:

ValueError: There are observations without non-zero variables!

Hi Giulia,
it seems your error is similar to this issue.
Maybe this resolves your error, otherwise let us know and we will look into it more extensively.
Hope this helps!


Does the model support FP16 inference?

Hello,
I was looking for ways to increase the inference speed, and one thing I thought would be useful was to use FP16. For this, I called model.half() after loading it. Unfortunately, it generated RuntimeError: "LayerNormKernelImpl" not implemented for 'Half' error. I was wondering if there is a way to use FP16 during inference? (Or any other trick to accelerate inference).
# This works:
model = MvpForConditionalGeneration.from_pretrained('RUCAIBox/mvp')
inputs = tokenizer(
    ["Describe the following data: Iron Man | instance of | Superhero [SEP] Stan Lee | creator | Iron Man",
     "Describe the following data: Batman | instance of | Superhero",
    ]
    return_tensors="pt",
)

generated_ids = model.generate(**inputs)

tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
['Iron Man is a fictional superhero appearing in American comic books published by Marvel Comics.',
"Batman is a superhero"]

# This doesn't:
model = model.half()
generated_ids = model.generate(**inputs)

Sorry, I am not familar with this. Our model is based on the Hugging Face API. You can find solution in their GitHub or Forum. Or the Accelerate can work?


the nuget packages are broken for all versions

version 1.3 is trying to get Antlr2.Tools version <IP_ADDRESS> and can't find it when trying to restore packages
the other versions can't find Wave version 1.0

All packages are on the gallery. There were issues with nuget.org today - may be it was affected.

awesome, thanks for the quick response

http://status.nuget.org/


Fix generate_protos_test.

9c81c43e033941f1bf1b3615de67d7129c0c7a97 improved proto and
flatbuffer import checks but broke generate_protos_test.
This patch fixes the test by mocking the module import method
to fail in order to exercise the proto generation code path.

Thanks @hinasakazaki


Add option to change amount of memory reserved for JVM

Currently this template reserves 50% of the node's memory for the JVM. This default is not optimal for some configurations.
Please create an option in the template to choose another amount of memory reserved for the JVM.

Thank you @russcam!


[bot] Fingerprints: add missing FW versions from new users

✅ Updating FW version database with FW from 2 dongles (2 platforms) in last 30.0 days:
View table

Dongle, platform, VIN
Name from VIN 🆚 CarInfo
Segments
Bad seg tags
Good seg tags

0649d406184b7131VOLKSWAGEN JETTA 7TH GEN3VWEB7BUX........
VOLKSWAGEN Jetta 2019 🆚Volkswagen Jetta 2018-24
111 routes, 1875 segments

- valid torque params: 1874- all lat active: 207- no input all lat active: 186

71dbab52cfb46611VOLKSWAGEN ATLAS 1ST GEN1V2BC2CA3........
VOLKSWAGEN Atlas Cross Sport 4Motion 2021 🆚Volkswagen Atlas Cross Sport 2020-22
88 routes, 1727 segments
- VIN model mismatch (info): 1
- valid torque params: 1716- all lat active: 665- no input all lat active: 581

Dongles to re-run category: 0649d406184b7131 71dbab52cfb46611

⏳ 6 dongles (4 platforms) do not yet have enough data to be added:
View table

Dongle, platform, VIN
Name from VIN 🆚 CarInfo
Segments
Bad seg tags
Good seg tags

a97d27ce2a78958aVOLKSWAGEN JETTA 7TH GEN3VWG57BUX........
VOLKSWAGEN Jetta 2019 🆚Volkswagen Jetta 2018-24
23 routes, 580 segments

- valid torque params: 580- all lat active: 3- no input all lat active: 2

23daff6c438612d2AUDI A3 3RD GEN3VWCA7AU3........
VOLKSWAGEN Golf SportWagen 2015 🆚Audi A3 Sportback e-tron 2017-18🎉 New model year! 🎉
12 routes, 487 segments
- VIN model mismatch (info): 1- VIN make mismatch (info): 1
- valid torque params: 487- all lat active: 0

3e57c316782406b5VOLKSWAGEN GOLF 7TH GEN3VWH17AU7........
VOLKSWAGEN Golf Alltrack 2019 🆚Volkswagen Golf Alltrack 2015-19
4 routes, 83 segments

- all lat active: 0

af3a81d36a847fdaVOLKSWAGEN PASSAT 8TH GENWVWZZZ3CZ........
VOLKSWAGEN  1986 🆚Volkswagen Passat 2015-22
9 routes, 99 segments

- valid torque params: 67- all lat active: 12- no input all lat active: 1

1b1b0ae707af0f5fVOLKSWAGEN GOLF 7TH GEN3VWC17AU6........
VOLKSWAGEN Golf SportWagen 2016 🆚Volkswagen Golf SportsVan 2015-20
3 routes, 19 segments
- VIN model mismatch (info): 1
- valid torque params: 6- all lat active: 1

77db91ca5676dfd9VOLKSWAGEN GOLF 7TH GEN3VW6T7AUX........
VOLKSWAGEN Golf GTI Hatchback 2021 🆚Volkswagen Golf GTI 2015-21
82 routes, 1212 segments
- VIN model mismatch (info): 1
- valid torque params: 1212- all lat active: 1

Dongles to re-run category: a97d27ce2a78958a 23daff6c438612d2 3e57c316782406b5 af3a81d36a847fda 1b1b0ae707af0f5f 77db91ca5676dfd9

⚠ 0 dongles (0 platforms) have issues that need to be resolved before adding:
View table

Dongle, platform, VIN
Name from VIN 🆚 CarInfo
Segments
Bad seg tags
Good seg tags

Dongles to re-run category: ``

@jyoung8607 should we add this name to the CarInfo?

Ugh, VPIC says this is the full model name: Model: Atlas Cross Sport 4Motion

I mean, I'm not here to say we CAN'T pop a couple more Volkswagen entries Into the supported cars list.
If you want to do it, add 4Motion variants to both Atlas and Atlas Cross Sport.

If you think most people would assume their 4Motion works when not specified, we have just have the bot strip it.


Affine tasks

Fixes https://github.com/demystifyfp/FsToolkit.ErrorHandling/issues/106
along with few other fixes

Use affine tasks
Use net50 .net target and language
Remove side by side github workflow hack
Update tooling to stable version

@NinoFloris any reasons why methods like task.Return from ply return Ply type instead of tasks?

Ugh that side-by-side hack isn't working anymore 😢

Ugh that side-by-side hack isn't working anymore 😢

Oh nice it was actually fixed and here's an example https://github.com/actions/setup-dotnet#usage

@Swoorup this is just the 'internal' exchange type, same goes for Taskbuilder (which has Step), it's the lowest common denominator between ValueTask and Task.

Should fstoolkit be using ply as intermediate type at all, or always use task? I am finding it hard to work out compiler messages. The test are failing to build but the library builds.

It appears fake doesn't allow changing the target to net50. Other than that this is ready for review. @TheAngryByrd

Not sure how to fix the tooling issue
FSharp.Compiler.CompileOps+FileNameNotResolved' was thrown

Reverted to just fix the linked issue

@TheAngryByrd I'm all for this change but there was a reason we didn't do this during the conversion to Ply in the first place. It should be very clear to users of the library currently depending on these CEs to automatically apply ConfigureAwait(false) that they can no longer expect it to do so. Meaning at every bind where they previously expected the CE to ignore any sync context or task scheduler it's now up to users to sprinkle ConfigureAwait(false) on those tasks before binding. If not then this release is bound to create deadlocks for users of gui or older aspnet frameworks.

Yeah I'm sure I'm gonna get an issue about this problem too. Might have to make a separate package with unaffine vs affine but we'll see if people complain first before I go fixing problems that may not exist.  Additionally the older versions aren't going anywhere for now.

@NinoFloris @TheAngryByrd Have addressed the feedback

Thank you!

@Swoorup Take 2.0.0-beta002 for a spin

Pre 2.0.0-beta002, the following code would give
#r "nuget: Ply"
#r "nuget: FsToolkit.ErrorHandling.TaskResult,2.0.0-beta002"

open System
open System.Threading
open System.Threading.Tasks
open FSharp.Control.Tasks
open FsToolkit.ErrorHandling
open FsToolkit.ErrorHandling

let a () =
  task {
    printfn "From taskCE Scheduler Id: %A" TaskScheduler.Current.Id
    let! a =
      taskResult {
        do! Task.Delay(TimeSpan.FromSeconds(1.0))
        printfn "From taskResultCE Scheduler Id: %A" TaskScheduler.Current.Id
      }
    return ()
  }

let Scheduler = ConcurrentExclusiveSchedulerPair(TaskScheduler.Default, 1, 1)
printfn "Main Scheduler ID: %A" TaskScheduler.Current.Id
printfn "Scheduler ID: %A" Scheduler.ExclusiveScheduler.Id

Task.Factory.StartNew(a, CancellationToken.None, TaskCreationOptions.None, Scheduler.ExclusiveScheduler) |> ignore
Console.ReadLine()

Pre 2.0.0-beta002

2.0.0-beta002

Works well now.


The future of ng-annotate

I have maintained ng-annotate for almost three years now and I think it's now time for me to either pass the maintainer bit forward or to declare ng-annotate feature complete, disabling implicit matching.
I created ng-annotate because it seemed tedious and error-prone to keep two parameter-lists in sync. At the time most angular-applications had similar enough structure that detecting functions to annotate automagically seemed like a good idea. But as angular progressed and its community grew, the slope became more and more slippery. I eventually added support for explicitly marking up which functions to annotate (first via /*@ngInject*/, then via "ngInject") but regrettably to late. The automagic expectation still remains, as reflected in the issue tracker. Please note that "ngInject" works great in practice - it takes a couple of seconds to type it in, you don't need to keep two parameter lists in sync and it's crystal clear which parts of your code will be transformed and which won't.
Which brings us to TypeScript and ES2015+ support. With "ngInject" markup it works fine as long as ng-annotate is fed with the tsc/babel/.. processed output. With implicit matching it's a whole different beast on top of the already slippery automagic-slope. I've consistently said no to adding ES2015+ support for this reason, and there are lingering pull requests and issues (mostly feature requests).
I see two paths forward (are there other options?):

I will ship a vastly simplified ng-annotate 2.0, supporting explicit "ngInject" matching only. It will be (mostly) feature frozen but bugs will be fixed. An unimportant but still nice side effect would be that ng-annotate becomes even faster.
I pass it along. The new maintainer(s) can revisit my decision to not support unprocessed ES2015+ input and how far to further slip down the implicit slope.

Thoughts on this? I'm interested in hearing from users, current and future contributors and from anyone interested in taking on the maintainer role.

@olov First of all thanks for keeping us up to date
I like path 1

I like the first option - very reliable, less surprises.
All that'd need to happen going forward is to support new ECMAScript features where needed - for now injecting arrow functions & ES6 classes.

@olov Thanks for the feedback. I would go for the 1st option.
Besides, it doesn't prevent anyone to fork this repo and support ES6.

@olov I agree with the others, option 1 is the way to go. as Jeremy says, there's nothing stopping anyone from going forward anyway.
On the point of the slippery slope: I've found myself in situations where I wasn't sure if I could leave out the explicit annotation, and as with other instances of erring on the sides of consistency and clarity, I was on the path to annotating everything anyway. After all, even if I knew exactly when an un-annotated function would be injected and when not, why keep those guessing who come after me? Just my two cents :+1:
Oh, and thank you for ng-annotate :smile:

Go for option 1! As long as #220 is included

Option 1. Unprocessed ES6 shouldn't be supported in my opinion. Use toolchains, dudes.

Unprocessed ES6 shouldn't be supported in my opinion. Use toolchains, dudes.

Why? There are lots of ES6-compatible environments now and not every project has to support IE. Also, it's perfectly fine to want to run your code in ES6 mode during development for easier debugging and having ng-annotate work there would help a lot.
Requiring transpiling ES6 to ES5 in all cases decreases usefulness of ES6 a lot.

If we go with option 1, it would be possible and probably quite easy to implement ng-annotate functionality not as a standalone tool, but as a babel 6 plugin. That way it would stay compatible with any toolchain and would support ES6 out of the box.

Honestly I would go for 2.
It seems you don't have time even to merge valid PRs, and besides, maintainers could also help towards the "simple" options.
It's not an exclusive path.

I've been maintaining a fork of ng-annotate that reimagines this project as a babel plugin instead of a standalone tool.
Currently, the plugin passes ng-annotate's test suite, supports ES6 sources (and annotating things like class constructors), and works with implicit annotations.
Additionally, as a Babel plugin, we get to take advantage of Babel's fairly robust parser (with support for modern language features) and suite of transformation tools.  Developers who are already using Babel should also see significant performance improvements over ng-annotate, as the sources only need to be parsed once.  (Even with implicit matching, the plugin does not appear to add much overhead beyond the work already being done by the parser.)
Regardless of ng-annotate's future, I intend to maintain my fork.  If we feel that it's OK for ng-annotate to live on as a Babel plugin, we could treat my fork as a successor to this project.
(PS.  Huge thanks to @olov for all of the work he's done over the years on ng-annotate!)

@schmod Very interesting! Does it support options? The ideal setup for me is to:

Always use 'ngInject';
Disable any possible heuristic that the plugin has and rely only on the 'ngInject'; pragma.
Have support for ES6 classes & arrow functions in the following way:

class Circle {
    constructor(service1, service2) {
        'ngInject';
        /* code */
    }
    method(param1, param2) {
        /* code */
    }
}

angular
    .module('myModule')
    .component('myCircle', {
        template: '...',
        controller: CircleController,
    })
    .run((service1, service2) => {
        'ngInject';
        /* code */
    });

Is that possible to achieve with your plugin?

Right now, there isn't a configuration option to disable implicit matches, but it should be fairly straightforward to implement.  I'll put that on the roadmap.

2, 3. I just pushed a new release that supports arrow functions and prologue annotations in class constructors.

Actually, explicit-only matching turned out to be really easy to implement, and is now released in v0.4.0 of babel-plugin-angularjs-annotate.

@schmod that sounds awesome!
I haven't yet tried babel-plugin-angularjs-annotate, but based on reading the README these are the changes that I'd make:

Delete implicit matching stuff. If not, make it opt-in rather than opt-out. Deleting would be better, for a bunch of reasons.

As a consequence of 1, delete all implicit matching stuff in the README (or move to a separate document).

Guide users to "ngInject" whenever possible because comments are brittle. var x = /* @ngInject */ ($scope) => { ... }; becomes var x = ($scope) => { "ngInject"; .. };. It should be easy to let babel-plugin-angularjs-annotate strip away the prologue string to prepare for optimal minification.

Just my opinions but I think it would make life easier for developers and users alike. :-)

I avoided copying the entirety of ng-annotate's README for reasons that I no longer remember.
If the Babel plugin is indeed the future of ng-annotate, I should indeed aim to provide comprehensive documentation, rather than directing new users to ng-annotate's README.
Some other thoughts:

Why is implicit matching so problematic?  Are there major known issues?  I understand that it's not reliable in 100% of situations, but it's generally been pretty solid for me.
Ditto for comments.  Are there specific transformations that are known to mangle comments, but leave prologue directives intact?
With the above things in mind, I think that it might be a good idea to have a "strict" mode that looks for implicit matches, and prints a warning (or error) if they haven't been explicitly marked for annotation.  [Yes, this functionality probably belongs in a linter.]

Another possibility:  A special mode that does implicit matches, and then adds prologue directives to those functions (instead of adding the actual $inject annotations), stripping out existing comment-based /* @ngInject */ hints and explicit $inject.
This could be useful for preparing existing code to use our recommended "best practices."

@schmod I've just switched one of my projects to your plugin and it worked like a charm in my ES6-based code. I no longer have to disable strictDi in the development ES6 server mode. Thanks!

@schmod

Why is implicit matching so problematic? Are there major known issues? I understand that it's not reliable in 100% of situations, but it's generally been pretty solid for me.

From a user's point of view, I consider it a best practice to have every occurrence explicit. The main reasons being that this

removes the author's need to distinguish cases where implicit matching works versus those where it doesn't
helps the reader's understanding of what's happening

Of course, there will be authors like yourself, as well as myself at an earlier time, who will like the implicit matching and have no issues. However, since you will need to use explicit annotations anyway as soon as implicit matching fails you and implicit matching greatly increases the code's complexity, I think the cost probably outweighs the benefits.

I've been stuck on 1.2.28 for so long that I keep forgetting that strictDi exists.
strictDi mitigates most of the risks of explicit-only annotations (ie. that you've forgotten an "ngInject" somewhere and won't discover it until you test a minified build).
I think it's reasonable for us to recommend explicit annotations and strictDi for new users.

Implicit matching is problematic because a) it's a never-ending story and b) false positives (breaking code). see the ng-annotate issue tracker for lots of more info. :)

Comments are problematic because of rewriting tools shuffling them around (see issue tracker here too). That's why I came up with "ngInject" in the first place (and yes most proper source rewriters respect prologues).

I have no problem with a strict mode. :)

My comments are just meant as advice based on my experience of maintaining ng-annotate, so don't feel any pressure of doing this or that to please me.
I think your Babel plugin is indeed the future of ng-annotate. @mgol since we had discussions about a Babel plugin not long ago, I'd like to hear whether you'd be happy with this too?

As I've mentioned, I'm in favor of leaving implicit matching in place for the time being.
However, you've convinced me that 1.0.0 (ie. the first release I'll make with breaking changes) should turn of implicit matching by default, and the docs should clearly emphasize explicit annotations and prologue directives as the preferred way of doing things.
I like this because it makes the documentation really straightforward:

Usage
tl;dr;
Add 'ngInject'; to the top of any function body that will be invoked with Angular's DI injector.  That's it.
angular.module('myMod').service('mySvc', function($scope){
   'ngInject';
   $scope.foo = "bar";
});

angular.module('myMod').directive('myDir', (urlBase) => {
   'ngInject';
   return {
      restrict: 'E',
      controller: ($http) => {
          'ngInject';
          $http.get(urlBase + '/foo');
      }
   };
});

There's also another babel plugin that seems like it's being developed in parallel:
https://github.com/marcioj/babel-plugin-angular-annotate

@mgol since we had discussions about a Babel plugin not long ago, I'd like to hear whether you'd be happy with this too?

Yup, I'm happy with the plugin!

There's also another babel plugin that seems like it's being developed in parallel:
https://github.com/marcioj/babel-plugin-angular-annotate

It seems it was created from scratch, though. And a large part of it is supporting specific "configurations" which are string representations of object property access paths which should have parameters annotated (like "$httpProvider.interceptors.push"). It also seems it doesn't support any explicit annotation style. So I definitely prefer your plugin.

Alright, I think the timing is right to get this done now. @schmod what's the current status and how would you prefer to proceed with the migration? I'm thinking a prominent message at the top of the ng-annotate README that briefly explains that ng-annotate is now deprecated in favor of babel-plugin-angularjs-annotate, preferably with a link to a .md file on your repo that explains the easiest way to migrate (for existing ng-annotate users). The babel-plugin-angularjs-annotate README should also be updated to make it clear that it's the ng-annotate successor. If it's possible to disallow new issues on the ng-annotate github page then that will happen too. Anything else we need to do?

I think the steps forward are:

Bump babel-plugin-angularjs-annotate to 1.0.0 and turn implicit matching off by default
Write a migration guide, and update README.md to reflect that we're considering the new project to be "stable" -- I'd like to PR this and ask a few of you to look it over before I merge it.
Update ng-annotate's README.md to point new users to the Babel plugin.

I've taken a stab at updating the documentation for babel-plugin-angularjs-annotate in preparation for the 1.0.0 release.
https://github.com/schmod/babel-plugin-angularjs-annotate/tree/next
Proofreading and improvements are welcome ;-)

@schmod great - let me know when you're ready and I'll update the ng-annotate README with a deprecation notice and a link to your plugin. I'll also push a (final) release of ng-annotate to npm so that the updated README is there as well.

Thanks to much for the great work, @olov and @schmod! This is a prime example of how open-source software should happen. I'll gladly migrate my Angular projects to use the new babel plugin now and will let you know (in the new repo) if I run into any problems.
(Sorry if this is considered spam for some people who get mail notifications for this thread but I just wanted to express my gratitude.)

One thing to consider: in the typical Angular 2+ setup used via Angular CLI if you want to mix in Angular 1 components, you won't be able to use ng-annotate as the Babel plugin doesn't understand TypeScript. But the current ng-annotate doesn't understand TypeScript as well so this is not making matters worse.

In that scenario, you'd probably want to opt for the TypeScript compiler to output ES6, and then run the output through babel to transpile to ES5.  (Or, alternatively, there's nothing stopping you from running babel against ES5 sources)

@olov @schmod Can we proceed with the ng-annotate deprecation? I think the Babel plugin works really well right now and most people don't know ng-annotate is effectively deprecated and that they should move to the Babel plugin.

It is done. Thanks everyone! I'm leaving this issue and #253 open for historical reasons.

@olov Can you run:
npm deprecate ng-annotate "My deprecation message"

so that people installing the package see the warning?

I'll try to find time this week to update my repo to reflect ng-annotate's deprecation (and finally get 1.0 out the door)

@schmod Any updates? :)

I really like and respect this community of commenters and in particular @schmod. I'm a newbie developer and was taught ES5 and now trying to transition into more functional programming in Javascript using ES6. I'm still have some minor difficulties wrapping my head around it. What @schmod has created is really great and I have been highly anticipating v1.0. Any word yet on a timeline? I would also like to contribute to any open source project based upon my beginner skill set. Any recommendations? I don't care how mundane or minor my role is. I just want to be more active in the community and grow and learn.

Here's a fork that has been patched to work with imports/exports in ES6: https://github.com/bluetech/ng-annotate-patched

There is another fork from nevcos that supports ngInject for ES6 classes. It's little behind bluetech fork but useful in own way.
Also, if you use ng-annotate with gulp, take a look at gulp-ng-annotate-patched

Actually, I've improved nevcos fork a little and everything got merged to ng-annotate-patched - feel free to use it with working support for ES6 classes.
BTW shouldn't ng-annotate-patched be mentioned in this library README file (and maybe npm deprecation message), so others can find it more easily?


placeholder attribute on option is invalid

For the config it says:

Note: For single select boxes, the recommended way of adding a placeholder is as follows:
<select>
  <option placeholder>This is a placeholder</option>
  <option>...</option>
  <option>...</option>
  <option>...</option>
</select>

Yet placeholder is not a valid attribute for the option element.
The way this works in the HTML spec is that "placeholder" option is given an empty value attribute. From the HTML spec:

If a select element has a required attribute specified, does not have a multiple attribute specified, and has a display size of 1; and if the value of the first option element in the select element’s list of options (if any) is the empty string, and that option element’s parent node is the select element (and not an optgroup element), then that option is the select element’s placeholder label option.

Choices should respect this way of marking up a select's placeholder option with valid HTML.

Pull request is ready to fix this, package author just needs to decide whether this requires a new major/minor version. :)


tensorflow lite: error while converting frozen model to lite format

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Win 10 pro
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: NA
TensorFlow installed from (source or binary):  Using Anaconda navigator
TensorFlow version (use command below): v1.12.0-9901-gf380d8b8e5 1.14.1-dev20190309
Python version:  Python 3.6.8
Bazel version (if compiling from source): NA
GCC/Compiler version (if compiling from source): NA
CUDA/cuDNN version: using cpu version
GPU model and memory: na

You can collect some of this information using our environment capture script
You can also obtain the TensorFlow version with
python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
Describe the current behavior
I am trying to quantize a model that is made using tfslim library. I froze it using graph_util.convert_variables_to_constants function and tried to convert it to tflite formate for quantization. I am using win 10 and tf-nighlty. the following error appears:
TOCO failed. See console for info.
2019-03-12 00:20:27.142300: I tensorflow/lite/toco/graph_transformations/graph_transformations.cc:39] Before Removing unused ops: 221 operators, 366 arrays (0 quantized)
2019-03-12 00:20:27.147170: I tensorflow/lite/toco/graph_transformations/graph_transformations.cc:39] Before general graph transformations: 221 operators, 366 arrays (0 quantized)
2019-03-12 00:20:27.243872: F tensorflow/lite/toco/graph_transformations/propagate_fixed_sizes.cc:722] Check failed: start_array.data_type == ArrayDataType::kInt32 Range op inputs must be int32.
Fatal Python error: Aborted
Current thread 0x00001f44 (most recent call first):
File "c:\anaconda3\lib\site-packages\tensorflow\lite\toco\python\toco_from_protos.py", line 33 in execute
File "c:\anaconda3\lib\site-packages\absl\app.py", line 251 in run_main
File "c:\anaconda3\lib\site-packages\absl\app.py", line 300 in run
File "c:\anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 40 in run
File "c:\anaconda3\lib\site-packages\tensorflow\lite\toco\python\toco_from_protos.py", line 59 in main
File "C:\anaconda3\Scripts\toco_from_protos.exe_main.py", line 9 in
File "c:\anaconda3\lib\runpy.py", line 85 in _run_code
File "c:\anaconda3\lib\runpy.py", line 193 in _run_module_as_main
Describe the expected behavior
Should convert frozen pb file to tflite with int8 quantization
Code to reproduce the issue
Provide a reproducible test case that is the bare minimum necessary to generate the problem.
pb file in the below link
https://drive.google.com/open?id=1Ba6aEuv2VTGD_bct24UBiMh7MFe_jkOr
graph_def_file = "frozen_model_yolov3-tiny.pb"
input_arrays = ["input_to_model"]
output_arrays = ["concat_1"]
converter = tf.lite.TFLiteConverter.from_frozen_graph(
graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_tiny_model.tflite", "wb").write(tflite_model)
Other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.

Thank you for your post. We noticed you have not filled out the fields in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Along with the template, please provide as many details as possible to find the root cause of the issue.

Thank you for your post. We noticed you have not filled out the fields in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Along with the template, please provide as many details as possible to find the root cause of the issue.

Ive updated the post. please have a look

Thank you for your post. We noticed you have not filled out the fields in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Along with the template, please provide as many details as possible to find the root cause of the issue.

Ive updated the post. please have a look

@haozha111 Could you help to take a look at the model?
I think this requires broadening supported types of Range, in both converter and runtime

I downloaded your model, but I can't reproduce your issue. I used virtualenv and tf-nightly.
(tensorflow_venv) haoliang@haoliang0:~/tensorflow_venv/bin$ python test.py
2019-03-19 16:37:17.875562: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-03-19 16:37:17.905232: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency:<PHONE_NUMBER> Hz
2019-03-19 16:37:17.906497: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55a21cc6c070 executing computations on platform Host.
Could you check what version of Tensorflow you are using?

@haozha111
will this snippet trigger the error?
graph_def_file = "frozen_model_yolov3-tiny.pb"
input_arrays = ["input_to_model"]
output_arrays = ["concat_1"]

converter = tf.lite.TFLiteConverter.from_frozen_graph(graph_def_file, input_arrays, output_arrays)
converter.inference_type = tf.lite.constants.QUANTIZED_UINT8
input_arrays = converter.get_input_arrays()
converter.quantized_input_stats = {input_arrays[0] : (0., 1.)}  # mean, std_dev
tflite_model = converter.convert()
open("converted_tiny_model.tflite", "wb").write(tflite_model)

I tried the same, unfortunately got exactly the same error.
I'm using virtualenv and tf-nightly ('1.14.1-dev20190410')

Thanks Mark. Now I can reproduce that exact same error. I think this will only fail when quantization is enabled.
See the comments here[1], it looks like range op currently doesn't support quantization. So the check will fail when the input is not int32 or float32. I will transfer this issue to Pulkit since he is planning to support quantization for range op.
[1]https://github.com/tensorflow/tensorflow/blob/c238fc4a25c71c71e1bfdbb6eac750c64aed52ad/tensorflow/lite/kernels/range.cc#L89

Thanks Mark. Now I can reproduce that exact same error. I think this will only fail when quantization is enabled.
See the comments here[1], it looks like range op currently doesn't support quantization. So the check will fail when the input is not int32 or float32. I will transfer this issue to Pulkit since he is planning to support quantization for range op.
[1]https://github.com/tensorflow/tensorflow/blob/c238fc4a25c71c71e1bfdbb6eac750c64aed52ad/tensorflow/lite/kernels/range.cc#L89

@gjraza did you solve this ?

@nutsiepully @haozha111 , When will you support quantization for range op


Update userGuide to include vendor disable feature

Signed-off-by: renfeiw<EMAIL_ADDRESS>

LGTM
Out of curiosity, in the case where we have not mapped vendor to a single word, would this mechanism still work or would one need to use quotes, or put the mapping in place?

In the case, quotes are required. I would do a local test with that to make sure it works.

Its okay, I think if some distributor was using AQA and TKG enough that they wanted to disable tests, we'd add the mapping.  I was just wondering what the behaviour would be.


Converts mods.txt to use mods.json

Maintains legacy support for mods.txt and favors mods.txt for settings
mods.txt should only be favored for one minor release cycle post 4.0
Our packaging script will need to be updated, but after mods.txt and ue4sssettings are converted to json it should be able to be simplified significantly.

I can see why mods.txt would be better as a standardized format, but I don't see why UE4SS-settings needs to change from ini to json.
If there's no actual benefit here beyond "all our stuff is json", then we're just adding potential difficulties for the end user.
I know this PR doesn't modify UE4SS-settings, but when/if this happens it would be useful if whoever does it goes into detail about why the change is needed.

I can see why mods.txt would be better as a standardized format, but I don't see why UE4SS-settings needs to change from ini to json. If there's no actual benefit here beyond "all our stuff is json", then we're just adding potential difficulties for the end user. I know this PR doesn't modify UE4SS-settings, but when/if this happens it would be useful if whoever does it goes into detail about why the change is needed.

JSON schema allows for representing objects and arrays in the file (something ini files struggle with). If the current settings are only kvps then I see your point.
Have we considered if we should be making the settings file more than key value pairs? Some of the beauty of the ini format (as a settings mechanism) is that it's pretty obvious when it's being misused for things it shouldn't be.
Another thing to consider is that we lose the ability to ship comments/descriptions about settings within the settings file if we switch to json. Ini, toml, yaml, all have the ability to comment within the file but that's one of the key "weaknesses" of json as a configuration schema. (It's a strength for serialization/requests depending on who you ask since it makes the schema easier to regulate when using json as request payloads/http responses over the wire...)
TOML and yaml are both alternatives that support comments but have their own histories/quirks.
Just making sure that we're thinking about what the right tool for the right job is.

We can "fake" comments in JSON by having them as a field so that shouldn't be a huge problem, and I do think comments are crucial for the settings file.
I like ini because it's very simple and easy to read.
With JSON, you get more advanced features, but it's harder to read, there's substantial visual cluttering.
While we do have some basic support for arrays (section as ordered list & section entries without values) in our ini system, that's not part of any kind of ini standard so it would potentially make it harder for anyone to programmatically parse the file, though I don't believe we use any of those features in UE4SS-settings.ini.
My opinion is that we should stay away from JSON or any other format for the settings file unless we desperately need more advanced features, and we should also take into account whether the setting we're implementing that requires more advanced features actually belongs in the settings file.
Example of how a basic ini structure would look like, and the equivalent in JSON:
[Section1]
; Description of A
A = 1
; Description of B
B = 2
; Description of C
C = 3

[Section2]
; Description of A
A = 1
; Description of B
B = 2
; Description of C
C = 3

{
    "Section1": {
        "Description of A": null,
        "A": 1,
        "Description of B": null,
        "B": 2,
        "Descriptio of C": null,
        "C": 3
    },
    "Section2": {
        "Description of A": null,
        "A": 1,
        "Description of B": null,
        "B": 2,
        "Descriptio of C": null,
        "C": 3
    }
}

I'd personally avoid doing the json comment by using the adding a new key hack. Whenever I see that mechanism being used, it screams "I'm misusing the intent of this schema". Json was designed as and still is a schema for data-interchange.

I'd personally avoid doing the json comment by using the adding a new key hack. Whenever I see that mechanism being used, it screams "I'm misusing the intent of this schema". Json was designed as and still is a schema for data-interchange.

Wouldn't that interfere with programs parsing the file with the assumption that it's standard json ? That's a concern because people do actually parse the UE4SS-settings file.

Let me clarify - i strongly advise against hacking in comment functionality into json through any means (new kvp, preprocessor, etc)

I'd personally avoid doing the json comment by using the adding a new key hack. Whenever I see that mechanism being used, it screams "I'm misusing the intent of this schema". Json was designed as and still is a schema for data-interchange.

Wouldn't that interfere with programs parsing the file with the assumption that it's standard json ? That's a concern because people do actually parse the UE4SS-settings file.

Let me clarify - i strongly advise against hacking in comment functionality into json through any means (new kvp, preprocessor, etc)

Oh okay, I must've misunderstood, good to have clarification.
I generally agree.

Schema Comparison
Don't use this chart as the source of truth in terms of deciding what schema to use. I just wanted to provide some data points about file size bloat for each schema type in the context of mods.txt. I want to ensure that we're looking to the future and taking scale into account so we can make informed decisions about the strengths/limitations of whatever schema we end up using.
Json
[
   {
      "mod_name": "CheatManagerEnablerMod",
      "mod_enabled": true
   },
   {
      "mod_name": "ActorDumperMod",
      "mod_enabled": false
   },
]

Toml
"CheatManagerEnablerMod" = true
"ActorDumperMod" = false

Yaml
CheatManagerEnablerMod: yes
ActorDumperMod: no

Xml
<mod name="CheatManagerEnablerMod" isEnabled="true"/>
<mod name="ActorDumperMod" isEnabled="false"/>

Mods.txt
CheatManagerEnablerMod : 1
ActorDumperMod : 0

Napkin Math

Format
Up-front bytes
Per-Entry Bytes
Comment Bytes

JSON
4
59-60 + N
0

TOML
0
10-11 + N
1+C

YML
0
6 + N
1+C

XML
0
32-33 + N
7 + C

TXT
0
5 + N
3 + C

Graph

I don't think we have to worry about file bloat for mods.txt/json.  It should only ever be for enable/disable and any additional metadata would go elsewhere.  Toml may be "ideal" for very simple files and yaml for complicated ones, but that is two separate libs that we'd need to pull in and that anyone interacting with our files would need to pull in, when json is a good middle ground for both.
Wrong place for general json settings discussion, but we iterated over several methods of setting up the settings file in json a long time ago, and made helpers to make commenting easy.
Our comment templates:

There is also jsonc:

JSON is originally intended to be a data interchange format, sure, but the original intention is not relevant.  In my opinion (and many others' opinions) it is very readable as a config format, and our library has powerful syntax error logging.

Also of note for the settings file is that we will likely have a GUI for the settings at some point, but even if we do not have a separate program, the debugging GUI will have a tab.  The only reason it doesn't already is because the current format would make it much more annoying to write changes out.

Our comment templates:

Does this support multi-line comments ?
We currently have multi-line comments in the ini file and horizontal scrolling is terrible so I think multi-line comments is something we should support if possible.
Does it support a field for the default value ? Could be part of a multi-line comment.
The default value provides an easy way for the user to experiment with values without having to pull up the file on github whenever they want to revert to the default.
I consider it valuable information.

I believe CC made functionality for multiline, yes.  This is another thing that got stuck in decision making limbo due to arguments, so it was long enough ago that I don't fully remember.

Yes, there was support for multiline. https://github.com/UE4SS-RE/RE-UE4SS/blob/main/deps/first/Constructs/include/Constructs/Annotated.hpp

I think runtime modifying of the settings is a good enough reason to change from our custom ini parser since that doesn't support modifying the file, but that brings into question backwards compatibility.
We could implement it similarly to the file location changes, but we'd have to disable runtime modifying if the ini file is being used instead of the new one.
But regardless, this isn't covered in this PR so unless you intend to expand it, I think we can move on from this discussion, and bring it back up when someone wants to implement changes to the settings file, or alternatively move this to an issue or discussion (with reference to here) if you think more discussion is needed.

Last time I implemented this I had it read out the old file and convert it to json, similar to what I do in this PR. I believe the in progress branch still exists as JSONSettings, but I can't recall what the context of the last push to it was.
But yeah, this can be made into an issue or separate discussion.

Last time I implemented this I had it read out the old file and convert it to json, similar to what I do in this PR. I believe the in progress branch still exists as JSONSettings, but I can't recall what the context of the last push to it was.

The problem with converting it is that it doesn't address the problem of third-party parsers expecting an ini file with the ini format.

I'm 99% sure there are no third party parsers for it.

I'm 99% sure there are no third party parsers for it.

We can't know for sure if there are, but it's generally a bad idea to break compatibility, and there is a better solution so we should use it.

I haven't even found a third party mod manager that actually uses mods.txt rather than enabled.txt, let alone the settings.  I'd literally eat my shoe if there is one.  But this PR favors the old mods.txt when updating the new one, though I am considering changing that now that I have done more research into whether any mod managers use mods.txt.  A similar thing could happen here.  Best practices shouldn't be used to the point of creating problems where there are none.

I don't think we have to worry about file bloat for mods.txt/json.

I agree that it's negligible in this case. I just wanted to make sure that we understand that we're increasing the size of that file by ~10x and that we're okay with that (which it looks like we are unless anyone wants to object).

I don't think we have to worry about file bloat for mods.txt/json.

I agree that it's negligible in this case. I just wanted to make sure that we understand that we're increasing the size of that file by ~10x and that we're okay with that (which it looks like we are unless anyone wants to object).

I mean worst case (and unlikely), someone will run a couple hundred mods.
How long would it take for glaze to parse a file that big ? Surely not long enough to be a problem ? It wouldn't be that big of a file.
Is that the main concern ? If so, it's not a big problem even if it does end up taking a huge amount of time like a couple of seconds extra to load the game, as long as it doesn't go any further than that.

I don't think we have to worry about file bloat for mods.txt/json.

I agree that it's negligible in this case. I just wanted to make sure that we understand that we're increasing the size of that file by ~10x and that we're okay with that (which it looks like we are unless anyone wants to object).

I mean worst case (and unlikely), someone will run a couple hundred mods. How long would it take for glaze to parse a file that big ? Surely not long enough to be a problem ? It wouldn't be that big of a file. Is that the main concern ? If so, it's not a big problem even if it does end up taking a huge amount of time like a couple of seconds extra to load the game, as long as it doesn't go any further than that.

I agree that it won't be a problem for a sane amount of mods. I just wanted to make sure we are planning on getting benefits from switching to offset the increase in file size. From what I've read on this discussion: readability, parsing libs, other mentioned benefits all outweigh the negligible size increase.
I just wanted to make sure we are getting tangible benefits and not just increasing the file size without any upsides in return. Apologies if it came off as being pedantic about size alone.

There will be confusion from users that end up having both mods.txt and mods.json. They won't know which one to edit or the repercussions of modifying the json file. The json file will be overwritten with the contents of the txt file so any changes to the json file will be discarded, and this is harmful to the user.
It is backwards compatible assuming that it always converts and thus fully discards the current json to avoid appending the data multiple times in it, but it has the problem mentioned above.
EDIT: This is all assuming that glaze isn't smart about it and just overwrites the entire file instead of setting each value one by one leaving existing (and unknown) values unchanged.

I suppose we could do favor ini/txt if not default settings, if ini default but json isn't favor json for each setting.. At this point I'm giving up on moving the convo for the ue4ss-settings from this PR since we're this deep into it.
In my opinion, the full backwards compat favoring settings.ini/mods.txt should last at most one minor release cycle post 4.0, or a couple months, whichever is longer.  After that, the converter should be left in until 5.0, but the legacy files shouldn't be read if the json exists.  It's a bit of a bandaid rip but with our release cycle I think that gives ample time for any mod managers that would ever make the switch to make the switch.
Glz will always read/write from the struct, so it's up to us how we want to populate the data in the struct from the existing ini/txt or jsons and which gets favored.

Can you rename legacy_enabled_mods_file, enabled_mods_file, and any other named references to mods.txt/json to something that doesn't clash with our concept of enabled.txt ?
I got confused by this naming at first when looking at your code.

Can you rename legacy_enabled_mods_file, enabled_mods_file, and any other named references to mods.txt/json to something that doesn't clash with our concept of enabled.txt ? I got confused by this naming at first when looking at your code.

Sure though enabled_mods_file was the original name of mods.txt, not something I changed.

Can you rename legacy_enabled_mods_file, enabled_mods_file, and any other named references to mods.txt/json to something that doesn't clash with our concept of enabled.txt ? I got confused by this naming at first when looking at your code.

Sure though enabled_mods_file was the original name of mods.txt, not something I changed.

Understood.
This was introduced before enabled.txt so that's why it was never changed but since we're making changes to the code now, we might as well make it less confusing.

Before I push it, does mod_list_file/legacy work?

Before I push it, does mod_list_file/legacy work?

Yes, that sounds fine.


Implement support for timeout specification

For the application I'm working on it would be useful to be able to specify the connection and send/recv timeout.
This could be implemented as an extra optional argument to relevant methods (e.g. Request::send()), as a connection-wide option to the Request() constructor, or something else.

Yes, I had a plan to do that. This will be the next improvement I will do for it.

Implemented connect and read/write timeouts.


TERC link type and TestSuiteStarted

A thought. We have currently defined that TestCaseStarted can use TERC links. Another option is to move it to TestSuiteStarted, dictating that if you execute based on a TERC you group your test cases as a single TestSuite, which references that TERC.
Thoughts?

I'd like to agree on that any test case originating from a TERC should also be part of a test suite on some level. Thus it would be fair to move the TERC link to the TestSuiteStarted event. You could still group test cases in a TERC into several test suites (even hierarchical) if needed/wanted.
So yes, I'd vote for moving the TERC link option from TestCaseStarted to TestSuiteStarted.


ZEVA - Credit agreements/adjustment not included in model year report starting balance

Background:
In prod we made an administrative credit reduction for Toyota, backdated to 30th September 2021. This further reduced the credit balance of Toyota on 30th Sept 2021 beyond the reduction made fro their 2020 model year assessment, which was also made on the same date (30 Sept 2021).
The problem is that when Toyota created their new model year report for 2021 model year, the starting balance of the report, or the balance shown in the compliance obligation page on 30th Sept 2021 does not include the administrative credit reduction we made to their balance on that date. This is because the model year report takes the assessed balance form the snapshot of the previous assessment as the starting balance for the report (not from the transactions table).
To resolve this issue requires us to complete the reassessment feature. But in the meantime to make sure model year report have the correct balance and transaction please complete these two tasks:
Check and make sure model year reports pull their starting balance (Balance as of the previous Sept 30th) from most recent assessed/reassessed balance.
Check and make sure that the model year report captures all types that credits can be allocated under the credit agreement section (https://zeroemissionvehicles.gov.bc.ca/credit-agreements/new). Credits issued under these agreements should be displayed in the credit activity section of the compliance obligation tab of the model year report.

Acceptance Criteria:
Given I am a BCeID user
When I am compiling and submitting a model year report
Then the starting balance on the report should reflect the final assessed or reassessed balance at the end of the previous 30th Sept, taken from the assessment or reassessment snapshot
And the model year report should include all types of credit activity that took place in the relevant compliance period, including credits issued by government under the credit agreement section
Development Checklist:
Notes:

Emily - 25/Nov/22
I tested the agreements locally, all agreements are included in the model year reports with the exception of Reassessment Reduction, Reassessment Allocation
James - 14/Dec/22
Issue paused. Code for this feature needs to be refactored before the issues can be worked on again.


Use conda instead of mamba in windows conda-forge bundled app

Description
The fixes by @jaimergp worked like a charm, but a new problem appeared with mamba. Not sure what the issue is but seems related to win32com.
This PR uses conda on windows and mamba for the rest. If we cannot find a quick fix for the mamba problem this is a quick workaround to go ahead with the release in the meantime.

Type of change

[x] Bug-fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

References

How has this been tested?

[ ] example: the test suite for my feature covers cases x, y, and z
[ ] example: all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If I included new strings, I have used trans. to make them localizable.
For more information see our translations guide.

Related to https://github.com/napari/napari/issues/4247


Add some commonly usable facilities to dynamically import files

BEGINRELEASENOTES

Add load_file to k4FWCore.utils module to allow loading more options files in user configuration.

Fixes #147 in passing

Add import_from method to k4FWCore.utils that allows to import a module via a file path.

Useful for when the imported file / module is dynamically determined
Also allows to inject some global state, such that imported module can in principle be incomplete and reference some global variables without having to define them in the module (e.g. some calibration constants)

Add a SequenceLoader that allows to dynamically import sequences with calibration / config that might not be fully determined until a sequence of algorithm is loaded.

Effectively just a thin wrapper around import_from to take off a bit of the boilerplate and to introduce some convention.

ENDRELEASENOTES

[x] Builds on top of #177

Example output for error in user code when called with k4run MarlinStdReco.py
[...]
Traceback (most recent call last):
  File "/home/tmadlener/work/.spack/spackages/k4fwcore/main/skylake-ubuntu22.04-gcc12.3.0/mpeneeo/bin/k4run", line 190, in <module>
    load_file(file)
  File "/home/tmadlener/work/.spack/spackages/k4fwcore/main/skylake-ubuntu22.04-gcc12.3.0/mpeneeo/python/k4FWCore/utils.py", line 26, in load_file
    exec(code, globals())
  File "MarlinStdReco.py", line 197, in <module>
    MyAIDAProcessor.OutputLevel = INO
NameError: name 'INO' is not defined. Did you mean: 'INFO'?

load_file looks fine. For the rest a test where it's actually being used would be nice

Removed everything but the load_file from this again. The rest can come later once we know what we actually want with that.


Auth: inherit does not work for Oauth2 requests

I have checked the following:

[X] I use the newest version of bruno.
[X] I've searched existing issues and found nothing related to my issue.

Describe the bug

Try and use "Oauth2"

Setup collection auth to be Oauth2.
Click buttons "Save" and "Get Access Token".
Setup request auth to be "inherit"
Send request.
Expected result: A "Bearer" header appended to a request --- or, at least, some global variable is provided to reach the key
Actual result: No extra header, no usable variable in bru, req, or anywhere

Try and use "Bearer Token"

Setup collection auth to be Bearer Token.
Click "Save"
Result: A "Bearer" header appended to a request, and there is no need to search for any variable, since it is already used properly.
Summary
Please provide some way to inherit OAuth2 of the collection in the request, where exporting a variable with JWT to scripting environment would probably be the best solution. Right now there is literally no way to use the JWT received by collection in the request. The value of the JWT is not exported in any way and JWT is not accessible through any accessors in the scripting environment.
Thank you.
.bru file to reproduce the bug
No response
Screenshots/Live demo link
See explanation above. I am wary of inadvertently revealing service credentials if i do any screenshots or livecasts.

This is a duplicate of #1704