Improve V2 migration experience

Happy holidays and thanks for the timely 2.0.0-dev.4 bump!
Problem: V2 migration is underdocumented & has unexpected quirks
I followed the "Upgrade to V2" guide and managed to upgrade to 2.0.0-dev.4. However, the upgrade experience has a few unexpected quirks that I wish other people can avoid. In summary, the 4 steps listed in the doc is not enough in my experience:

Follow the quickstart to integrate V2 boilerplate into the existing project (in a few commands).
Move original Rust code (e.g. in api.rs) to rust/src/api/simple.rs. (You can also split into multiple files, e.g. apple.rs, orange.rs, etc.)
Run code generator (whenever your code changes).
Fix compilation errors (usually just a rename or relocation) and runtime exceptions (usually have hints).

1. rust_builder missing
The rust_builder library is not automatically generated by running flutter_rust_bridge_codegen generate. I did flutter run after running generate but the api failed to initialize because of a missing dylib. I was quite puzzled for a while until I realized that the binary is now generated on-the-fly rather than prebuilt.
2. integrate overwrites existing files silently
So a natural step was to run flutter_rust_bridge_codegen integrate in hope of generating the rust_builder. However, I was surprised that the integrate command completely overwrote my existing main.dart and Cargo.toml. The command also autogenerated a few files that I don't need, including rust/src/api/simple.rs and integration_test/simple_test.dart.
3. Rust build errors hidden at default log level
I initially did not realize that those files were overwritten and just ran flutter run as usual. The command then mysteriously failed with a one-liner error message: Could not build the precompiled application for the device. I had to do flutter run -v, browse through the massive trace, and finally found out that the rust library is messed up due to the overwrite. Notably, I was able to see the Rust build errors in V1 because I explicitly ran cargo build myself. However, the cargokit build errors in V2 are not even showing up at the default log level of flutter run. (I was building for a real iOS device)
4. Missing step for removal of old files
Another step that's not mentioned in the migration steps is the removal of any old native binary files, old bridge_generated files, any old imports, and running flutter clean. This step is trivial but can cause confusion if missed during migration. For example, I forgot to remove one of the old bridge_generated imports and directly added the new imports to a dart file. This caused conflicting imports for many api functions I'm using and took me a while to realize the cause of the issue. Also running flutter clean seems to be required due to some old cached files needing to be deleted.
5. No obvious way to configure cargokit for release mode in flutter run
And lastly, cargokit defaults to debug build for rust when running flutter run, which is a sensible default. However, for my use case, I always need a release build for rust because otherwise the api is going to be horribly slow, even for testing. This is probably a bad implementation on my part but the release build speeds things up by 10x or more. I suspect that some other devs might also need a release build for testing because my assumption is that the business logic in rust is usually very performance-sensitive and might be changed relatively infrequently during UI testing. And as long as cargokit is smart enough to not rebuild rust every time I do flutter run, I can bear with the cost of a release build for rust.
Proposed Changes
1. rust_builder missing

Option 1: flutter_rust_bridge_codegen generate should generate rust_builder if it's missing.
Option 2: Add instructions in migration to manually generate rust_builder

2. integrate overwrites existing files silently
integrate command should default to not overwrite existing files. Output a message listing the things that need to be changed in the existing files.
3. Rust build errors hidden at default log level
Show rust build errors when doing flutter run so the developers are informed of the issues.
4. Missing step for removal of old files
Add a step to migration guide detailing things to remove from V1
5. No obvious way to configure cargokit for release mode in flutter run

Option 1: Add a config option to flutter_rust_bridge_codegen to specify cargokit build modes for flutter debug/profile/release builds.
Option 2: Add instructions on how to configure cargokit to build in release mode even when flutter is in debug mode.

Additional thing I noticed on Android: cargokit requires the definition of minSdkVersion to android/app/build.gradle. This is currently not documented.
Another good-to-have thing in the doc website is a search functionality. The new V2 website looks great but I can't find the search button anymore.

Additional thing for iOS:

If you followed fzyzcjy's StackOverflow answer on automatic integration of Flutter and Rust, you also need to tear down the relevant configurations carefully. You basically need to reverse the setup steps you did by either removing the old Build Phase (if using method 1) or deleting the script_phase in your Podfile (if using method 2). This also applies to anyone who followed the setup for Android. You need to reverse your changes to the build.gradle file.

Then, you need to delete the ios/Runner/bridge_generated.h file, remove the line #import "bridge_generated.h" in ios/Runner/Runner-Bridging-Header.h, and remove bridge_generated.h from the "Copy Bundle Resources" build phase.

Now, you can safely delete the ios/Runner/libmyapp.a and remove it from the "Link Binary With Libraries" build phase.

Finally, you can safely remove the print("dummy_value=\(dummy_method_to_enforce_bundling())"); line in ios/Runner/AppDelegate.swift if you had that workaround.

Thank you very much for the detailed information! That is partially why I want to keep it beta for a while - to listen from people like you for real-world feedbacks!

(the comments above are done now)

rust_builder missing
maybe we should directly halt and print out error message saying that "please use integrate instead", if the target folder already exists?

Totally agree.

integrate overwrites existing files silently

I think there might be two slightly different use cases for integrate. One is for people new to FRB who wants to add Rust code to their existing Flutter project, while the other is for people already on FRB V1 who wants to migrate to V2.

-> b/c I want the integrate command to immediately be able to create a self-contained demo and I guess this is the simplest way. feel free to propose alternatives!

I think for the second use case, maybe a command line flag like --migrate would be useful? As you said, it can be similar to dart fix and suggest some fixes. With the migrate flag on, FRB would no longer generate stub implementations. As for a MVP for this potential feature, I think it will just add in the rust_builder library and print out some instructions/links to docs on how to migrate to V2.

Rust build errors hidden at default log level

I filed an issue at cargokit.

No obvious way to configure cargokit for release mode in flutter run

After a few days, I suddenly realized that I can just configure the dev profile directly in Cargo.toml!
[profile.dev]
opt-level = 3

Search functionality

https://github.com/fzyzcjy/flutter_rust_bridge/issues/1545
4, 6, 8: Will submit a doc PR later.

For overriding main.dart, the current behavior should be, comment out all existing code, and inject the demo code.
What about this change:

Put the commented out existing code above new demo code, such that you can easily see they are commented.
Add a line of hint saying it is commented out for demonstration

I think for the second use case, maybe a command line flag like --migrate would be useful? As you said, it can be similar to dart fix and suggest some fixes. With the migrate flag on, FRB would no longer generate stub implementations. As for a MVP for this potential feature, I think it will just add in the rust_builder library and print out some instructions/links to docs on how to migrate to V2.

I guess you mean dart analyze or flutter doctor - good idea! e.g. we may just write down a flutter_rust_bridge_codegen doctor, which, in addition to checking environment etc, but also checks rust_builder folder, etc.

After a few days, I suddenly realized that I can just configure the dev profile directly in Cargo.toml!

Good idea! This has a bit of problem: What if someone wants to really debug the binary on other scenarios, e.g. when unit test, or when developing on the computer. But yes, it should work in most of the scenarios.
Looking forward to your PRs!

(There are a few points that have not been solved, so maybe keep it open)

Tracking

[ ] 1
[ ] 2
[ ] 3
[ ] 4
[ ] 5
[ ] 6
[ ] 7
[ ] 8


v0.2 tracking issue

Main Features:

[ ] https://github.com/skip-mev/skip-api-contracts/issues/21

[x] https://github.com/skip-mev/skip-api-contracts/pull/27
[ ] Make user_swap accept a swap enum
[ ] Make affiliate fee BPS based on min_coin
[ ] Support SwapExactCoinOut variant of Swap enum

General Improvements:

[x] https://github.com/skip-mev/skip-api-contracts/pull/26
[x] https://github.com/skip-mev/skip-api-contracts/pull/29
[x] https://github.com/skip-mev/skip-api-contracts/pull/30
[x] https://github.com/skip-mev/skip-api-contracts/pull/31
[x] https://github.com/skip-mev/skip-api-contracts/pull/32
[x] https://github.com/skip-mev/skip-api-contracts/pull/33
[x] https://github.com/skip-mev/skip-api-contracts/pull/34
[x] https://github.com/skip-mev/skip-api-contracts/pull/35
[ ] https://github.com/skip-mev/skip-api-contracts/pull/36

Audit Improvements:

[x] https://github.com/skip-mev/skip-api-contracts/pull/19

Total Interface Changes:

PostSwapAction type renamed to Action (https://github.com/skip-mev/skip-api-contracts/pull/26)
Optional refund_address field added to SwapExactCoinOut (https://github.com/skip-mev/skip-api-contracts/pull/27)
coin_in removed from SwapExactCoinIn type (https://github.com/skip-mev/skip-api-contracts/pull/31)
fee changed from a required field (IbcFee) to an optional field (Option<IbcFee>) (https://github.com/skip-mev/skip-api-contracts/pull/35)
coin_out removed from SwapExactCoinOut type (https://github.com/skip-mev/skip-api-contracts/pull/36)
user_swap param in entry point's swap_and_action changed from type SwapExactCoinIn to an enum type Swap, with two variants: SwapExactCoinOut and SwapExactCoinIn

Non-Interface Changing But User Impactful Logic Changes:

Affiliate fee BPS are now applied on the min_coin and not the coin received from the swap. This is to allow the affiliate fee logic to be standardized for the user swap for both SwapExactCoinIn and SwapExactCoinOut

@wllmshao @zrbecker This issue is tracking all the changes I want to make for our next contract release. I merged in many changes in the general improvements category (thinking they were uncontroversial and internal quality of life/code changes), but realized anything that is interface changing can/may be controversial.
I've listed all the interface changes in Total Interface Changes and the associated PR with them, when you have time would be great to view the changes and call out if you disagree with any.
Anything can be changed, regardless if they have been merged already, so if you'd like to review all the general improvement PRs please feel free to do so.
The changes listed without PRs linked do not have PRs ready for them yet.


1475: Front-End: Healthcare and TDL occupations section

Resolves 1475
Change Career Pathways for Medical and TLDR to match Manufacturing jobs without the career map.

Hey @Sun-Mountain! I'm seeing 107 files changed here now for this PR starting from when you merged master into this branch. This caused configuration stuff from master and other things we DON'T want in career pathways branches. Do you think you'd be able to back that merge out? If you're looking to "update" from a higher branch here, you'd want to merge from v2.1, not master


cluster_boot seems to over-report boot time

The code docs say that cluster_boot reports how long it takes for a VM to become responsive to SSH, but I experience much faster ssh response times for GCE than PKB is reporting.
PKB for gcloud:
CLUSTER_BOOT:
  num_cpus="1" num_vms="10" # n1-standard-1
  Boot Time                            78.790919 seconds                        (machine_instance="0")
  Boot Time                            82.916165 seconds                        (machine_instance="1")
  Boot Time                            82.787568 seconds                        (machine_instance="2")
  Boot Time                            82.920172 seconds                        (machine_instance="3")
  Boot Time                            78.791941 seconds                        (machine_instance="4")
  ...

Manually:
$ START=`date +%s`; CREATE=`gcloud compute instances create zb-boot-1 --format json --zone us-central1-a --image ubuntu-14-04 --boot-disk-auto-delete --boot-disk-type pd-standard --boot-disk-size 10 --machine-type n1-standard-1 --no-restart-on-failure --preemptible`; echo "running: $((`date +%s`-$START))"; gcloud compute --quiet ssh zb-boot-1 --command "pwd"; echo "ssh response: $((`date +%s`-$START))"; gcloud compute instances delete zb-boot-1 --quiet
ssh response: 52

49 to 52 seconds is pretty consistent for that image, machine type and disk type, which is to say cluster_boot over-reports by about 30 seconds. I haven't followed PKB's code too closely, but is the "boot time" including the time to create the network and all other resources, not just the VM? I think just the VM is the most metric useful if people are evaluating how quickly a VM can be contribute to an autoscaling group, for example. (That's my use case, at least.)
For AWS EC2, standard EBS, m4.large, ubuntu (ami-0fbce65), cluster_boot reports ~84 seconds. Manually I get 67 seconds until ping, 80 seconds until SSH. Not off by nearly as much.
(Aside, cluster_boot is running stuff like sudo apt-get update. It doesn't seem to be timing those commands, but they waste time if you're trying to make these benchmarks run faster.)
(Very happy this benchmark kit exists, thanks for releasing it!)

Thanks for reporting this. For GCP: right now I believe the network creation is not included in the reported time, but creating a firewall rule to allow SSH access is, which is causing these numbers to appear higher. I'll check into it.

Thanks for doing that so quickly. Numbers look better.

Considering #722 was reverted by #725, should this be reopened?

Definitely. I'm working on this now.

Re-fixed :)


Object associations behave inconsistently inside factories

In our rails app, we had some code like this:
class Account < ApplicationRecord
  belongs_to :unit

  validates_presence_of :number
  validates_uniqueness_of :number, scope: :unit_id, message: "Number has to be unique for this unit"
end

class Unit < ApplicationRecord
  has_many :accounts, dependent: :destroy
end

# factories/accounts.rb
FactoryBot.define do
  factory :account do
    association :unit
    sequence(:name) { |n| "Fake account #{n}" }
    number {
      generate_account_number(
        unit.accounts.pluck(:number).to_set
      )
    }
  end
end

# factory_bot_helpers.rb
def generate_account_number exclude_list
  l = -> { "%04d" % rand(10**4) } # generate a 4-digit random number
  number = 1
  attempt = 0
  loop do
    attempt += 1
    number = l.call
    break unless exclude_list.include?(number.to_s)
    raise "We've run out of account numbers for this unit" if attempt > 1000
  end
  number.to_s
end

# some_spec.rb
some_unit = FactoryBot.create :unit

# ... pretend we create ~10 accounts here

# this one fails randomly because the association unit.accounts returns an empty collection
FactoryBot.create :account, unit_id: some_unit.id

# this one always works because the association returns the accounts already created
FactoryBot.create :account, unit: some_unit

Our problem lies inside the number-block (where we call generate_account_number)
When passing unit_id to the factory unit.accounts returns []
When passing a unit object to the factory unit.accounts returns actual accounts.
Our current solution looks like this: Account.where(unit_id: unit_id).pluck(:number).to_set
There shouldn't be a difference between these two.
The problem is that subtleties like this cause failing tests and weird unintuitive behavior.
There are a couple of things I would like to be able to do about it:
If I could configure this particular factory to simply raise if passed any {attribute}_id (or an arbitrary attribute), we could prevent ourselves from accidentally building test data incorrectly. We would also want to configure this factory to be unbuildable (raise on calling :build), as it would have to run a query against the database to ensure that the data generated is valid.
(yes I know we should use a sequence)
System configuration
factory_bot version:  4.11.1
rails version:  5.2.2 (activerecord 5.2.2)
ruby version:  2.4.2

This is an interesting one! It seems to be a bug related to association aliasing (factory_bot aliases #{association} and #{association}_id, and if one of those is passed in as an override it will not set the other one).
You should be able to work around this by either ensuring you always pass a unit instead of a unit_id, or by changing
unit.accounts.pluck(:number).to_set

to
Unit.find(unit_id).accounts.pluck(:number).to_set`

(although in this case you will need to be sure define the unit association before the attribute that relies on it).

I created a reproduction script to demonstrate this problem without the code specific to your application. In this example we have a denormalized author_name stored on a Post.
require "bundler/inline"

gemfile(true) do
  source "https://rubygems.org"
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
  gem "factory_bot", path: "~/Desktop/thoughtbot/factory_bot"
  gem "activerecord"
  gem "sqlite3"
  gem "byebug"
end

require "active_record"
require "factory_bot"
require "minitest/autorun"
require "logger"
require "byebug"

ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)

ActiveRecord::Schema.define do
  create_table :authors, force: true do |t|
    t.string :name
  end

  create_table :posts, force: true do |t|
    t.references :author
    t.string :author_name
  end
end

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

class Post < ApplicationRecord
  belongs_to :author

  validates_presence_of :author_name
end

class Author < ApplicationRecord
  has_many :posts
end

# factories/accounts.rb
FactoryBot.define do
  factory :author do
    sequence(:name) { |n| "Name #{n}" }
  end

  factory :post do
    association :author
    author_name { author.name }
  end

  factory :post_with_swapped_order, class: Post do
    author_name { author.name }
    association :author
  end

  factory :post_with_explicit_lookup, class: Post do
    association :author
    author_name { Author.find(author_id).name }
  end

  factory :post_with_explicit_lookup_and_swapped_order, class: Post do
    author_name { Author.find(author_id).name }
    association :author
  end
end

class FactoryBotTest < Minitest::Test
  def test_passing_author
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post, author: author)

    # This passes because the `author` override is put into the Evaluator
    # @cached_attributes on initialization, and so it is available when used by
    # the `author_name` attribute.
    assert_equal author.name, post.author_name
  end

  def test_passing_author_id
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post, author_id: author.id)

    # This test fails. When we call `author` inside of `author_name`, the
    # Evaluator calls its defined `author` method, which creates a brand new
    # `Author` instance, unrelated to the `author_id` passed in
    assert_equal author.name, post.author_name
  end

  def test_passing_author_with_swapped_order
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post_with_swapped_order, author: author)

    # This passes. The order of the attributes doesn't matter here since the
    # Evaluator caches the `author` override on initialization.
    assert_equal author.name, post.author_name
  end

  def test_passing_author_id_with_swapped_order
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post_with_swapped_order, author_id: author.id)

    # This test fails. The order of the attributes isn't significant for
    # this case
    assert_equal author.name, post.author_name
  end

  def test_passing_author_with_explicit_lookup
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post_with_explicit_lookup, author: author)

    # This passes because we never end up defining the `author_id` method on
    # Evaluator, so it falls back to calling `author_id` on the Post instance
    # itself. `author` is set by the time we call `author_id`.
    assert_equal author.name, post.author_name
  end

  def test_passing_author_id_with_explicit_lookup
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post_with_explicit_lookup, author_id: author.id)

    # This passes since the `author_id` is put into the Evaluator's
    # @cached_attributes on initialization, making it available to the
    # `author_name` attribute
    assert_equal author.name, post.author_name
  end

  def test_passing_author_with_explicit_lookup_and_swapped_order
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post_with_explicit_lookup_and_swapped_order, author: author)

    # This test errors because we fall back to calling `author_id` on the Post
    # instance itself, but we do that before we have set the `author` on the
    # post (attributes get applied in the order they are defined)
    assert_equal author.name, post.author_name
  end

  def test_passing_author_id_with_explicit_lookup_and_swapped_order
    author = FactoryBot.create(:author)
    post = FactoryBot.create(:post_with_explicit_lookup_and_swapped_order, author_id: author.id)

    # This passes since the `author_id` is put into the Evaluator's
    # @cached_attributes on initialization, making it available to the
    # `author_name` attribute. The order is not significant for this case.
    assert_equal author.name, post.author_name
  end
end

I think there is probably some work we can do to improve this. I assume it would be mostly in the AttributeAssigner and Evaluator classes.
For whoever ends up looking into this: the Evaluator class can be a bit tricky to debug since it undefines most of the standard class methods. I have been using byebug and setting breakpoints with ::Kernel.debugger (debugger by itself was failing with mysterious errors).


Support huggingface-cli older than 0.25.0, like on Fedora 40 and 41

Currently, on Fedora 40 and 41, pulling a model from Hugging Face fails with:
  $ ramalama pull
      huggingface://afrideva/Tiny-Vicuna-1B-GGUF/tiny-vicuna-1b.q2_k.gguf
  usage: huggingface-cli <command> [<args>]
  huggingface-cli: error: argument {env,login,whoami,logout,repo,upload,
      download,lfs-enable-largefiles,lfs-multipart-upload,scan-cache,
      delete-cache,tag}: invalid choice: 'version' (choose from 'env',
      'login', 'whoami', 'logout', 'repo', 'upload', 'download',
      'lfs-enable-largefiles', 'lfs-multipart-upload', 'scan-cache',
      'delete-cache', 'tag')
  Error: Command '['huggingface-cli', 'version']' returned non-zero exit
      status 2.

This is because the huggingface-cli version command is a recent addition in version 0.25.0 [1], and it's not present in any stable Fedora release [2].
Therefore, it might be worth using a slightly different signature to detect the presence of huggingface-cli - one that has existed for longer.

Summary by Sourcery
Bug Fixes:

Fix compatibility issue with older versions of huggingface-cli on Fedora 40 and 41 by changing the command used to check its availability.

How about?
import shutil
path = shutil.which("huggingface-cli")

How about?
import shutil
path = shutil.which("huggingface-cli")

Sure, why not?  I am not much of a Python programmer.  :)

LGTM


--ulimit memlock=-1 --ulimit stack=67108864  Are these two parameters required to be set?

What would be the consequences if these two parameters are not set? Currently, I have not set them, and the program appears to freeze up when it runs.

Are these two parameters required to be set?

Close this bug because the issue is inactivated. Feel free to ask here if you still have question/issue, we will reopen the issue.


factors

this slide https://daseh.org/modules/Factors/Factors.html#19 about forcats for ordering , the size of the font is very small... and for the subsequent slides

This slide doesn't fit: forcats for ordering.. can be used to sort datasets
or the slide on change to a factor: https://daseh.org/modules/Factors/Factors.html#12

Slide #15 still says "arrange data by grade" in the title. Should instead be "arrange data by age"

Slide #23 the comments explaining how the factor is being reordered need to be updated

slide 19 forcats for ordering extra afterRATE`

file:///Users/carriewright/Documents/GitHub/DaSEH/modules/Factors/Factors.html#9 slide 9 - the data - it should say it will assume alphanumerical

Slide #23 the comments explaining how the factor is being reordered need to be updated
This appears to be resolved

slide 19 forcats for ordering extra afterRATE`

This appears to be resolved

the remaining issues are resolved in PR #218


feat: add platform flags to the template

The template should only generate platform directories when certain flags are given for those platforms

We're moving this repository to Very Good Templates. Hence, I'm closing this issue in favour of https://github.com/VeryGoodOpenSource/very_good_templates/issues/30.


New version: VTTrac v0.2.1

Registering package: VTTrac
Repository: https://github.com/tsukada-cs/VTTrac.jl
Created by: @tsukada-cs
Version: v0.2.1
Commit: e9e1bffd9aea4ad02645f709d9905ec703018a39
Reviewed by: @tsukada-cs
Reference: https://github.com/tsukada-cs/VTTrac.jl/commit/e9e1bffd9aea4ad02645f709d9905ec703018a39#commitcomment-75309187

@tsukada-cs did you skip a version number on purpose?  What do you want to do?
[noblock]

@giordano It was unintentionally skipped. I will try to correct it.

@giordano I have created a new PR, can you please close this PR?


DoChat在Fedora上无法使用

已经把当前用户加入到docker组，并且安装了nvidia-container-toolkit.
非root用户手动创建DoChat文件并且把docker.sh里user改为$USER后仍旧提示没有权限。

运行脚本后会出现这个界面，点击确定或者关闭后报错。

Could you please share what you have done for fixing it?

sudo usermod -aG docker $USER
curl -sL https://raw.githubusercontent.com/huan/docker-wechat/master/dochat.sh | bash
It will pull the docker-image "zixia/wechat" automaticaly.
It will also create the directory "DoChat",but it belongs to root.
sudo chown $USER:$USER DoChat -R
curl -sL https://raw.githubusercontent.com/huan/docker-wechat/master/dochat.sh | bash
Run it again.
The WeChat will appear but it also has some problems.For example,it cannot follow system agent automatically and The terminal still prompts an error and the container cannot be saved(That means it becomes a one-time WeChat).


Add support for NPS Pridnestrovie

Hello,
I would like to identify card from NPS Pridnestrovie. You can get NPS Pridnestrovie traits on Wikipedia.
If you want to solve this issue, check this how-to guide.
Cheers,

Would like to work on this.

@blouflashdb Sorry I just implemented it right now 😅

@ntbm I will let this one go but next time don't start to code an issue if someone is already involve in it. Ask first :)


Natural Language Querying (NLQ) using genAI

Problem statement
Data.all currently requires users to have technical knowledge of data.all datasets, glue tables, schemas, S3 buckets, folders and SQL querying in order to access and derive insights from the diverse structured and unstructured data sets available across the organization. This creates a significant barrier for non-technical business users who need to quickly and easily query data to make informed decisions. The problem is that there is a lack of intuitive, natural language-based interfaces that allow these users to ask questions in plain English and receive relevant, contextual data responses without requiring SQL expertise or specialized data extraction abilities.
Generative AI models offer a promising solution to bridge this gap by enabling natural language querying capabilities that understand user intent, extract data from both structured and unstructured sources, and generate dynamic responses tailored to the user's needs. This feature aims to empower non-technical users such as business analysts and executive decision makers to query and analyze structured and unstructured data using natural language querying by leveraging Generative AI (GenAI) capabilities to improve data accessibility and data-driven decision-making within data.all.
User Stories
Describe the solution you'd like
US1.
US1. As a Data Consumer, whether a non-technical business user, business analyst, or executive decision maker, I want to be able to query structured data in data.all using natural language, so that I can quickly find and retrieve the insights I need for my applications and decision-making processes.
Acceptance Criteria:

Data consumers can formulate natural language queries to retrieve information from structured data sources with a correction feedback loop to ensure valid SQL generation and execution
Data consumers are presented with the query results in a clear and easy-to-understand format.

US2.
US2. As a Data Consumer, whether a non-technical business user, business analyst, or executive decision maker, I want to be able to query unstructured data sources in data.all using natural language, so that I can quickly find and retrieve the insights I need for my applications and decision-making processes.
Acceptance Criteria:

Data consumers can use natural language to query unstructured data sources containing text documents (e.g., PDF documents, text files), and the system will retrieve and summarize the relevant information.
Data consumers are presented with the natural language query results in a clear and easy-to-understand format with references where appropriate

US3.
As a data.all developer and maintainer, I want the natural language query feature to be secure and respect data governance access permissions.
Acceptance Criteria:

The natural language query feature employs a least privilege model to limit permissions and complies with data.all's security posture.
The natural language query feature is available to only authenticated data.all users and has the same data access permission as the user

US4.
As a data.all developer and maintainer, I want the natural language query feature to be configurable, scalable, reliable, and seamlessly integrated into the data.all platform, so that I can ensure a smooth and efficient user experience for all data.all users.
Acceptance Criteria:

The natural language query feature is modularized and can be turned on and off.
The natural language query functionality is seamlessly integrated into the data.all user interface either in the worksheets module or a dedicated data.all module without significant changes in user experience.

US5.
As a data.all developer and maintainer, I want to be able to configure rate limits for the natural language query feature so that I can prevent overuse and ensure responsible access to the feature.
Acceptance Criteria:

Maintainers can set thresholds for daily use metrics like dollar amount spent or number of queries executed per user.
Once a user hits the configured threshold, the natural language query feature will provide notifications to the user when they reach the usage limits and will be restricted for that user until the next day

###US6.
As a data.all developer and maintainer, I want the natural language query feature to clearly display a disclaimer about the limitations and confidentiality of the responses, so that I understand the context and boundaries of the AI-generated information.
Acceptance Criteria:

The natural language query feature UI always presents a disclaimer that cannot be easily missed by the user and states

US7. (Future Scope)
As a data.all developer and maintainer, I want the natural language query feature to provide feedback functionality so that users can easily indicate if the response was helpful or not, which can then be used to improve the quality of future responses.
Acceptance Criteria:

The natural language query feature includes a thumbs up/down widget that users can click to provide feedback on the response which is captured and used to refine and improve the natural language query responses over time.
Users receive a confirmation message after providing feedback, assuring them that their input will be used to enhance the feature.

Scope
Structured Data Query (SQL Generation & Execution)

Data Selection: Select the table that you are interested in executing the natural language query.
Natural Language to SQL Translation: Convert the natural language query into an SQL query.
Query Execution: Run the SQL query on Amazon Athena to retrieve results.
Result Presentation: Display the results to the user in an easily understandable format along with the SQL query generated.
Example User Query: "Show me the total sales for the last quarter."
Generated SQL executed:

SELECT SUM(sales) AS total_sales
 FROM sales_data
 WHERE quarter = 'last_quarter';

Unstructured Data Query

Data Selection: Select contents from a specified bucket (e.g., S3 bucket with PDF documents).
Contextual Retrieval: Fetch relevant data chunks based on the user's query.
Answer Generation: Generate a coherent response from the retrieved data chunks using an LLM.
Example User Query: "What are the key points in the latest project report relevant to key action for the dev team?"
Example Generated Response: "Summarized key points extracted from the document stored in S3."

The latest project report highlighted several critical issues that require urgent
attention from the dev team. First, the report identified a major performance
bottleneck in the backend systems that is causing frequent crashes and slowdowns.
Addressing this performance issue should be the top priority for the dev team.
Secondly, the report noted several user-reported bugs in the mobile app that need
to be fixed in the next release. Finally, the report recommended exploring new
technologies and frameworks that could improve the overall system architecture and
developer productivity.

Out Of Scope

Bring Your Own Model: The natural language querying feature will not support the ability for users to bring their own language models.
Fine Tuning: This feature doesn’t include fine tuning of LLM to get a customized model. This has been kept this way as data.all is deployed in a customer environment and due to lack of data on user executed requests and fine-tuning requires a significant size of data to align the model to a particular domain or task.
Chatbot style conversation: This feature currently is single question answering style where user gives context and get answers. Each query execution is independent of previous query requests and depends only on the current context.
Query Knowledge Management: Context given by user for one execution is not explicitly passed for other query executions. In case user needs to use same context, it is the user responsibility to provide these context in different query execution requests.
Role Management: The natural language query feature will assume the same role of a generic analyst persona and will not customized for different user personas.
Query response cache: The natural language query feature will prioritize feature velocity over fine tuning and ensuring cache quality, with the trade off of extra cost for repeated queries

Guardrails

Transparency and Disclosure: Positioning the feature as "experimental" and setting clear expectations with users about the limitations and potential uncertainties like hallucinations in the responses. This helps manage user expectations and encourages a "trust but verify" mindset.
Truthfulness and Integrity: Aligning the GenAI models to "never lie" and avoid generating intentionally false or fabricated information. This is a crucial principle to establish credibility and build user trust.
Continuous Monitoring and Refinement: Closely monitoring the performance and quality of the natural language querying feature, and using user feedback to iteratively improve the underlying GenAI models and response generation processes.
Dynamic Threshold-based Safeguards: Dynamic thresholds and robust controls will be implemented to detect and flag potentially inappropriate, harmful, or biased responses from the GenAI model especially for unstructured data querying.
Clear and Informative Error Messages: The feature will provide clear and contextual guidance to users on how to reformulate their queries when issues are encountered, empowering them to refine their requests for better results.
Cost: Usage will be restricted to a specific metric per day per user to promote responsible use. The choice of model will be determined through a frugal evaluation of functionality and cost. Estimated usage costs will be published to allow customers to make informed decisions.

Design
User Experience
Text To SQL

User navigates to data.all Worksheet view where there will be a button for TextToSQL NLQ. When clicking on the buttons a modal window opens. In this modal a user will:

Select one or more tables from a drop down for which they want to query data from (at least 1 required)
Provide a user inputted prompt for what they are trying to query (required)

Once the user is content with their selection, they will press "Generate SQL Response" at the bottom of the modal window
After some processing time, the original WorksheetsView is populated with a SQL query in the top half editor view and the outputted data in the bottom half of the screen
If there are any errors that are thrown - the UI will navigate back to the empty WorksheetView and the error message will be displayed on the top right corner
There will be a limit of “Generate SQL Response” API calls performed per day or per day/team. If the number is surpassed, a comprehensive error message will appear in the top banner.

Document Analysis (Unstructured Use Case)

User navigates to data.all Worksheet view where there will be a button for Document Analysis. When clicking on the buttons a modal window opens.

Select a dataset. (i.e. S3 Bucket) and (optional) folder from a drop down for which they want to get information from (required)
Provide a user inputted prompt for what they are trying to query (required)

Once the user is content with their selection, they will press "Send Query Prompt" at the bottom of the modal window
After some processing time, the original WorksheetsView is populated with the response returned from the “Send Query Prompt API“
If there are any errors that are thrown - the UI will navigate back to the empty WorksheetView and the error message will be displayed on the top right corner
There will be a limit of “Send Query Prompt” API calls performed per day or per day/team. If the number is surpassed, a comprehensive error message will appear in the top banner.

There will be a limit of Generate Metadata API calls performed per day or per day/team. If the number is surpassed, a comprehensive error message will appear in the top banner.
Data analysis
For this use-case it is relevant to describe the different types of data and metadata that would serve as input to the generation of metadata. Depending on the data there will be different genAI workflows.
Data.all S3 Datasets: (S3 Bucket + Glue database)

Tables - Glue tables containing structured data. There is technical information stored in the Glue Catalog, including: column labels, column descriptions...
Folders - S3 Prefix that could contain any type of file.

Data.all Redshift Datasets [v.2.7.0] : We need to keep it in mind for the design, but the feature won’t be implementing metadata in Redshift in its first release.

Tables - Redshift tables containing structured data.

Data scenarios
For column metadata generation (column name and column description):

Scenario
Input data for genAI
Comments

Glue tables with meaningful column names and description
Use the column description to verify if the name is good and viceversa

Glue tables with no column descriptions and cryptic names
Random selection 100 items of the table (like current preview) + metadata in RDS

For Table and Folder metadata generation:

Scenario
Input data for genAI
Comments

Tables with meaningful metadata
Metadata in RDS

Tables with poor metadata
Select randomized items of the table (like current preview) + metadata in RDS

Folders containing files
Read file names and extensions to produce a summary

For Dataset metadata generation

Scenario
Input data for genAI
Comments

Folders and Tables with meaningful metadata
Summary of table and folder descriptions

Folders and Tables with poor metadata
Generate metadata for tables and folders and then generate metadata for Dataset

High Level Design
Text To SQL

User provides an input prompt along with a selection of 1 or more tables from datasets in data.all of which they already have access to
On click of a button  takes user provided prompt + Table Identifiers and sends a new GQL Mutation Operation to API Gateway
API Handler receives GQL Mutation request and executes respective resolver in Lambda to start orchestration of processing tasks
FOR EACH TABLE: API Handler Lambda

Validates the user has access to the selected table
Assumes User’s Environment IAM Role and gets table metadata

API Handler Lambda invokes Bedrock LLM, passing along the user input and the glue metadata for each respective table as context and waits for generated SQL output
Lambda records the invocation and/or associated cost in RDS
The generated SQL Query is presented in the UI for the user to run ad-hoc as needed and or save for later analysis

Document Analyzer

User provides an input prompt along with a selected file in S3 from a dataset in data.all of which they already have access to
On click of a button  takes user provided prompt + S3 Path of File + Dataset Identifier + Access Pattern (i.e. S3 Share, Owner, Folder Share) and sends a new GQL Mutation Operation to API Gateway
API Handler receives GQL Mutation request and executes respective resolver in Lambda to start orchestration of processing tasks
FOR THE SELECTED FILE: API Handler Lambda

Validates the user has access to the selected file (either via dataset owner, S3 Bucket Share, OR Folder Share)
Assumes Environment IAM Role and downloads the file from S3

API Handler Lambda invokes Bedrock LLM, passing along the user input and the glue metadata for each respective table as context and waits for generated SQL output
API Handler Lambda invokes Bedrock LLM, passing along the user input and the downloaded file as context and waits for a response
After a response is generated - Lambda records the invocation and/or associated cost in RDS
Finally, the generated response is presented to the user


Amazon Linux Support

Trying to test out docker-slim on amazonlinux base image and it's causes some very weird behavior.  All binaries seem to be missing to start so can't even do ls
Example:
Dockerfile
FROM amazonlinux:latest
docker-slim build amazonlinux:latest

Do you have an application container image where you use the Amazon Linux as its base or are you trying to minify the base image itself?

Tried both and got the same results.

What kind of application did you have? Was it a python/ruby/node/java/something else app? What kind of ENTRYPOINT and/or CMD instructions did you have in your Dockerfile? Did you have a wrapper shell script that started your application and potentially did other things or did you invoke your application directly in ENTRYPOINT/CMD or did you have something like supervisord managing several processes in your container or maybe you used docker-compose where you configured the command parameters for your container?

Sorry didn't see this.
None of my applications use entrypoints only commands - most are rails apps.  So just running bundle exec rails -s, but this issue happens on the official Amazon Linux image.  So even without my customizations it seems to fail on just the base OS image.

@sc-chad thank you for the additional info! really appreciate it!
The base OS image is not a great container to minify because there's no way to know what you need there and what you don't in a significant way. You can leverage the --include-path, --include-shell, --include-exe and --include-bin parameters to tell docker-slim what you want to keep in your base image, but it requires a bit of extra work from you because you need to explicitly specify/decide what you want to keep.
Here's one of the sample apps docker-slim that might be interesting for you (I'd love to add more Rails examples, so if you have any good open source references i'd love to add them): https://github.com/docker-slim/examples/tree/master/ruby_rails_standard
A couple of things to note:
For Rails and Ruby apps in general docker-slim needs the --http-probe parameter when you are minifying the image: docker-slim build --http-probe my/ruby-rails-app (https://github.com/docker-slim/examples/blob/master/ruby_rails_standard/slim.command).
This is necessary to make sure that your Rails app loads extra dependencies it needs, which happens when you its handling HTTP requests.
docker-slim also needs to know about the port(s) your application is using. Normally your Dockerfile would have one or many EXPOSE instructions and docker-slim will see it leveraging it when it's running its HTTP probes (https://github.com/docker-slim/examples/blob/master/ruby_rails_standard/Dockerfile). If your Dockerfile doesn't have any EXPOSE instructions you need to tell docker-slim about your ports similar to how you need to tell docker about the ports you want to use when you execute the run command. With docker-slim it means using the --expose parameter: docker-slim build --http-probe --expose=5000 my/ruby-rails-app
If you are interested I'll be happy to do an online session to walk through your container setup, so we can get your app container minified. You'll get a small container and I'll have an opportunity to make docker-slim easier to use, so everybody wins :-) And if you have containerized Rails examples I'd love to add them to the examples repo.


[SPARK-41287][INFRA] Add test workflow to help self-build image test in fork repo

What changes were proposed in this pull request?
This patch adds a test workflow to help fork repo to test image in their fork repos.

such like:

https://github.com/Yikun/spark-docker/actions/runs/3552072792/jobs/5966742869
https://github.com/Yikun/spark-docker/actions/runs/3561513498/jobs/5982485960

Why are the changes needed?
Help devs/users test their own image in their fork repo
Does this PR introduce any user-facing change?
No
How was this patch tested?
Test in my fork repo:
https://github.com/Yikun/spark-docker/actions/workflows/test.yml

Test all (3.3.1): https://github.com/Yikun/spark-docker/actions/runs/3562507922/jobs/5984300370
Test r(3.3.0): https://github.com/Yikun/spark-docker/actions/runs/3561561102/jobs/5982569508
Test python(3.3.0): https://github.com/Yikun/spark-docker/actions/runs/3561558886/jobs/5982565442
Test scala(3.3.0): https://github.com/Yikun/spark-docker/actions/runs/3561513498/jobs/5982485960
Test downstream image (3.3.1 python): https://github.com/Yikun/spark-docker/actions/runs/3552072792/jobs/5966742869

@HyukjinKwon @martin-g Thanks, merged.


Increase robustness to installation on new computers

Others have reported unity is unable to find some files when installing this project. This issue can be resolved by testing install and fixing any issues on other computer

The apparent issue seems to have been with missing SteamVR assets. I've updated the install instruction to be more specific as to how to install the SteamVR plugin.
Please reopen or create a new issue if the installation leaves errors in the Unity file.
Note, unless you are in the Arm Lab at the University of Michigan, you will (almost certainly) not have the necessary robot interface to move the robot (Victor).


Make sure that thumbnailing timeout kills both imagick and ghostscript

Checklist

[x] the contributor license agreement is signed
[x] commit message follows commit guidelines

Description of change
Related to #2527, the delegate ghostscript doesn't inherently close when imagemagick does. This PR ensures that when thumbnailing times out, any child processes of imagemagick are killed first.

Should be good now @edalex-ian :+1:

Just snook in a merge of develop so that MimeTypesTest doesn't bite us, but it's good to go :+1:

That failure was caused by childPid not being accessible from line 104:
      LOGGER.error("'pgrep' output: " + childPid.toString());
Fix was to declare the StringBuilder childPid outside of the try/catch.

ViewerTest failed because Vimeo search returned nothing - probably caused by temporary issues on Vimeo's end. Rerunning.


Material

What is the enemy chams material??? It looks similar to the glow chams material in osiris but this one is much more glowing and looks cooler in my opinion

the video is edited with a glow filter, you can see it on the scoreboard up top, it also glows

ok thx

post processing affect, could possibly be applied real time but would hurt fps.

.


How to pass i m not a robot  puppeteer with amazon

Steps to reproduce
Tell us about your environment:

Puppeteer version:  ^1.11.0
Platform / OS version:  ubuntu 16.04
URLs (if applicable):
Node.js version: v8.12.0

How to pass i m not a robot  puppeteer with amazon
    const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
    const page = await browser.newPage();
    await page.setRequestInterception(true);
    page.on('request', request => {
        if (request.resourceType() === 'image')
            request.abort();
        else
            request.continue();
    });
     await page.goto(`URL`, {
        waitUntil: 'networkidle0', timeout: 60000
    });

This would be a question for stack overflow since it's not an issue with the puppeteer software. I would add that circumvention of a security measure like a CAPTCHA is a crime in the US.


python 3 version

This is working for me - I made 10 changes, and undoubtedly left in some code which can be cut - Python 3's Unicode handling helps shorten this.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#
# Copyright (c) 2017 Dean Jackson<EMAIL_ADDRESS>#
# MIT Licence. See http://opensource.org/licenses/MIT
#
# Created on 2017-09-09
#

"""Add fuzzy search to your Alfred 3 Script Filters.

This script is a replacement for Alfred's "Alfred filters results"
feature that provides a fuzzy search algorithm.

To use in your Script Filter, you must export the user query to
the ``query`` environment variable, and call your own script via this
one.

If your Script Filter (using Language = /bin/bash) looks like this:

    /usr/bin/python myscript.py

Change it to this:

    export query="$1"
    ./fuzzy.py /usr/bin/env python3 myscript.py

Your script will be run once per session (while the use is using your
workflow) to retrieve and cache all items, then the items are filtered
against the user query on their titles using a fuzzy matching algorithm.

"""

from __future__ import print_function, absolute_import

import json
import os
from subprocess import check_output
import sys
import time
from unicodedata import normalize

# Name of workflow variable storing session ID
SID = 'fuzzy_session_id'

# Bonus for adjacent matches
adj_bonus = int(os.getenv('adj_bonus') or '5')
# Bonus if match is uppercase
camel_bonus = int(os.getenv('camel_bonus') or '10')
# Penalty for each character before first match
lead_penalty = int(os.getenv('lead_penalty') or '-3')
# Max total ``lead_penalty``
max_lead_penalty = int(os.getenv('max_lead_penalty') or '-9')
# Bonus if after a separator
sep_bonus = int(os.getenv('sep_bonus') or '10')
# Penalty for each unmatched character
unmatched_penalty = int(os.getenv('unmatched_penalty') or '-1')

def log(s, *args):
    """Simple STDERR logger."""
    if args:
        s = s % args
    print('[fuzzy] ' + s, file=sys.stderr)

def fold_diacritics(u):
    """Remove diacritics from Unicode string."""
    u = normalize('NFD', u)
    s = u.encode('us-ascii', 'ignore')
    return unicode(s)

def isascii(u):
    """Return ``True`` if Unicode string contains only ASCII characters."""
    return u == fold_diacritics(u)

def decode(s):
    """Decode and NFC-normalise string."""
    if not isinstance(s, unicode):
        if isinstance(s, str):
            s = s.decode('utf-8')
        else:
            s = unicode(s)

    return normalize('NFC', s)

class Fuzzy(object):
    """Fuzzy comparison of strings.

    Attributes:
        adj_bonus (int): Bonus for adjacent matches
        camel_bonus (int): Bonus if match is uppercase
        lead_penalty (int): Penalty for each character before first match
        max_lead_penalty (int): Max total ``lead_penalty``
        sep_bonus (int): Bonus if after a separator
        unmatched_penalty (int): Penalty for each unmatched character

    """

    def __init__(self, adj_bonus=adj_bonus, sep_bonus=sep_bonus,
                 camel_bonus=camel_bonus, lead_penalty=lead_penalty,
                 max_lead_penalty=max_lead_penalty,
                 unmatched_penalty=unmatched_penalty):
        self.adj_bonus = adj_bonus
        self.sep_bonus = sep_bonus
        self.camel_bonus = camel_bonus
        self.lead_penalty = lead_penalty
        self.max_lead_penalty = max_lead_penalty
        self.unmatched_penalty = unmatched_penalty
        self._cache = {}

    def filter_feedback(self, fb, query):
        """Filter feedback dict.

        The titles of ``items`` in feedback dict are compared against
        ``query``. Items that don't match are removed and the remainder
        are sorted by best match.

        Args:
            fb (dict): Parsed Alfred feedback JSON
            query (str): Query to filter items against

        Returns:
            dict: ``fb`` with items sorted/removed.
        """
#       fold = isascii(query)
        items = []

        for it in fb['items']:
            title = it['title']
#           if fold:
#               title = fold_diacritics(title)

            ok, score = self.match(query, title)
            if not ok:
                continue

            items.append((score, it))

        items.sort(reverse=True)
        fb['items'] = [it for _, it in items]
        return fb

    # https://gist.github.com/menzenski/f0f846a254d269bd567e2160485f4b89
    def match(self, query, instring):
        """Return match boolean and match score.

        Args:
            query (str): Query to match against
            instring (str): String to score against query

        Returns:
            tuple: (match, score) where ``match`` is `True`/`False` and
                ``score`` is a `float`. The higher the score, the better
                the match.s
        """
        # cache results
        key = (query, instring)
        if key in self._cache:
            return self._cache[key]

        adj_bonus = self.adj_bonus
        sep_bonus = self.sep_bonus
        camel_bonus = self.camel_bonus
        lead_penalty = self.lead_penalty
        max_lead_penalty = self.max_lead_penalty
        unmatched_penalty = self.unmatched_penalty

        score, q_idx, s_idx, q_len, s_len = 0, 0, 0, len(query), len(instring)
        prev_match, prev_lower = False, False
        prev_sep = True  # so that matching first letter gets sep_bonus
        best_letter, best_lower, best_letter_idx = None, None, None
        best_letter_score = 0
        matched_indices = []

        while s_idx != s_len:
            p_char = query[q_idx] if (q_idx != q_len) else None
            s_char = instring[s_idx]
            p_lower = p_char.lower() if p_char else None
            s_lower, s_upper = s_char.lower(), s_char.upper()

            next_match = p_char and p_lower == s_lower
            rematch = best_letter and best_lower == s_lower

            advanced = next_match and best_letter
            p_repeat = best_letter and p_char and best_lower == p_lower

            if advanced or p_repeat:
                score += best_letter_score
                matched_indices.append(best_letter_idx)
                best_letter, best_lower, best_letter_idx = None, None, None
                best_letter_score = 0

            if next_match or rematch:
                new_score = 0

                # apply penalty for each letter before the first match
                # using max because penalties are negative (so max = smallest)
                if q_idx == 0:
                    score += max(s_idx * lead_penalty, max_lead_penalty)

                # apply bonus for consecutive matches
                if prev_match:
                    new_score += adj_bonus

                # apply bonus for matches after a separator
                if prev_sep:
                    new_score += sep_bonus

                # apply bonus across camelCase boundaries
                if prev_lower and s_char == s_upper and s_lower != s_upper:
                    new_score += camel_bonus

                # update query index iff the next query letter was matched
                if next_match:
                    q_idx += 1

                # update best letter match (may be next or rematch)
                if new_score >= best_letter_score:
                    # apply penalty for now-skipped letter
                    if best_letter is not None:
                        score += unmatched_penalty
                    best_letter = s_char
                    best_lower = best_letter.lower()
                    best_letter_idx = s_idx
                    best_letter_score = new_score

                    prev_match = True

            else:
                score += unmatched_penalty
                prev_match = False

            prev_lower = s_char == s_lower and s_lower != s_upper
            prev_sep = s_char in '_ '

            s_idx += 1

        if best_letter:
            score += best_letter_score
            matched_indices.append(best_letter_idx)

        res = (q_idx == q_len, score)
        self._cache[key] = res
        return res

class Cache(object):
    """Caches script output for the session.

    Attributes:
        cache_dir (str): Directory where script output is cached
        cmd (list): Command to run your script

    """

    def __init__(self, cmd):
        self.cmd = cmd
        self.cache_dir = os.path.join(os.getenv('alfred_workflow_cache',default=None),
                                      '_fuzzy')
        self._cache_path = None
        self._session_id = None
        self._from_cache = False

    def load(self):
        """Return parsed Alfred feedback from cache or command.

        Returns:
            dict: Parsed Alfred feedback.

        """
        sid = self.session_id
        if self._from_cache and os.path.exists(self.cache_path):
            log('loading cached items ...')
            with open(self.cache_path, 'r') as fp:
                js = fp.read()
        else:
            log('running command %r ...', self.cmd)
            js = check_output(self.cmd)

        fb = json.loads(js)
        log('loaded %d item(s)', len(fb.get('items', [])))

        if not self._from_cache:  # add session ID
            if 'variables' in fb:
                fb['variables'][SID] = sid
            else:
                fb['variables'] = {SID: sid}

            log('added session id %r to results', sid)

            with open(self.cache_path, 'w') as fp:
                json.dump(fb, fp)
                log('cached script results to %r', self.cache_path)

        return fb

    @property
    def session_id(self):
        """ID for this session."""
        if not self._session_id:
            sid = os.getenv(SID)
            if sid:
                self._session_id = sid
                self._from_cache = True
            else:
                self._session_id = str(os.getpid())

        return self._session_id

    @property
    def cache_path(self):
        """Return cache path for this session."""
        if not self._cache_path:
            if not os.path.exists(self.cache_dir):
                os.makedirs(self.cache_dir, 0o700)
                log('created cache dir %r', self.cache_dir)

            self._cache_path = os.path.join(self.cache_dir,
                                            self.session_id + '.json')

        return self._cache_path

    def clear(self):
        """Delete cached files."""
        if not os.path.exists(self.cache_dir):
            return

        for fn in os.listdir(self.cache_dir):
            os.unlink(os.path.join(self.cache_dir, fn))

        log('cleared old cache files')

def main():
    """Perform fuzzy search on JSON output by specified command."""
    start = time.time()
    log('.')  # ensure logging output starts on a new line
    cmd = sys.argv[1:]
    query = os.getenv('query')
    log('cmd=%r, query=%r, session_id=%r', cmd, query,
        os.getenv(SID))

    cache = Cache(cmd)
    fb = cache.load()

    if query:
#        query = decode(query)
        fz = Fuzzy()
        fz.filter_feedback(fb, query)
        log('%d item(s) match %r', len(fb['items']), query)

    json.dump(fb, sys.stdout)
    log('fuzzy filtered in %0.2fs', time.time() - start)

if __name__ == '__main__':
    main()

This worked for me after changing
        items.sort(reverse=True)

to
        items.sort(key=lambda i: i[0], reverse=True)


Unknown behavior on non-standard searches

After all these changes I need to review what happens when a user searches using M-VSM, correlation or provides a signature

evaluating different methods: reference evaluateAlgorithms.R


chore: fix mount sanity test failure

What type of PR is this?
/kind failing-test
What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Release note:
none

sudo apt update && sudo apt install blobfuse fuse -y failed in CI, but we cannot download deb file, it's a blocking issue here:
wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

https://github.com/Azure/azure-storage-fuse/wiki/1.-Installation


stern: use stern/stern as upstream source

Motivation for this change
#107015
wrecker/stern hasn't received any commits since 2019.
The maintainer of stern doesn't work at wercker anymore, and it seems noone else there is maintaining it (https://github.com/wercker/stern/issues/140).
The community has since moved to stern/stern with improvements to the original source.
Things done
Since the stern/stern repo has moved to Gomod, I had to refactor this package a bit.

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

I couldn't find anything in the nixpkgs manual about using a fork of a package.
If this MR is wrong to overwrite the old package, please let me know.

I've re-formated it again with nixpkgs-fmt.


Fix Collab Service and Room Service Bugs

Description

Renamed Collab Service and WebsocketServer to Room Service and Collab Service respectively
Change room creation method so that the respective question difficulty is now retrieved
Changed History saving api to be called in backend instead of frontend (Was previously causing a bug where a room can be saved twice)
Changed close room message displayed to a success alert instead
Fix bug where question undefined was popping up upon closing room

Fixes # (issue)
Type of change

[ ] 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

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

You need to update the ci.yml in GitHub Workflow to match the new test script names

yup!! will populate the hard qns as I update the old qns to markdown


projects/contexts list length, addresses ransome1/sleek#616

This code change to FilterQuery.js will address the problem described in issue #616.  The old code worked with the todoObject as it behaved in version 1.2.9 of sleek, but fails in 2.0.6.  I think that the old version must have represented missing projects or contexts as undefined or nil, while the new version represents this case as an empty list.   This PR adds an explicit check of the length of the lists.

@zerodat lovely, I just checked it out and it works like a charm. Thanks for supporting once again.


⚠ Jenkins Plugins Artifactory has degraded performance

In cde2fa5, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1202 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 9223bcb after 12 minutes.


📃: Digital-Clock using HTML,CSS,JS

:red_circle: Title: Digital Clock
:red_circle: Aim: To provide real-time clock functionality in a visually appealing manner
:red_circle: Tech Stack Used: HTML, CSS, JavaScript
Screenshots 📷

:white_check_mark: To be Mentioned while taking the issue :

Full name : Srinidhi Kulkarni
What is your participant role? (Mention the Open Source Program name. Eg. GSSOC, SSOC, JWOC, etc.)
GSSOC'24

Happy Contributing 🚀
All the best. Enjoy your open source journey ahead. 😎

Can i work on this, under GSSOC'24 ??

Digital-Clock using HTML,CSS,JS #375
🔴 Title: Digital Clock
🔴 Aim: To provide real-time clock functionality in a visually appealing manner
🔴 Tech Stack Used: HTML, CSS, JavaScript
Full name : Sanat Kumar Gupta
What is your participant role?
GSSOC'24 ext
I have implemented html, css, js simple code to develop digital clock.
Additional features which I intend to implement:

Addition of timezone
Addition of change of format 12 hr and 24 hr clock

Please assign this to me!
Thank you!!!!

Just to make sure, do i have to raise a new pull request this time to upload my work again?

Just to make sure, do i have to raise a new pull request this time to upload my work again?

Yes, but follow guidelines and not commit in main branch


Apply EBO declspec to forward declaration

as well as to specializations, to avoid inconsistent EBO application, which can also manifest as crashing ODR violations (not just unoptimized code).

Thanks for fixing this!

Can we push out a build with this fix to NuGet?


CLEANUP: Remove xml module usage from bucketGetVersioning api

Remove the dependency on xml module in bucketGetVersioning api
Remove the xml module from package.json as it is no longer used
in S3

@ironman-machine

Hello @bennettbuchanan
Starting end to end procedure using the following payload:
{"REPO_NAME": "S3", "SCALITY_S3_BRANCH": "dev/CLEANUP/remove_xml_module_bucketGetVersioning", "DEFAULT_BRANCH": "master"}
Please follow http://ci.ironmann.io/gh/scality/Integration/5893 for CI status.


Calendar not showing in Safari on Mac and IOS devices

Working beautifully on all other devices but safari on mac and IOS just doesn't work. Calendar doesn't show up when clicking on the field.
Using the latest version from CDN. Tried adding defaultDate but still not working.

This would be a must for any serious project. Hope to see this implemented soon.

Apologies, I forgot to update this. I found what the issue is. I was using "let" instead of "var" for my variables in the javascript. I switched everything to "var" and it works. This is an issue with Safari across all devices.

It seems though that the current Demo examples don't work in Safari properly, so I don't believe this is resolved.

Hello,
The problem with Safari is that its only available in the walled garden of iOS.
I'll have to debug from my girlfriend's laptop on the weekend.
Thanks for reporting the issue :+1:


page__alto: process all arguments

Now also fixes #143

This is needed to run PAGE→ALTO. Could someone please merge? @kba @stweil

I don't have the rights, sry.


raw data with mixed frequency

Dear Author,
Does autoformer handle raw data with features sampled at different frequencies (e.g., daily, monthly, quarterly data)? I'd like to reserve the original content without having to do extensive upsampling/downsampling. Thank you so much.

Hi, Autoformer does not downsample the time series but utilize the frequency information to help the temporal aggregation.


Path completion generates partial path

What did you expect to happen?
:e ~/.doom.d/i TAB expands to :e ~/.doom.d/init.el
What actually happened?
It expands to :e .dinit.el
Describe your attempts to resolve the issue
No idea
Steps to reproduce

Open Emacs
:e ~/.doom.d/i TAB ENTER
The line becomes :e .dinit.el

System Information
https://pastebin.com/a2BXLVhb

I can't reproduce this. you seem to have both the ivy module and the vertico module on at the same time. does only using one of them change anything?

You are right. Disabling ivy fixes it.


Created Recipe class

Created package seedu.address.model.recipe
Created Recipe, RecipeName, RecipeDescription and RecipeNameContainsKeywordPredicate classes based off Person classes.
Added test cases for the above newly-added classes.
Commented out instances of IngredientList and StepList in Recipe.java to prevent implementation conflict (Will be commented out after they are implemented and merged)

Can update the 4 method names to not use underscores, else after merging, the check will still fail and have to be changed anyway

The test methods have to follow this format though. I could merge without issues even with underscores in test methods names. I think they check errors per 1k LOC, so should be fine.


Add theme installation tutorials

Achtung: Dieser PR darf erst gemerged werden, nachdem #126 gemerged wurde!
Weiters zu diesem Sachverhalt kann in #124 gefunden werden.
Danke
I have read and understood the Contributor's Certificate of Origin at the end of the template and I hereby certify that I meet the contribution criteria described in it.

Thank you very much for your submission, it has just been finally reviewed and was accepted into our repository. I have forwarded your information and you should receive a voucher within the coming days.


[BUG] DllImport makes problems on some pcs

Before submitting a new issue, please verify and check:

[x] The issue is specific to Raylib-cs and not raylib
[x] I checked there is no similar issue already reported
[x] My code has no errors or misuse of Raylib-cs

Issue description
Hello, I'm encountering an issue with the .dll importer in C#. It's a bit puzzling because it seems to work on some PCs but not others. On my main development machine, everything runs smoothly. However, on my test PC, I consistently encounter an error. Interestingly, on my sister's PC, it works flawlessly. It's quite perplexing, but I found that replacing the .dll with the original raylib one resolves the issue on any PC.
Environment
OpenGL: 3.3
Raylib-cs: 6.0
Raylib: 5.0
Issue screenshot

From what you said in discord it is a windows bug which started working for you after setting up jetbrains rider. Closing the issue but feel free to add further details here that might help anyone else who runs into this.


Unmarshal WebConfig settings

When frontend is provided in the configuration, allow Dex to
unmarshal it, so their set properties are effective.
frontend:
  dir: /some/dir
  theme: my-theme

This should just work anyway. "dir" should map to a field called "Dir". Can you add a test to show what you're fixing?

You are right, my bad. Closing this PR. Thanks!


[Feature] Replace Gaufrette with Flysystem

Request
Flysystem is a popular and actively maintained library (in contrast to Gaufrette), and is also being used in SymfonyCasts tutorials. I think making the switch to Flysystem is not a drastic change and it would probably be more attractive for other potential/future users.
Additional information

OneupFlysystemBundle for integration with Symfony

Hello !
Thank you for your proposition. I'm just working on a PR to make this change and at the same time allow the user to define his adapters from the admin dashboard : #58
So what you are asking here will already merge soon :)


Dropdown list closes quickly after opens

It's random, and more and more often.
What gives?

define large width and heights fixed it for me:
body {
height: 2500px;
width: 2500px;
}

My issue is I get a short height window (approx 100px) opening and have to open 2-3 times before it opens fully as expected.


Fixed path for badge images on migrated pages

Questions
Answers

Description?
Fixed path for badge images on migrated pages

Type?
bug fix

BC breaks?
no

Deprecations?
no

Fixed ticket?
Fixes PrestaShop/PrestaShop#22981

How to test?
Cf PrestaShop/PrestaShop#22981

Hi @Progi1984,
It is ok :heavy_check_mark:
Without PR

With PR

The gamification: configuration's page => ok

About the hook logs => ok
https://drive.google.com/file/d/1nHUlZbPV-W8_QemMEN0-KUBsX_jEaEVR/view?usp=sharing
Thank you!

Thanks @Progi1984 !!


Testing

Tests for:

Function class

Codecov Report

Merging #34 (eb81ab4) into main (d43f411) will increase coverage by 1.18%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main      #34      +/-   ##
============================================
+ Coverage     69.89%   71.07%   +1.18%
+ Complexity       65       63       -2
============================================
  Files            14       14
  Lines           847      847
  Branches         93       93
============================================
+ Hits            592      602      +10
+ Misses          192      182      -10
  Partials         63       63

Impacted Files
Coverage Δ

...tlin/io/provenance/scope/sdk/ContractSpecMapper.kt
85.03% <0.00%> (+7.87%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d43f411...eb81ab4. Read the comment docs.


Error CS2012

Hi, randomly I get this error when queue the building with /m option
We have a TFS 2017 and privated hosted agents pool. The versión of the hosted agents are 2.122.1
Visual Studio 2015
How we can avoid this problema, running the build in multicpu option.
Thanks so much.
Error:
CSC (0, 0)
CSC(0,0): Error CS2012: Cannot open 'D:\Builds\1\2\s\Units\Utilities\Source\UnitTesting\obj\Debug\Example.Comit.Utilities.UnitTesting.dll' for writing -- 'Access to the path 'D:\Builds\1\2\s\Units\Utilities\Source\UnitTesting\obj\Debug\Example.Comit.Utilities.UnitTesting.dll' is denied.'

Process 'msbuild.exe' exited with code '1'.

I'm also facing the same issue and it's quite frustrating, to be honest... Eventually, I had to disable the /m switch to make the issue go away but it is clearly not a proper solution.
Can someone please help sort this issue and get it resolved? There are tons of such issues online without a solution.


Use List over JsonArray

Updates a few endpoints to use List instead of JsonArray. This
simplifies the function by taking advantage of existing models.
Updates examples with this change.
@film42

This PR is no longer necessary with https://github.com/mxenabled/atrium-java/pull/7


MobsScreen is darker than it should be

Minecraft 1.20.5 changed how backgrounds are handled. MobsScreen expects that there is a dirt background? When using contrast mode then it is completly black. OptionsSubScreens by default have the black background


Is there a paperspace port?

Hi, I want to know if there's any paperspace port of this lora trainer.

not yet, but i appreciate if someone do that :D


Add blog post about facilitating reviews

For sprint 133 based on request show page redesign.

@danidoni @dmarcoux I pushed twice to address your feedback and rephrase some text that talked about the "old" and "new" versions of the editor.

I still see the same than before: ...

Sorry, I didn't push the last change. Done


Software PWM

Servos and motors should work on any of the pins. Having software PWM is simple and very beneficial.

Closing old bugs.


Security upgrade dependencies

Codecov Report

Merging #34 (3a4c649) into master (82ea6a6) will decrease coverage by 0.58%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #34      +/-   ##
==========================================
- Coverage   94.56%   93.97%   -0.59%
==========================================
  Files          29       29
  Lines         239      365     +126
  Branches       19       91      +72
==========================================
+ Hits          226      343     +117
- Misses         13       22       +9

Impacted Files
Coverage Δ

src/repositories/QuoteKnexRepository.ts
91.66% <0.00%> (-8.34%)
:arrow_down:

src/loaders/authorLoader.ts
94.73% <0.00%> (-5.27%)
:arrow_down:

src/schema/queries/quotes.ts
95.23% <0.00%> (-4.77%)
:arrow_down:

src/schema/queries/authors.ts
95.45% <0.00%> (-4.55%)
:arrow_down:

src/schema/types/author.ts
97.05% <0.00%> (-2.95%)
:arrow_down:

src/database.ts
100.00% <0.00%> (ø)

src/schema/index.ts
100.00% <0.00%> (ø)

src/schema/query.ts
100.00% <0.00%> (ø)

src/context/index.ts
100.00% <0.00%> (ø)

src/schema/mutation.ts
100.00% <0.00%> (ø)

... and 19 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 82ea6a6...3a4c649. Read the comment docs.


Fix iOS test running when shard count is 1

Codecov Report

Merging #435 into master will increase coverage by 0.03%.
The diff coverage is 100%.

@@             Coverage Diff              @@
##             master     #435      +/-   ##
============================================
+ Coverage     79.11%   79.14%   +0.03%
- Complexity      615      617       +2
============================================
  Files            69       69
  Lines          1776     1779       +3
  Branches        270      271       +1
============================================
+ Hits           1405     1408       +3
  Misses          195      195
  Partials        176      176


[cbl_flutter] port tool/install_binaries.sh to dart

cbl_flutter currently uses a bash script to install the binaries from cbl_native. We should port this script to dart so that it can be used on all platforms.

If the entire problem is bash on Windows, how about trying Git bash? I have it installed on my Windows machine and have used it in the past to run bash scripts. You might want to give it a spin from https://gitforwindows.org/.
I can try it as well, but I would need the script and instructions from which dir to run it from, as well as expected dir structure.

Thanks for that hint. Git for Windows is a required dependency for Flutter anyway, so we can assume it's available.

Closed by #63.

Happily report v0.4.0+1 working ok on Windows.


This page is poorly designed for content it should hold.

Run a disaster recovery drill differs depending if you are using physical servers or VMWare servers or Hyper-V with or without VMM.
Yet this document only deals with the VMWare Scenario and leaves everybody else who uses Physical servers or Hyper-V VM to figure out on their own how to do disaster recovery drill.  Which is too much of a onus on Azure implementer to do given their workloads and schedules.  It would be nice if it is clearly spelled out in the documentation.
My suggestion is that it would be better if you follow tack taken by the writers of following document.  Where they had the main article with links to 3 articles  pointing to the variation.
https://docs.microsoft.com/en-us/azure/site-recovery/migrate-tutorial-on-premises-azure

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

ID: d928a5ee-3c34-b56a-c797-d682e343c392
Version Independent ID: 6a95c94b-85eb-3b35-6e0b-c0a0172de7c4
Content: Run a disaster recovery drill for on-premises machines to Azure with Azure Site Recovery
Content Source: articles/site-recovery/tutorial-dr-drill-azure.md
Service: site-recovery
GitHub Login: @rayne-wiselman
Microsoft Alias: raynew

@DMoonesinghe thanks for the comment. The feedback has been shared with the content owner for further review.

@DMoonesinghe This article is relevant for both VMware and Hyper-V, as stated at the top of the article:
"This is the fourth tutorial in a series that shows you how to set up disaster recovery to Azure for on-premises VMware VMs, or Hyper-V VMs."
Please let us know if you come across information that is inaccurate for Hyper-V.  In addition there's a more in-depth article here - https://docs.microsoft.com/en-us/azure/site-recovery/site-recovery-test-failover-to-azure
Thanks!
#28187

Sorry Rayne!
I guess I didn't do a good job of explaining myself.  So here it is. This document has a title of:  "Run a disaster recovery drill to Azure".
You are right this document is 4 part tutorial.  I understood that and read all of that.  And you say that in the top of the document itself.  Like this.

In the first tutorial, we set up the Azure components needed for VMware disaster recovery.
In the second tutorial , we prepared on-premises components for disaster recovery, and reviewed prerequisites.
In the third tutorial we set up and enabled replication for our on-premises VMware VM.

But my problem is I have a team setting up recovery drills based on 3 scenarios that is not based on the third tutorial.
a. On-Prem Physical Servers to Azure
b. On-Prem Hyper-V (with VMM ) to Azure
c. 2nd-On-Prem Site with Hyper-V (without VMM) to Azure.
So this document (4th tutorial) only points to a 3rd tutorial that shows you only how to setup VMWare replication.  That doesn't help people with the scenarios a, b or c.  Because it doesn't give them a equivalent 3rd tutorial that covers those procedures.
I am assuming you already have those steps for scenario a, b & c are documented somewhere. From a consumers  point of view it would be more user friendly  if the 4th tutorial mentioned scenarios a,b & c and had links pointing to them just like you did that with VMWare tutorial.
PS: You did a pretty amazing job of breaking it down a very complicated set of procedures beautifully for VMWare.
Thanks for your time and effort.

The tutorial Run a disaster recovery drill, is relevant for 4 scenarios, and is the next step from all of these articles:
VMware to Azure
Hyper-V without VMM to Azure
Hyper-V with VMM, Physical server to Azure
Each of these articles points to the DR drill article as the next step
I have added info to this article to make it clear that it's applicable for all of these.
thx


Doctrine support

Is there some way to use it with Doctrine instead of Eloquent?
Thanks.

Not really sure on this one as I haven't personally used Doctrine yet. Thanks!

There is a way.
Yajra crashes when it comes to converting the connected objects to array by recursion.
If you use the Query Builder from Doctrine and extract only the fields you want to use on the DataTable, it should be able to work.
I just configured mine. :)

There is a way.
Yajra crashes when it comes to converting the connected objects to array by recursion.
If you use the Query Builder from Doctrine and extract only the fields you want to use on the DataTable, it should be able to work.
I just configured mine. :)

@rafaelucena, do you have example?

There is a way.
Yajra crashes when it comes to converting the connected objects to array by recursion.
If you use the Query Builder from Doctrine and extract only the fields you want to use on the DataTable, it should be able to work.
I just configured mine. :)

@rafaelucena, do you have example?

Sure, I did it here, line 59: https://github.com/rafaelucena/dedoduro/blob/master/app/Http/Controllers/Admin/BlogsController.php

There is a way.
Yajra crashes when it comes to converting the connected objects to array by recursion.
If you use the Query Builder from Doctrine and extract only the fields you want to use on the DataTable, it should be able to work.
I just configured mine. :)

@rafaelucena, do you have example?

Sure, I did it here, line 59: https://github.com/rafaelucena/dedoduro/blob/master/app/Http/Controllers/Admin/BlogsController.php

Thank you @rafaelucena . I do it for my project. But its response just array. Did you do any other configurations?
Here is my response
{"draw":0,"recordsTotal":12,"recordsFiltered":12,"data":[{"id":"1","title":"Test product"},{"id":"6","title":"New product title"},{"id":"8","title":"No details Product"},{"id":"11","title":"No details Product 2"},{"id":"12","title":"new product"},{"id":"21","title":"last"},{"id":"22","title":"lp3"},{"id":"23","title":"product title"},{"id":"24","title":"New product title"},{"id":"25","title":"3 New product title"},{"id":"26","title":"3 New product title"},{"id":"27","title":"laast"}],"input":[]}

No, I did what you see in my code.
I am getting an array from Doctrine also, which is how I'm using it into the lines 81, 84 of the same file.
It's all there man. :)
It's been a while since I don't work in this project so I can't give you any more information than this.
What I know is that it works...
If possible, use less information into the Datatables and check if it works with two columns or so.


feat(preset-mini): Support max  breakpoint

TailwindCSS uses max- instead of lt- so it would be nice if we also support that. It helps users coming from TailwindCSS too.
https://tailwindcss.com/docs/responsive-design#targeting-a-breakpoint-range

@onlyfortesting  Can you add a test case?

@zyyv good now?


ImportError: /root/mmdetection/mmdet/ops/dcn/deform_conv_cuda.cpython-37m-x86_64-linux-gnu.so: undefined symbol: __cudaPushCallConfiguration

Thanks for your error report and we appreciate it a lot.
Checklist

I have searched related issues but cannot get the expected help.
The bug has not been fixed in the latest version.

Describe the bug
A clear and concise description of what the bug is.
Reproduction

What command or script did you run?

A placeholder for the command.

Did you make any modifications on the code or config? Did you understand what you have modified?
What dataset did you use?

Environment

Please run python tools/collect_env.py to collect necessary environment infomation and paste it here.
You may add addition that may be helpful for locating the problem, such as

How you installed PyTorch [e.g., pip, conda, source]
Other environment variables that may be related (such as $PATH, $LD_LIBRARY_PATH, $PYTHONPATH, etc.)

Error traceback
If applicable, paste the error trackback here.
A placeholder for trackback.

Bug fix
If you have already identified the reason, you can provide the information here. If you are willing to create a PR to fix it, please also leave a comment here and that would be much appreciated!

Please fill in this Error Template, you provide no information in the template.


Support workspaces for offline feature

This patch enables having a top-level sqlx-data.json file within a
workspace.
It does this by using a full clean / check instead of cargo rustc
which fails on a workspace.
It also uses the cargo_metadata package to find the workspace_root
(which should be the same as CARGO_MANIFEST_DIR in a non workspace).
Note: cargo_metadata pulls in serde / serde_json. I wasn't sure if I
should remove the features for those with this change.
Fixes #353.
Signed-off-by: Joe Grund<EMAIL_ADDRESS>

+1 for something like a --merged flag. I have multiple database crates in a workspace where a merged sqlx-data.json would be problematic. (I think something like a --all flag where the command generates a sqlx-data.json for each crate would be useful, but running the command for each crate separately is not too bad either.)

I'll update to use a --merged flag.

We prefer not to merge master back into feature branches to update them as it muddies the history; we always prefer to rebase instead.

I'll rebase once I have updates to push, for now I'll move into draft

We can merge this once its updated to use a --merged flag. I'm not super keen on the name but I don't want to block this on bikeshedding it.

This looks good to me.  Thank you @jgrund for hanging in there.

@mehcode Thanks, can you release a new version of sqlx-cli as well?


Document that FlutterFragmentActivity, FlutterActivity, FlutterFragment can only be used in an AAR project inside an AndroidX outer project

FlutterFragmentActivity, FlutterActivity, FlutterFragment is not supprot AndroidX, and They use  support libaries!!!

@YugeCse could you post flutter --version output here?

Flutter 1.13.0 • channel dev • https://github.com/flutter/flutter.git
Framework • revision 09126abb22 (8 days ago) • 2019-12-03 17:43:00 -0800
Engine • revision<PHONE_NUMBER>
Tools • Dart 2.7.0 (build 2.7.0-dev.2.1 a4d799c402)

#askarsyzdykov
I found that FlutterActivity File (Packages: io.flutter.app and io.flutter.embedding.android) still contained the support libraires's code.

Right, the Flutter engine is likely the last thing to migrate since if we migrated now, we're essentially removing the choice for developers who may, for one reason or another, need to keep their own app under Android Support.
If you're on AndroidX, you can already use jetifier to make the Flutter engine compatible with your app.
See https://flutter.dev/docs/development/add-to-app/android/project-setup#option-a---depend-on-the-android-archive-aar.
cc @blasten, do we need to add some additional text to https://flutter.dev/docs/development/add-to-app/android/project-setup to talk about AndroidX?

@xster That's unuseful. Becasuse the classes(FlutterFragmentActivity，FlutterActivity and FlutterFragment)'s code isn't editable. Long Long ago, we could edit Flutter's code in package io.flutter.app, but now, we cannot edit them. Also, package's code (io.flutter.embedding.android) isn't editable , too. So, we cannot let these classes become the AndroidX Code.

I don't mean make them AndroidX compatible by editing the code's import path directly. I meant by turning on jetifier for your project. Jetifier supports AAR modules (which includes your Flutter engine) so you Flutter engine's android support imports actually get turned into AndroidX imports.

Still not working with
Flutter (Channel master, v1.13.3-pre.83, on Microsoft Windows [Version 10.0.17763.914], locale en-IN)
		• Flutter version 1.13.3-pre.83 at E:\fluttersdk
    • Framework revision 78db965642 (2 hours ago), 2019-12-19 11:23:01 +0100
    • Engine revision 0f90e6546b
    • Dart version 2.8.0 (build 2.8.0-dev.0.0 aa6709974d)

Same issue, due to FlutterFragment uses Support library classes. :(

Yes, the source is still Android support in the engine. But it's jetifiable if you enabled it in your host Android project such as https://github.com/flutter/samples/blob/master/add_to_app/android_fullscreen/gradle.properties.
@blasten for potential additional clarifications in https://github.com/flutter/flutter/issues/32862

My gradle.properties file's content:
Project-wide Gradle settings.
IDE (e.g. Android Studio) users:
Gradle settings configured through the IDE will override
any settings specified in this file.
For more details on how to configure your build environment visit
http://www.gradle.org/docs/current/userguide/build_environment.html
Specifies the JVM arguments used for the daemon process.
The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
When configured, Gradle will run in incubating parallel mode.
This option should only be used with decoupled projects. More details, visit
http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
AndroidX package structure to make it clearer which packages are bundled with the
Android operating system, and which are packaged with your app's APK
https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
#android.useDeprecatedNdk=true

Yes, the source is still Android support in the engine. But it's jetifiable if you enabled it in your host Android project such as https://github.com/flutter/samples/blob/master/add_to_app/android_fullscreen/gradle.properties.
@blasten for potential additional clarifications in #32862

Hi @xster , I check gradle.properties file in host app, it has enabled jetifier already, below is the code
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx4608M
org.gradle.java.home=C:/Program Files/Android/Android Studio/jre

Thank you.

Yes, the source is still Android support in the engine. But it's jetifiable if you enabled it in your host Android project such as https://github.com/flutter/samples/blob/master/add_to_app/android_fullscreen/gradle.properties.
@blasten for potential additional clarifications in #32862

Hi @xster , I check gradle.properties file in host app, it has enabled jetifier already, below is the code
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx4608M
org.gradle.java.home=C:/Program Files/Android/Android Studio/jre

though, its not picking Androidx classes from Flutter.
Thank you.

I meet the same problem and this works for me. though, it shows error in editor, but it is runnable and works correctly.

As, @xster mentioned, we will be migrating the Android embedding to AndroidX this quarter.

As, @xster mentioned, we will be migrating the Android embedding to AndroidX this quarter.

I'm having the same problem.. what can I do now in the meantime?? I'm on flutter 1.15.2 and still have support classes. I already have android.enableJetifier=true in gradle.properties

Another clarification, (perhaps we should re-open this ticket to make sure we document this if you guys want to double check it first).
Yes, the engine currently uses support Fragment etc to not force all downstream users from using AndroidX.
Jetifier doesn't work against a gradle subproject so if you built your flutter module as an AAR (flutter.dev/go/build-aar), then that should let jetifier work as a workaround until we do #39283. Would someone like to try it and report back?

The engine has been migrated to AndroidX now https://github.com/flutter/flutter/issues/39283.


Use the CSS from the theme

http://video.etherpad.com/p/sdlkjflksjdlksjfd#skinvariantsbuilder
When you change tihngs to dark the title bar should follow suite.
@seballot

@seballot what did we decide on this? :)

woups, I already fixed it, but badly ! I made a proper fix here https://github.com/ether/etherpad-lite/pull/4017

Okies ta :)


Submit a report

[x] Can submit a report against a project.

[x] Link from project page to new form.

[x] Form:

Privacy => options = [ public, private]
Content => rich text field
Files => multi file chooser

Who:

OTF staff
Project Applicant

[x] Notifications:

If otf => email to applicant and slack to project lead
if applicant => slack to project lead

I've deployed this to dev.
If you go to a "in progress" project's page you will be able to submit any number of reports to that project.
You will not be able to view them but the notifications should help you out.
I did adjust the notifications so that OTF staff will trigger a slack message in case others are interested in the report.

All acceptance criteria are visible and functional. Thanks! :boom: