[CSL-64] Try to merge other chains if we succeed to merge some chain

@gromak

@gromak
I was going to do it long ago, but then I realized that it wasn't critical, so I postponed it. Taking into account that we may want to rework block processing algorithm, we may want to completely abort this issue.
Anyway, problem is the following. Suppose we have alt chains A -> B -> C and B -> C. And suppose we adopted block D such that C -> D. At some point we will try to merge alt chains and will do it by trying different alt chains. If we try B -> C first, then we will adopt it and forget about A -> B -> C.
Currently it works ok in our experiments, because we put chains in such order that A -> B -> C is tried first.

@gromak
As my comment states, current solution is bad in general, but works ok in experiment. This change will make it better is some cases, but current solution has to be reworked more globally I suppose. So I would rather postpone this issue and probably abort it if we come up with better algorithm for block processing.

@gromak
Obsolete after block processing rework.


Adds cwd to help with monorepos

Adds an option to pass cwd to avoid having to do this workaround https://github.com/tatethurston/nextjs-routes/issues/73#issuecomment-1299529571

Before adding a configuration option, I’d like to understand how Nextjs is resolving your pages directory in your setup.
https://github.com/tatethurston/nextjs-routes/issues/73#issuecomment-1300676454

@tatethurston sure, try this https://stackblitz.com/edit/nextjs-bzas5l?file=README.md

I just installed nx and generated next app with it, and added nextjs-routes, nothing else.

JavaScript monorepos generally define a package.json per package or application in the monorepo, and the working directory is resolved relative to that package.json when executing commands across the repo (lerna, yarn workspaces, etc).

Nx monorepo setup does support that, however default setup is a single package.json file in the root. https://nx.dev/getting-started/integrated-repo-tutorial

I looked into this and the next commands accept a directory as their first argument, otherwise falling back to the cwd. I think we should be able to do the same from process.argv so clients don’t need to configure anything

I believe that the issue here is that the NX builder doesn't allow for that property to be passed to to next

@alexgorbatchev Is additional configuration necessary in your nx example? When I remove withRoutes from nextjs-routes, I see the following nextjs error:
Error: > Couldn't find a `pages` directory. Please create one under the project root
    at Object.findPagesDir (/home/projects/nextjs-rv54c8/node_modules/next/dist/lib/find-pages-dir.js:42:19)
    at new DevServer (/home/projects/nextjs-rv54c8/node_modules/next/dist/server/dev/next-dev-server.js:107:66)
    at NextServer.createServer (/home/projects/nextjs-rv54c8/node_modules/next/dist/server/next.js:137:20)
    at eval (/home/projects/nextjs-rv54c8/node_modules/next/dist/server/next.js:149:42)

i cleaned up the demo, it was trying to npm start from root, try cd myorg && npm start
https://stackblitz.com/edit/nextjs-xawu1x?file=myorg%2Fpackage.json,myorg%2Fpackages%2Fweb%2Fnext.config.js

Did some digging into the nx nextjs wrapper because I wanted to understand how they are resolving the pages directory. nx creates a custom nx server: https://github.com/nrwl/nx/blob/94edbe9f6ce808ec9296954ea4333d7698f34e1e/packages/next/src/executors/server/server.impl.ts#L94 and passes in the project directory.


[Feature][KafkaSource]Add customize the row separator.

Purpose of this pull request
Add customize the row separator, if a message contains multiple row of data, you can customize the line separator to split.
Config:
env {
  # You can set flink configuration here
  execution.parallelism = 1
  job.mode = "STREAMING"
  execution.planner = blink
  job.name = "kafka_hive_row_delimiter_test"
  execution.checkpoint.interval = 60000
}

source {
  Kafka {
    result_table_name = "kafka_table"
    schema = {
      fields {
        c1 = "string"
        c2 = "string"
        c3 = "string"
      }
    }
    format = text
    field_delimiter = ","
    topic = "test_topic_row_delimiter"
    bootstrap.servers = "kafkacluster:9092"
    kafka.max.poll.records = 500
    row_delimiter = "\\n"
 }
}

transform {
  sql {
    sql = "select c1,c2,c3,CAST(DATE_FORMAT(CAST(NOW() AS VARCHAR),'yyyyMMdd') as VARCHAR) as dt from kafka_table"
  }
}

sink {
  Console{}
  Hive {
    table_name = "db_test1.tmp_test03"
    metastore_uri = "thrift://hive:9083"
    partition_dir_expression = "${v0}"
  }
}

Test screenshot

Check list

[ ] Code changed are covered with tests, or it does not need tests for reason:
[ ] If any new Jar binary package adding in your PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/incubator-seatunnel/tree/dev/docs
[ ] If you are contributing the connector code, please check that the following files are updated:

Update change log that in connector document. For more details you can refer to connector-v2
Update plugin-mapping.properties and add new connector information in it
Update the pom file of seatunnel-dist

[ ] Update the release-note.

please approve ci check.

@Hisoka-X @TyrantLucifer please approve ci check.

@Hisoka-X @TyrantLucifer @hailin0 PTAL.

@Hisoka-X @TyrantLucifer @hailin0 PTAL.

please approve ci , thanks.

please approve ci.

@Hisoka-X @EricJoy2048  @TyrantLucifer please approve ci.

@Hisoka-X @EricJoy2048 @TyrantLucifer please approve ci.


Problem installing hygese via pip

Hello, I have been facing some troubles while installing hygese via pip.
I followed the instruction, but when I tried to install hygese an error come up. The error says " cmake isn´t an internal or external command". I´ve installed and added to the path cmake.. So I don´t understand why this is happening.
I am currently using spider on windows 10.

Have you tried running cmake in Spyder?
Or, have you tried installing hygese in the Windows Powershell?

Hi chkwon I thank you for your answer. Recently I was using successfully the julia wrapper, but now I have to use python and I still cant install hygese.
The package gcc is still available?  I cant find it and when I try to install hygese without it I get:
× Building wheel for hygese (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [225 lines of output]
running bdist_wheel
running build
running build_py
x HGS-CVRP-2.0.0/
x HGS-CVRP-2.0.0/.github/
x HGS-CVRP-2.0.0/.github/workflows/
x HGS-CVRP-2.0.0/.github/workflows/CI_Build.yml
x HGS-CVRP-2.0.0/.gitignore
x HGS-CVRP-2.0.0/CMakeLists.txt
x HGS-CVRP-2.0.0/Instances/
x HGS-CVRP-2.0.0/Instances/CVRP/
x HGS-CVRP-2.0.0/Instances/CVRP/CMT1.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT10.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT11.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT12.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT14.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT2.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT3.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT4.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT5.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT6.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT7.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT8.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/CMT9.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_1.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_10.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_11.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_12.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_14.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_15.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_16.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_17.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_18.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_19.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_2.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_20.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_3.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_4.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_5.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_6.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_7.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_8.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/Golden_9.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n1001-k43.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n101-k25.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n106-k14.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n110-k13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n115-k10.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n120-k6.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n125-k30.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n129-k18.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n134-k13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n139-k10.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n143-k7.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n148-k46.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n153-k22.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n157-k13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n162-k11.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n167-k10.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n172-k51.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n176-k26.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n181-k23.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n186-k15.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n190-k8.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n195-k51.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n200-k36.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n204-k19.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n209-k16.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n214-k11.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n219-k73.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n223-k34.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n228-k23.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n233-k16.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n237-k14.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n242-k48.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n247-k50.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n251-k28.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n256-k16.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n261-k13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n266-k58.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n270-k35.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n275-k28.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n280-k17.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n284-k15.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n289-k60.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n294-k50.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n298-k31.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n303-k21.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n308-k13.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n313-k71.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n317-k53.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n322-k28.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n327-k20.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n331-k15.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n336-k84.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n344-k43.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n351-k40.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n359-k29.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n367-k17.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n376-k94.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n384-k52.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n393-k38.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n401-k29.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n411-k19.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n420-k130.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n429-k61.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n439-k37.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n449-k29.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n459-k26.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n469-k138.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n480-k70.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n491-k59.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n502-k39.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n513-k21.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n524-k153.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n536-k96.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n548-k50.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n561-k42.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n573-k30.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n586-k159.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n599-k92.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n613-k62.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n627-k43.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n641-k35.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n655-k131.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n670-k130.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n685-k75.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n701-k44.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n716-k35.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n733-k159.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n749-k98.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n766-k71.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n783-k48.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n801-k40.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n819-k171.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n837-k142.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n856-k95.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n876-k59.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n895-k37.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n916-k207.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n936-k151.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n957-k87.vrp
x HGS-CVRP-2.0.0/Instances/CVRP/X-n979-k58.vrp
x HGS-CVRP-2.0.0/LICENSE
x HGS-CVRP-2.0.0/Program/
x HGS-CVRP-2.0.0/Program/AlgorithmParameters.cpp
x HGS-CVRP-2.0.0/Program/AlgorithmParameters.h
x HGS-CVRP-2.0.0/Program/C_Interface.cpp
x HGS-CVRP-2.0.0/Program/C_Interface.h
x HGS-CVRP-2.0.0/Program/CircleSector.h
x HGS-CVRP-2.0.0/Program/Genetic.cpp
x HGS-CVRP-2.0.0/Program/Genetic.h
x HGS-CVRP-2.0.0/Program/Individual.cpp
x HGS-CVRP-2.0.0/Program/Individual.h
x HGS-CVRP-2.0.0/Program/InstanceCVRPLIB.cpp
x HGS-CVRP-2.0.0/Program/InstanceCVRPLIB.h
x HGS-CVRP-2.0.0/Program/LocalSearch.cpp
x HGS-CVRP-2.0.0/Program/LocalSearch.h
x HGS-CVRP-2.0.0/Program/Params.cpp
x HGS-CVRP-2.0.0/Program/Params.h
x HGS-CVRP-2.0.0/Program/Population.cpp
x HGS-CVRP-2.0.0/Program/Population.h
x HGS-CVRP-2.0.0/Program/Split.cpp
x HGS-CVRP-2.0.0/Program/Split.h
x HGS-CVRP-2.0.0/Program/commandline.h
x HGS-CVRP-2.0.0/Program/main.cpp
x HGS-CVRP-2.0.0/README.md
x HGS-CVRP-2.0.0/Test/
x HGS-CVRP-2.0.0/Test/Test-c/
x HGS-CVRP-2.0.0/Test/Test-c/CMakeLists.txt
x HGS-CVRP-2.0.0/Test/Test-c/test.c
x HGS-CVRP-2.0.0/Test/TestExecutable.cmake
'cmake' is not recognized as an internal or external command,
operable program or batch file.
Build!!!!!! Run!!!!
Traceback (most recent call last):
File "C:\Users\agumo\AppData\Local\Programs\Python\Python310\lib\site-packages\pip_vendor\pep517\in_process_in_process.py", line 363, in
main()
File "C:\Users\agumo\AppData\Local\Programs\Python\Python310\lib\site-packages\pip_vendor\pep517\in_process_in_process.py", line 345, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "C:\Users\agumo\AppData\Local\Programs\Python\Python310\lib\site-packages\pip_vendor\pep517\in_process_in_process.py", line 261, in build_wheel
return _build_backend().build_wheel(wheel_directory, config_settings,
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools\build_meta.py", line 412, in build_wheel
return self._build_with_temp_dir(['bdist_wheel'], '.whl',
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools\build_meta.py", line 397, in build_with_temp_dir
self.run_setup()
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools\build_meta.py", line 335, in run_setup
exec(code, locals())
File "", line 103, in
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_init.py", line 87, in setup
return distutils.core.setup(**attrs)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\core.py", line 185, in setup
return run_commands(dist)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\core.py", line 201, in run_commands
dist.run_commands()
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 973, in run_commands
self.run_command(cmd)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools\dist.py", line 1217, in run_command
super().run_command(command)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 992, in run_command
cmd_obj.run()
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\normal\Lib\site-packages\wheel\bdist_wheel.py", line 299, in run
self.run_command('build')
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\cmd.py", line 319, in run_command
self.distribution.run_command(command)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools\dist.py", line 1217, in run_command
super().run_command(command)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 992, in run_command
cmd_obj.run()
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\command\build.py", line 132, in run
self.run_command(cmd_name)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\cmd.py", line 319, in run_command
self.distribution.run_command(command)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools\dist.py", line 1217, in run_command
super().run_command(command)
File "C:\Users\agumo\AppData\Local\Temp\pip-build-env-dm25zclm\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 992, in run_command
cmd_obj.run()
File "", line 96, in run
File "", line 69, in download_build_hgs
File "", line 28, in _run
File "C:\Users\agumo\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 369, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'cmake -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../HGS-CVRP-2.0.0' returned non-zero exit status 1.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for hygese
Failed to build hygese
ERROR: Could not build wheels for hygese, which is required to install pyproject.toml-based projects
Have you or some collaborator use hygese on windows recently?
Thank you for your time.

I was able to use hygese on windows successfully.
I suggest use
scoop install gcc make cmake

I was able to use hygese on windows successfully.
I suggest use scoop to install build tools. https://scoop.sh
After you install scoop, in the powershell prompt, you can run
PS C:> scoop install gcc make cmake

Even you can install python using scoop too:
PS C:> scoop install python

This has worked. Thank you !


Add iCalendar URL column

One of the items on gemstate.io backlog that I'm making progress on is addition of support for RFC 5545 feeds, which are particularly used by Trailhead, Innovation Collective, and IIRC Boise Code School-sponsored events.
So that we don't lose the URLs we got from those groups, we'll add this column in the near term w/ some values and validation before gemstate.io supports it

Don't forget to update README


Automatically build new DLLs

This PR is for adding automatic builds for new DLLs and packages, along with automatically releasing new versions of the package to NuGet.
This PR also automatically builds a Thunderstore package that can be automatically uploaded in the future. For now, it will simply serve it as an artifact that can then be manually uploaded.
This PR also bumps the versions of the following packages/dependencies in both csproj and manifest.json:

TootTallyCore
BaboonAPI
TrombLoader

This PR also bumps the version to 1.1.4 due to the bumped dependencies.

Aight then lmao


Add a table with a registers

Thank you for a book!
What do you think about to add a table like here https://bronzebeard.readthedocs.io/en/latest/assembly_language.html#registers (MIT license) into your chapter "<IP_ADDRESS> Registers"?
P.S.: If yes, I would recommend to expand this table with pc register.

Yeah, the intro chapter needs work.  Maybe a table in there would help.
I guess I could copy the table on page 58?
I suppose I could add an extended box to the bottom showing the PC.

Oops, I see this table in "5.4 CPU Registers", on the page 58. Sorry :)
But pc register can be added into this table, with the same alias.


REST Web App Idea

Lot of applications today involve REST, I think making a basic REST web app where you have a front end that requests something, mid-tier that performs the logic/access a database and deals with pathing, to then deliver it to the front end to display.
An example is maybe like something simple such as states and capitals. Enter a state, and then give it's capital. Can make a database of that pretty easy in PostgreSQL (or really make it in excel, export it to CSV, then import to Postgres). Use a mid-tier like Java with Jersey and Tomcat/JBoss to deploy the server. The front end in JavaScript/HTML/CSS ofc or just XML if you don't care (probably gonna have the mid-tier make it into a JSON object for the front end to read), maybe even go further where the mid-tier makes it into a GeoJSON object that can be displayed using Leaflet.js.
Basically what I'm getting at is REST web apps are huge and a project like this would be something to familiarize yourself to do it any language.

The new "official" language for Android is Kotlin that has a reeeaallly nice interoperability with Java and also is very funny to code, so I recommend it instead. I did a REST client using Kotlin a time ago (it's not finished, actually, but already working, and I coded in Kotlin but used Java std libs): https://github.com/Mazuh/RedTube-Wrapper.

Javascript/ HTML/CSSofc.Mid teer geo JSON.main language English and what ever else you think

@Mazuh
Oh cool, yeah I mean a REST app or REST api is so universal almost any language you can make one :) I feel like it's a great practice project to learn a language. Koitlin looks neat, I've never used it before myself.


how to control insert frequency

I want  to insert 5 data every 10 seconds，how can I set the config

Unfortunately, it is currently not possible to schedule the requests in that fine grained way.
The threads will always send requests with the highest possible rate but you can limit the maximum throughput via the -target parameter

thanks, how to limit the maximum throughput via the -target parameter, can you show me a example?

Just put -target 1000 in the LOAD or RUN command, e.g. ./bin/ycsb load mongodb -s -P workloads/workloada -target 1000 and the request rate will throttled to at max 1000 ops/s (depending if the database can provide this throughput )

thanks a lot :)

how to delete data with the tool


In every API we need to be able to choose: count, ids, objects

related to #58, do we want objectsinstead of metadata, or something else?

@bjonnh-work Where would you like these flags?


[stable/nats] Force random password to start with letter

What this PR does / why we need it:
helm install stable/nats fails if the random generated password starts with a number. This PR forces the random password to start with a letter
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped

/ok-to-test

/lgtm


Fix missing variation selectors

Some emojis are missing the variation selector character (\uFE0F) used to specify a glyph to be applied to a preceding character, which makes them systematically fail the parsing test.
This first commit adds the missing character selectors for keycap enclosing digits. But there is likely to have such characters missing for other emojis.

Coverage increased (+0.3%) to 92.625% when pulling d72c7361393b39b5f77abd641e9681d4e09a2b72 on Johnibur:fix-missing-variation-selectors into 9a90624aa0a50f1785d6a10e1fcb2a296ce468f7 on vdurmont:master.

I meet with the same problem, and found another emoji ❤ missing with the variation selector character (\uFE0F)

directly removing all variation selectors may helps
// remove Variation Selectors for Emoji glyph
StringBuilder sb = new StringBuilder();
for (char ch : sentenceText.toCharArray()) {
    Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
    if (ub != Character.UnicodeBlock.VARIATION_SELECTORS && ub != Character.UnicodeBlock.VARIATION_SELECTORS_SUPPLEMENT) {
        sb.append(ch);
    }
}
sentenceText = sb.toString();


glCopyTexSubImage2D: incompatible format

Running the example in both Chrome and Safari I get the following error
GL ERROR :GL_INVALID_OPERATION : glCopyTexSubImage2D: incompatible format
It seems to be coming from this line: gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, x_1, y_1, pixelsWidth, pixelsHeight);
Removing the stage.filters the problem goes away, but I'm guessing that the VoidFilter speed up isn't working in either case.

right, i think i found what was wrong in v4 and v5. we can close it.


tests: Add fuzz-testing of incomplete fragments (split feature).

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 92.604%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
8953

Relevant Lines:
9668

💛  - Coveralls


Support for newer python versions

The python badge in the readme still reports that 3.8 is the most recent support version.

Please add support for all released python version and maybe drop support for older releases (some open-source projects require at least python 3.7)

(+1) I would like to use this tool but I'm from the future :\


Dropdown fields should have the first entry as blank or text like "Select".

Sifi -> Sci-Fi

Can you look this image?


Support inclusion of additional columns in Merit list download - DRAFT

Background
As part of the Merit list MVP, we aim to support Admins choosing additional columns to be included in the Excel spreadsheet for download.
User Story
As an Admin, I would like to be able to select additional columns to be added to the Merit list download so that I can conduct additional tasks off platform.
Benefit(s) to user (if not already clear from User story)
Admins can include only the columns necessary to their exercise rather than having to download all and delete the unnecessary columns.
Feature(s) Description

[ ] On the final screen of the merit list task in question, include the option for Admins to add the following additional columns to the download
[ ] The columns that are ticked appear in the excel spreadsheet that is downloaded
[ ] It is possible to return to this page and add additional columns at a later date
[ ] Add Download button to all Merit list task pages

Acceptance Criteria
It's done when Admins can select from a range of additional columns to be added to the download and those columns appear in the downloaded excel spreadsheet.
Definition of Done

[ ] User stories/acceptance criteria met
[ ] Internal reviews passed (feedback actioned)
[ ] User testing passed
[ ] Relevant technical documentation updated
[ ] User guidance updated
[ ] Deployed and merged without errors

User Testing Steps
Specify for users what is being tested (but not how to test it.)
Feature Champion

Hey team! Please add your planning poker estimate with Zenhub @drieJAC @HalcyonJAC @tomlovesgithub @warrensearle

Please add your planning poker estimate with Zenhub @KoWeiJAC


Migrate Debian based builds to bookworm

Since bookworm is now in hard freeze this upgrade should be safe. This will allow us to bump the minimum version of GCC to 12 should the need arise.

CI should run now after the Apache JFrog issues are resolved.
The only remaining question is whether we should bump the minimum requirement for GCC already, since 10 will not be tested anymore once this PR is merged.


Webpage doesn't load

Figure out what's wrong with https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time (doesn't load, Zen responds with "EOF").

Somehow can't replicate the error on the current master version, closing for now.


[MRG] Fix to gfp with ylim.

Closes https://github.com/mne-tools/mne-python/issues/2742

Works for me, will merge once Travis comes back happy

Thanks Jakko!

Failures are unrelated, thanks @jaeilepp


[Slider] RTL behavior is broken.

in Slider component when i want to set orientation = "horizontal-reverse"
i cant do it when my theme is RTL
line 602 in slider.js
if (theme.direction === 'rtl' && orientation !== "vertical") {
axis += '-reverse';
}

The issue has been closed because it does not conform to our issue requirements.
Please provide a full reproduction test case. This would help a lot 👷 .
A live example would be perfect. This codesandbox.io template may be a good starting point. Thank you!


correct the file name

Signed-off-by: clyang82<EMAIL_ADDRESS>

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

Needs approval from an approver in each of these files:

install/kubernetes/helm/subcharts/galley/OWNERS

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

/retest

/retest

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: clyang82, gyliu513
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

install/kubernetes/helm/subcharts/galley/OWNERS [gyliu513]

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

/retest

@clyang82: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-multicluster-e2e.sh
c5d0690d5f9717387d4795587d4ebacefa4d9eac
link
/test istio-pilot-multicluster-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: clyang82, gyliu513, linsun
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

install/kubernetes/helm/subcharts/galley/OWNERS [gyliu513,linsun]

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


Need to add Prompt sharing link in prompt menu

Need to add new item in prompt menu: <icon> Share
Sharing link menu item should create a link to DIAL application with additional parameter having prompt configuration encoded into base64. When user clicks on the link, DIAL app is opened with this Prompt added in to the application. Prompt should be created with the same name, description, body and folder structure.
[1] Use icon Share from here (the link is available for DIAL dev team only): https://www.figma.com/file/lwL5jneveZczAj5RLcLFH2/DIAL-Chat?type=design&node-id=1479-7249&mode=dev
[2] Share should be placed above Delete item
[3] Be sure to encode prompt folder if any

The ticket was verified on staging server successfully.
The implementation covers:

Share item in menu;
Shared icon in panel (note that shared icon disappears from prompt name while it's in delete mode; shared icon appears if the URL was copied on the button or via browser menu or hot key);
Shared icon stays if to update prompt;
See also #196 #191
Functionality of the shared URL will be implemented in another ticket (waiting for back-end team).


Getting Invalid email address or password with correct credentials

Getting error F0423 on main.go:137 Invalid email address or password for credentials I am sure are correct.
I just tested the credentials in 3 different browsers running in private mode to be sure it was using what I typed instead of cookies.
Maybe something changed in the Runtastic api you're using or in the way you're passing the credentials.
I was really hoping to be able to use this to export my Runtastic activities to Strava.

The current version worked a couple of minutes ago, so the runtastic api has not changed.
Maybe it is an encoding issue - Do you use any special characters for your mail or password ?

No special characters in the email or password. I even changed the password to a very simple one to be sure that wasn't the problem.
I am in Brazil. Does the code do anything with dates or decimal numbers to encode the credentials? Maybe it could be picking up my regional settings and formating something wrong.
BTW, I'm running on a Windows 10 Creators Update.

Nevermind about the login error. It was my mistake. I was using the correct password but the wrong email for the login (I was trying to log in with the email I used on Strava).
It just finished downloading. 547 activities. It looked like it had frozen (no feedback on screen and not CPU load on Task Manager), but it worked and created the zip file. I suppose the CPU usage is low because most of the time is spent waiting for web requests. Would be good to have some indication that it is working (showing a summary of how many activities will be downloaded and a countdown every few seconds with how many left).
Anyway, excellent work and thanks for being so responsive and for creating this. I was about to do my own reverse engineering to accomplish this.
Best regards,
Kelps


add options for contains query

Allow to pass options to query for example case insensitivity

I can't merge this into master since it'd break compatibility. If we merge this (which we probably will) I think it'll have to be against the mongokitten2 branch.


Add Nuxt + Oruga project

Hello we are right now migrating from nuxt2 + buefy to nuxt3 + oruga so it can be seen at our nuxt branch
https://github.com/kodadot/nft-gallery

Sure :) Will add a section for Nuxt :) You are welcome to make a PR too.


Question: Possible to get reference to the build_class from initialize_with?

I'm working with STI and am customizing our initialize_with block. However, there are some conditions we'd like to put in place that require introspection on the class in question.
It seems there are a number of layers of indirection around the class (decorator, @component, @build_class, etc). Is there a way to get a reference to the factory's class (essentially new.class, but without invoking new) from within the initialize_with block?

I'd like to bump this questions because I spent a long time digging into this problem before concluding it's just not possible. I'm trying to build a factorybot plugin/integration for an framework we have for managing data from third party api responses. We're using factorybot to build up these non active record data objects which are serialized from the response data. We don't use new when serializing these objects, so I'd like to be able to have a custom factorybot method that users can add to any factory to indicate this is a "API object factory", and have that method setup the correct initialize_with block for them. As is the only way I can do that is write a method like this
  def api_object_factory(build_class)
    initialize_with { build_class.from_hash(attributes) }
  end

So users are forced to specific the class twice when defining their factory
  factory :api_user, class: "Api::User" do
    api_object_factory("Api::User")
  end

Would love to make this a little less repetitive

I figured out a way around my particular problem, by doing this
  module FactoryHelpers
    def api_object_factory(name, options = {}, &block)
      raise ArgumentError, "You must specify a class" unless options[:class]
      raise ArgumentError, "You must specify a block" unless block

      factory(name, options) do
        skip_create

        initialize_with do
          options[:class].constantize.from_hash(attributes)
        end

        instance_eval(&block)
      end
    end
  end

  class FactoryBot::Syntax::Default::DSL
    include FactoryHelpers
  end

So now consumers don't use the normal factory method and instead write code like
FactoryBot.define do
  api_object_factory(:api_user, class: 'Api::User') {}

This is a fairly reasonable experience in my opinion. But is extending the default DSL a supported extension from the FactoryBot perspective?


Add Labeling instead of delete flag.

Is your feature request related to a problem? Please describe.
I'd like to be able to only filter or just recognize which movies are on each provider. Sometimes I use Plex to watch a movie and then I realize that it is already in netflix. Netflix is easier to use.
Describe the solution you'd like
Add a flag to excludarr to label all the movies that are available on each provider. My idea is to run a cron job each month that updates my library. When I want to watch a specific movie I can get into radarr search for the movie and see if it has the netflix label. If not, I'll watch it from Plex otherwise I'll just start netflix.
Describe alternatives you've considered
There is a fork and PR that does the same thing in the Radarr repo, but it was never merged.
Additional context
Shouldn't be hard to do considering it's just "label" instead of "delete" when calling the Radarr/Sonarr API.

Thanks for your issue! So to summerize: you want a -a label option that simply runs the code, but instead of deleting the entries and media, it should add a label with the name of the provider to the serie/movie. So if Movie A is available on Netflix, it should label that movie in Radarr with the label Netflix?

Exactly!

Why not write additional functionality to auto tag the movies in Plex as well? Plex's API support's Metadata Tagging, you can simply take the TMBD ID to search for the movie in a Plex Library and apply the tag. Then you can create a custom view in Plex based on tags to filter out movies available on streaming services.

Why not write additional functionality to auto tag the movies in Plex as well?
Same thing with Jellyfin/Emby which also support tags.
I do think that extends the scope of excludarr probably beyond its intention. You could easily script this though.

The original label part is awesome though.

Excludarr is only focussing on interacting with Radarr and Sonarr for now. Maybe in the future when the full codebase of excludarr is complete and has all the wanted features aboard we can think about extending the project further and developing plugins to interact with Plex/Emby/Jellyfin as well.

Why not write additional functionality to auto tag the movies in Plex as well? Plex's API support's Metadata Tagging, you can simply take the TMBD ID to search for the movie in a Plex Library and apply the tag. Then you can create a custom view in Plex based on tags to filter out movies available on streaming services.

It's ok but you can do that using Radarr/Sonarr to. Copy the tags to Plex with a custom script.


CI for Node

Initializes with two players

Run npm test

expect(game.p2).toBe('Nate')

Process completed with exit code 1.

Initializes with two players

Starts the game with a random player

Sets the current player to be whoever it is not

No tests found, exiting with code 1

Error: Process completed with exit code 1.

npm ERR

Run npm test

Initializes with two players

No tests found

/tests//.[jt]s?(x), **/?(.)+(spec|test).[tj]s?(x)

testMatch

Initializes with two players

Node.js CI / build (10.x) (pull_request)

Run npm test

npm test

npm ERR!

Initializes with two players

Starts the game with a random player

Sets the current player to be whoever it is not


Problem with 2 nested resources

Hi, I have an issue when trying to create a resource that have 2 level nested resources, one in another. I guess it is intended to work, Basically my setup is
Resource

HasManyNested('Resource1')

Resource1

HasManyNested('Resource2')

and I have all the necessary traits in the Nova resource class and Eloquent model classes as you mentioned in the doc.
the issue is that Resource1 is not saved, and somehow when I click create Resource 1 it gives me a bunch of Resource2 as well (at least 10 records)

I am sorry but multi-level nesting is not yet supported.

@Lupennat sorry, I thought its supported because I saw your package is based on https://github.com/yassilah/laravel-nova-nested-form.
I found one workaround which is not ideal but I think it works and it is to have HasManyNested and inside to have Repeatable field from Nova 4, but of build-in support in your package it would be better.
Thank for hard work!
Cheers

V2.10 and v1.6.4 now support recursivity of nested many


About PSNR

Dear authors:
May I ask why the head result is better than the head+torso result in PSNR? Thanks a lot!

"head" means we only synthesize the head part and remain the ground-truth torso pixels, while in "head+torso" we also synthesize the torso part

Hi, may I ask if the bg+torso is served as the bg_img, how to make sure the torso keeps the similar movements with the synthesized head?


Fixing Issues With Release Pipeline

The release pipeline is still failing due to a number of small issues. This PR fixes them with changes that include:

Removing semantic-release/npm plugin

I don't have any npm packages being published and don't have a package.json

Updating tags

SInce the pipeline didn't work on my last merge, I need to update the tags in order to keep in line with the release scheme I am using. This allow semantic release to keep the correct tag when it does start to work

Fixes #48

:tada: This PR is included in version 1.1.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add user logged in variable to getPortfolioItems

This feature adds an isLoggedIn parameter to getPortfolioItems that is passed to each subsequent xToken API call in order to cut down on unnecessary async calls.

@rorychristianmurray - I'm a bit confused here, why are we fetching the portfolio if the user isn't logged in. The isLoggedIn boolean within xtoken-js seems redundant and should be avoided as it seems to make it tightly coupled with our FE and might confuse third party vendors who try to integrate our library. Let me know your thoughts, thanks!

@rorychristianmurray - I'm a bit confused here, why are we fetching the portfolio if the user isn't logged in. The isLoggedIn boolean within xtoken-js seems redundant and should be avoided as it seems to make it tightly coupled with our FE and might confuse third party vendors who try to integrate our library. Let me know your thoughts, thanks!

@rorychristianmurray - I'm a bit confused here, why are we fetching the portfolio if the user isn't logged in. The isLoggedIn boolean within xtoken-js seems redundant and should be avoided as it seems to make it tightly coupled with our FE and might confuse third party vendors who try to integrate our library. Let me know your thoughts, thanks!

I agree. I actually think this can just be closed for now and we can think about how to use the isLoggedIn as we make any changes or adaptation in the future.

@rorychristianmurray - I'm a bit confused here, why are we fetching the portfolio if the user isn't logged in. The isLoggedIn boolean within xtoken-js seems redundant and should be avoided as it seems to make it tightly coupled with our FE and might confuse third party vendors who try to integrate our library. Let me know your thoughts, thanks!

I agree. I actually think this can just be closed for now and we can think about how to use the isLoggedIn as we make any changes or adaptation in the future.


⚠ Samsung has degraded performance

In f8adff5, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2108 ms

Resolved: Samsung performance has improved in 0e39e45.


Check if wasm/zkey/vkey exist on RLN initialization

Wasm/zkey isn't getting fetched until a proof is generated; this is bad developer experience since they won't know something is wrong until they actually go to generate a proof, instead of on RLN instantiation.

Agreed. I'd like to add that if we add a check in the constructor, we should also make sure the check is working in the browser.

@AtHeartEngineer
I'm considering working on this issue. Would it be okay to add the following code to rln.ts?
    if (typeof args.wasmFilePath === 'string' && !fs.existsSync(args.wasmFilePath)) {
      throw new Error(
        'the file does not exist at the path for `wasmFilePath`'
      )
    }

    if (typeof args.finalZkeyPath === 'string' && !fs.existsSync(args.finalZkeyPath)) {
      throw new Error(
        'the file does not exist at the path for `finalZkeyPath`'
      )
    }

I find it challenging to add conditions for verificationKey since it's not a file path but an actual verification key. Also, I believe that when the data types for wasmFilePath and finalZkeyPath are Uint8Array, they already contain the file contents. Therefore, I think there's no need to add conditions in those cases.

Hey @s-ekai , thanks for working on this and the clarification. I'm thinking there might be an issue in the browser if we use fs.existsSync. Or, can it possibly be polyfiiled by the rollup bundler?

Hey @s-ekai , thanks for working on this and the clarification. I think it's good to have two ifs to check, but I think there might be issues in the browser if we use fs.existsSync. Or, can it possibly be polyfiiled by the rollup bundler so that we can support both the browser and NodeJS?

@mhchia
Thank you for your response. I hadn't considered running it in a browser. I'll think about whether there's a good way to do it. Thank you also for telling me about the library!

Hey @s-ekai no problem :) Actually we've already used roIlup to bundle the package. I'm thinking if polyfill can automatically replace fs.existsSync with a browser-compatible function, that's great. But, if polyfill can't, we can also use a if-else to check. Something like the following
if (typeof process !== 'undefined') {
    // In NodeJS
    // import fs and check fs.existsSync
} else {
    // In browser, we need to use another API to check if a resource at the URL exists.
}

I'm not sure if it's this is the correct way to check though. Let me know your thoughts on this 🙏

@mhchia
Thank you for explaining so clearly. I also suspect that it is probably being loaded automatically.
I have a question about debugging methods.
I replaced the code of the rlnjs library under node_modules within the examples/browser/ of this repository as shown below link and built it. However, the changes are not reflected. (I confirmed that the changes haven't been saved by checking inside examples/browser/dist/index.mjs and not seeing the changes there.) Could it be caching or something similar?
If you know of any better ways to verify this, I would appreciate your guidance.
https://github.com/s-ekai/rlnjs/pull/1/files

I realized that I should modify the code below. I'll check it out.
examples/browser/node_modules/rlnjs/dist/index.mjs

Yeah you're right. If you wanted to modify code rlnjs and test it in the examples/browser. You could also do something like the followings

Change examples/browser to use the local rlnjs

In examples/browser/package.json
{
  "name": "example-browser",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.mjs",
  "module": "dist/index.mjs",
  "scripts": {
    "build": "rollup --config rollup.config.mjs",
    "test": "npm run build && mkdir -p public && cp dist/index.mjs index.html public && cd public && npx http-server",
    "clean": "rm -rf dist"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@rollup/plugin-commonjs": "^24.1.0",
    "@rollup/plugin-json": "^6.0.0",
    "@rollup/plugin-node-resolve": "^15.0.2",
    "@rollup/plugin-replace": "^5.0.2",
    "rollup": "^3.20.2",
    "rollup-plugin-cleaner": "^1.0.0",
    "rollup-plugin-polyfill-node": "^0.12.0",
    "rollup-plugin-typescript2": "^0.34.1",
    "rollup-plugin-visualizer": "^5.9.0",
    "rlnjs": "file:../../"
  }
}

Modify rlnjs. Build the rlnjs package again with npm run build

# Go to rlnjs project root
cd ../../
npm run build

Install and build the browser example again

npm install && npm test

@mhchia Thank you very much!
And there is no way to load local files from a browser.
(If a browser can load local files, there are security concerns. However, if the file is under the management of an HTTP server, it can be loaded.)
Therefore, I thought it was unnecessary to use libraries like fs in the browser to check whether a file exists.
In APIs that communicate with local files on the browser side, as far as I can see, they use the input tag to load the file.
In this case, there is no need to verify whether the file path is correct.
For this implementation, if the data type of args.finalZkeyPath is a string, I thought it might be considered as running in a node environment rather than in a browser. (It might also be good to check if the process is defined for safety reasons.)

Hey @s-ekai, sorry for the late response, and thanks for your input. You're right that browsers cannot access local files. However, args.finalZkeyPath and args.wasmFilePath can be URLs when using RLNjs in browsers. In this case, we can use something like an HTTP HEAD request to check if a resource exists without downloading the whole file. Something like axiom.head should be able to do this. Please let me know if I get something wrong here 🙏

@mhchia
Thank you for reaching out!
I hadn't fully considered the case of downloading from the web.
I'll start working on it based on the advice you've provided so far!

@mhchia
I had forgotten that we can't perform asynchronous operations in a class constructor. Therefore, I feel that if I need to check whether the URL is valid, I can only do it within the create function. Is this approach okay? I'm also thinking of moving the conditions that are already in the constructor to the create function as much as possible.

Thanks for bringing this up. Yes, we can do it in RLN.create

I'm also thinking of moving the conditions that are already in the constructor to the create function as much as possible

Can you elaborate on what conditions are you moving? or we can discuss it in your pull request too :)

@mhchia
Thank you.
I’ve tried creating the code snippet as envisioned here.
https://github.com/s-ekai/rlnjs/pull/1/files
(Note: I haven’t tested or verified this code yet.If the approach of this code is acceptable, I plan to add tests and clean up the code.)

Initially, I considered moving the following code into the create function. However, since wasmFilePath and other variables are initialized within the create function, I decided against it.

    if ((args.wasmFilePath === undefined || args.finalZkeyPath === undefined) && args.verificationKey === undefined) {
      throw new Error(
        ‘Either both `wasmFilePath` and `finalZkeyPath` must be supplied to generate proofs, ’ +
        ‘or `verificationKey` must be provided to verify proofs.’,
      )
    }

To check if the runtime environment is a browser, I added the code typeof window !== 'undefined' && typeof window.document !== 'undefined'. This is not perfect as it doesn’t account for cases where the window variable is defined within the code, but I couldn’t think of a better way.

@s-ekai Great work! I just left some comments in the pull request in your repo. Let me know your thoughts on them :)

@mhchia
Thank you for your comment!
I've updated the PR and added more tests.
https://github.com/s-ekai/rlnjs/pull/1/files
I believe that just checking the 'process' variable should be sufficient, but I can't say for certain. I looked into discussions on Stack Overflow, and some people are checking with 'require' or 'global' variables. For this case, just to be safe, I'm checking for the existence of both 'process' and 'window' variables to determine if it's a browser environment.

Hey @s-ekai , awesome work! Thanks for the investigation and also for your tests. Can you also do the same check for withdrawWasmFilePath and withdrawFinalZkeyPath in createWithContractRegistry? After this one I think it'll be all set. And would you mind opening a PR in this repo?

Thank you. I will make the corrections and create a PR (Pull Request)!
On a different note, while I was testing in the browser, I encountered the following error. It might be a good idea to change the CORS settings on the S3 side. (If you're not expecting this file to be accessed from the browser, please disregard this comment.)
Access to XMLHttpRequest at 'https://rln-trusted-setup-ceremony-pse-p0tion-production.s3.eu-central-1.amazonaws.com/circuits/rln-20/RLN-20.wasm' from origin 'http://<IP_ADDRESS>:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

I've modified and executed the code inside examples/browser as follows.
    async function createRLNInstance() {
        return await RLN.createWithContractRegistry({
            /* Required */
            rlnIdentifier,
            provider,
            contractAddress: rlnContractAddress,
            /* Optional */
            contractAtBlock: rlnContractAtBlock,
            signer,
            wasmFilePath: "https://rln-trusted-setup-ceremony-pse-p0tion-production.s3.eu-central-1.amazonaws.com/circuits/rln-20/RLN-20.wasm",
            finalZkeyPath:  "https://rln-trusted-setup-ceremony-pse-p0tion-production.s3.eu-central-1.amazonaws.com/contributions/rln-20_final.zkey"
        })
    }

@mhchia I've created new PR!
I would appreciate it if you could check it when you have some time.
https://github.com/Rate-Limiting-Nullifier/rlnjs/pull/109


test

Coverage Summary
=============================== Coverage summary ===============================
Statements   : 84.31% ( 43/51 )
Branches     : 0% ( 0/4 )
Functions    : 77.78% ( 7/9 )
Lines        : 87.5% ( 35/40 )


Editor can style the elements within the document using CSS

Included as sub task of #6 . Refer to #6  in the future.


UB-1977 exclude the warning messages in multipath output

The multipath output might print some warning messages if some devices are faulty, it has impact on the function isDeviceFaulty. I have no time to improve this fucntion, I will exclude these messages in 2.1 release.
Here is an example output:
Apr 04 16:13:40 | sde: couldn't get target port group
Apr 04 16:13:40 | sdd: couldn't get target port group
mpathj<PHONE_NUMBER>c8701159800000000001af4) dm-17 IBM     ,2145
size=1.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 39:0:0:1 sde 8:64 failed faulty running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 40:0:0:1 sdd 8:48 failed faulty running
mpathi<PHONE_NUMBER>c8701159800000000001af3) dm-14 IBM     ,2145
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 40:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  `- 39:0:0:0 sdc 8:32 active ready running

This change is

Coverage increased (+5.9%) to 65.068% when pulling 37ddd0ba3efcfb5d64b86368bd976159231945a1 on feature/UB-1977_warning_messages_in_multipath_output into 3f22f0ef8a4ebccdfacf732d32c087986c51e2a6 on dev.

+1


Can't change the circle radius on android

Bug
On android i can't change the radius of the circle with an animation. On ios this works perfectly
Environment info
System:
    OS: macOS Mojave 10.14.6
    CPU: (6) x64 Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz
    Memory: 518.76 MB / 8.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 8.12.0 - /usr/local/bin/node
    npm: 6.4.1 - ~/.nvm/versions/node/v8.12.0/bin/npm
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 21, 22, 23, 24, 25, 26, 27, 28, 29
      Build Tools: 27.0.3, 28.0.2, 28.0.3, 29.0.0
      System Images: android-25 | Google APIs Intel x86 Atom, android-26 | Google APIs Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-29 | Intel x86 Atom, android-29 | Google APIs Intel x86 Atom
      Android NDK: 20.0.5594570
  IDEs:
    Android Studio: 3.5 AI-191.8<IP_ADDRESS>77832
    Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
  npmPackages:
    @react-native-community/cli: ^3.0.0 => 3.2.0
    react: ^16.12.0 => 16.12.0
    react-native: 0.61.5 => 0.61.5
  npmGlobalPackages:
    react-native-cli: 2.0.1
    react-native-voip-push-notification: 1.1.2
    react-native: 0.61.5

Library version: 11.0.1
Steps To Reproduce
Describe what you expected to happen:

The radius of the circle should change with the animation

If you look at the code below i can see that i sets the native props when i log it.
Code that i used
import { Animated, Easing} from 'react-native';

// import svg stuff
import Svg, {
  Circle,
  Defs,
  LinearGradient,
  Stop,
  Rect,
  ClipPath,
  Mask,
} from 'react-native-svg';

// make circle animated
const AnimatedCircle = Animated.createAnimatedComponent(Circle);

// animated value
this.circleRadius = new Animated.Value((this.width));

// set the radius for the circle
this.circleRadius.addListener((radius) => {this._myCircle.setNativeProps({r: radius.value.toString()});});

          // in a function that triggers to make the circle small
          Animated.timing(this.circleRadius, {
            toValue: (typeof this.state.width === 'undefined' ? this.width : this.state.width) / 7,
            friction: 3,
            duration: 1500,
            useNativeDriver: true,
            easing: Easing.bezier(0.175, 0.885, 0.32, 1.275),
          }).start();

// and in the render
              <Svg height={this.state.height + 25}
                width={this.state.width}>
                <Defs>

                  <LinearGradient gradientUnits="userSpaceOnUse" id="grad" x1="0" y1={this.state.height + 25} x2="0" y2="0">
                    <Stop offset="0" stopColor="rgb(255,255,255)" stopOpacity="1" />
                    <Stop offset="0.2" stopColor="rgb(255,255,255)" stopOpacity="0.4" />
                    <Stop offset="0.5" stopColor={ConfigurationManager.getConfig('Theme.Colors.Primary')} stopOpacity="0.5" />
                  </LinearGradient>

                  <ClipPath id="clip" clipRule="evenodd">

                    <Rect  height={this.state.height + 25}
                      width={this.state.width} />

                    <AnimatedCircle
                      ref={ref => this._myCircle = ref}
                      cx={(this.state.width / 2)}
                      cy={(this.state.height / 2)}
                      r={this.circleRadius} />
                  </ClipPath>

                </Defs>

                <Rect x="0" y="0" height={this.state.height + 25}
                  width={this.state.width} fill="url(#grad)" clipPath="url(#clip)" />

              </Svg>

Here are the screen shots from IOS:
When the circle is big (outside of the screen):

And then after the function to make the circle animate to a smaller radius

So it works fine on IOS, but on android the animation wont trigger.

Perhaps you're looking for mask rather than clipPath, the support for several elements inside clipPath is non standard, try something like this instead:
https://snack.expo.io/@msand/petrified-peanut
import * as React from 'react';
import { Animated, Easing, Dimensions } from 'react-native';
import Svg, {
  Circle,
  Defs,
  LinearGradient,
  Stop,
  Rect,
  ClipPath,
  Mask,
  Path,
} from 'react-native-svg';
const { width, height } = Dimensions.get('window');
const AnimatedCircle = Animated.createAnimatedComponent(Circle);

export default class App extends React.Component {
  circleRadius = new Animated.Value(100);
  componentDidMount() {
    Animated.timing(this.circleRadius, {
      toValue: 50,
      friction: 3,
      duration: 1500,
      useNativeDriver: true,
      easing: Easing.bezier(0.175, 0.885, 0.32, 1.275),
    }).start();
  }
  render() {
    return (
      <Svg {...{ width, height }}>
        <Defs>
          <LinearGradient id="grad" x1="0" y1="1" x2="0" y2="0">
            <Stop offset="0" stopColor="rgb(255,255,255)" stopOpacity="1" />
            <Stop offset="0.2" stopColor="rgb(255,255,255)" stopOpacity="0.4" />
            <Stop offset="0.5" stopColor="blue" stopOpacity="0.5" />
          </LinearGradient>
          <Mask id="mask">
            <Rect x="0" y="0" width="100%" height="100%" fill="white" />
            <AnimatedCircle
              cx="50%"
              cy="50%"
              fill="black"
              r={this.circleRadius}
            />
          </Mask>
        </Defs>
        <Rect
          x="0"
          y="0"
          width="100%"
          height="100%"
          fill="url(#grad)"
          mask="url(#mask)"
        />
      </Svg>
    );
  }
}

Also, if you try this you'll see that the animation works on android in clippath as well, but the merging of paths behaves different to how you might expect. The clipRule applies to single path elements, and the winding rule of the curves defined by a single d attribute.
import * as React from 'react';
import { Animated, Easing, Dimensions } from 'react-native';
import Svg, {
  Circle,
  Defs,
  LinearGradient,
  Stop,
  Rect,
  ClipPath,
  Mask,
  Path,
} from 'react-native-svg';
const { width, height } = Dimensions.get('window');
const AnimatedCircle = Animated.createAnimatedComponent(Circle);

export default class App extends React.Component {
  circleRadius = new Animated.Value(100);
  componentDidMount() {
    Animated.timing(this.circleRadius, {
      toValue: 50,
      friction: 3,
      duration: 1500,
      useNativeDriver: true,
      easing: Easing.bezier(0.175, 0.885, 0.32, 1.275),
    }).start();
  }
  render() {
    return (
      <Svg {...{ width, height }}>
        <Defs>
          <LinearGradient id="grad" x1="0" y1="1" x2="0" y2="0">
            <Stop offset="0" stopColor="rgb(255,255,255)" stopOpacity="1" />
            <Stop offset="0.2" stopColor="rgb(255,255,255)" stopOpacity="0.4" />
            <Stop offset="0.5" stopColor="blue" stopOpacity="0.5" />
          </LinearGradient>
          <ClipPath id="clip" clipRule="evenodd">
            <Rect
              x="0"
              y="0"
              width="50%"
              height="50%"
              fill="url(#grad)"
              clipPath="url(#clip)"
            />
            <AnimatedCircle
              cx="50%"
              cy="50%"
              fill="black"
              r={this.circleRadius}
            />
          </ClipPath>
        </Defs>
        <Rect
          x="0"
          y="0"
          width="100%"
          height="100%"
          fill="url(#grad)"
          clipPath="url(#clip)"
        />
      </Svg>
    );
  }
}

https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/clip-rule

If you really wan't to do it using clipPath you can do like this as well:
https://snack.expo.io/@msand/forlorn-tortillas
import * as React from 'react';
import { Animated, Easing, Dimensions } from 'react-native';
import Svg, {
  Circle,
  Defs,
  LinearGradient,
  Stop,
  Rect,
  ClipPath,
  Path,
} from 'react-native-svg';
const { width, height } = Dimensions.get('window');
const AnimatedPath = Animated.createAnimatedComponent(Path);

export default class App extends React.Component {
  circleScale = new Animated.Value(2);
  componentDidMount() {
    Animated.timing(this.circleScale, {
      toValue: 1,
      friction: 3,
      duration: 1500,
      useNativeDriver: true,
      easing: Easing.bezier(0.175, 0.885, 0.32, 1.275),
    }).start();
  }
  render() {
    const cx = width / 2;
    const cy = height / 2;
    const r = Math.min(cx, cy);
    const d = 2 * r;
    const backgroundPath = `M${-cx},${-cy}
              H${2 * width}
              V${2 * height}
              H${2 * -width}
              z`;
    const circlePath = `M ${cx - r}, ${cy}
              a ${r},${r} 0 1,0 ${d},0
              a ${r},${r} 0 1,0 ${-d},0`;
    return (
      <Svg {...{ width, height }}>
        <Defs>
          <LinearGradient id="grad" x1="0" y1="1" x2="0" y2="0">
            <Stop offset="0" stopColor="rgb(255,255,255)" stopOpacity="1" />
            <Stop offset="0.2" stopColor="rgb(255,255,255)" stopOpacity="0.4" />
            <Stop offset="0.5" stopColor="blue" stopOpacity="0.5" />
          </LinearGradient>
          <ClipPath id="clip" clipRule="evenodd">
            <AnimatedPath
              d={backgroundPath + circlePath}
              style={{
                transform: [
                  { translateX: cx },
                  { translateY: cy },
                  { scale: this.circleScale },
                  { translateX: -cx },
                  { translateY: -cy },
                ],
              }}
            />
          </ClipPath>
        </Defs>
        <Rect
          x="0"
          y="0"
          width="100%"
          height="100%"
          fill="url(#grad)"
          clipPath="url(#clip)"
        />
      </Svg>
    );
  }
}

But, using a single path without any clipPath or mask is probably most performant:
https://snack.expo.io/@msand/quiet-truffle
import * as React from 'react';
import { Animated, Easing, Dimensions } from 'react-native';
import Svg, {
  Circle,
  Defs,
  LinearGradient,
  Stop,
  Rect,
  ClipPath,
  Path,
} from 'react-native-svg';
const { width, height } = Dimensions.get('window');
const AnimatedPath = Animated.createAnimatedComponent(Path);

const cx = width / 2;
const cy = height / 2;
const r = Math.min(cx, cy);
const d = 2 * r;

const backgroundPath = `
M${-cx},${-cy}
V${2 * height}
H${2 * width}
V${2 * -height}
z`;

const circlePath = `
M ${cx - r}, ${cy}
a ${r},${r} 0 1,0 ${d},0
a ${r},${r} 0 1,0 ${-d},0`;

export default class App extends React.Component {
  circleScale = new Animated.Value(2);
  state = { toggle: false };
  toggle = () => {
    Animated.timing(this.circleScale, {
      toValue: this.state.toggle ? 2 : 1,
      friction: 3,
      duration: 1500,
      easing: Easing.bezier(0.175, 0.885, 0.32, 1.275),
    }).start();
    this.setState(({ toggle }) => ({ toggle: !toggle }));
  };
  componentDidMount() {
    this.toggle();
  }
  render() {
    return (
      <Svg
        {...{ width, height }}
        onPress={this.toggle}
        style={{ alignItems: 'center' }}>
        <Defs>
          <LinearGradient id="grad" x1="0" y1="1" x2="0" y2="0">
            <Stop offset="0" stopColor="rgb(255,255,255)" stopOpacity="1" />
            <Stop offset="0.2" stopColor="rgb(255,255,255)" stopOpacity="0.4" />
            <Stop offset="0.5" stopColor="blue" stopOpacity="0.5" />
          </LinearGradient>
        </Defs>
        <AnimatedPath
          fill="url(#grad)"
          fillRule="evenodd"
          d={backgroundPath + circlePath}
          style={{
            transform: [
              { translateX: cx },
              { translateY: cy },
              { scale: this.circleScale },
              { translateX: -cx },
              { translateY: -cy },
            ],
          }}
        />
      </Svg>
    );
  }
}

Slightly different version:
https://snack.expo.io/@msand/petrified-donut
import * as React from 'react';
import { Animated, Easing, Dimensions } from 'react-native';
import Svg, { Defs, LinearGradient, Stop, G, Path } from 'react-native-svg';
const AnimatedPath = Animated.createAnimatedComponent(Path);
const { width: w, height: h } = Dimensions.get('window');

const dw = w * 2;
const dh = h * 2;

const backgroundPath = `
M${-w},${-h}
V${dh}
H${dw}
V${-dh}
z`;

const hw = w / 2;
const hh = h / 2;
const r = Math.min(hw, hh);
const d = 2 * r;
const cx = 0;
const cy = 0;

const circlePath = `
M ${cx - r}, ${cy}
a ${r},${r} 0 1,0 ${d},0
a ${r},${r} 0 1,0 ${-d},0`;

export default class App extends React.Component {
  circleScale = new Animated.Value(2);
  state = { toggle: false };
  toggle = () => {
    const { toggle } = this.state;
    Animated.timing(this.circleScale, {
      toValue: toggle ? 2 : 1,
      friction: 3,
      duration: 1500,
      easing: Easing.bezier(0.175, 0.885, 0.32, 1.275),
    }).start();
    this.setState({ toggle: !toggle });
  };
  componentDidMount() {
    this.toggle();
  }
  render() {
    return (
      <Svg
        width={w}
        height={h}
        onPress={this.toggle}
        onClick={this.toggle}
        style={{ alignItems: 'center' }}>
        <Defs>
          <LinearGradient id="grad" x1="0" y1="1" x2="0" y2="0">
            <Stop offset="0" stopColor="rgb(255,255,255)" stopOpacity="1" />
            <Stop offset="0.2" stopColor="rgb(255,255,255)" stopOpacity="0.4" />
            <Stop offset="0.5" stopColor="blue" stopOpacity="0.5" />
          </LinearGradient>
        </Defs>
        <G transform={`translate(${hw},${hh})`}>
          <AnimatedPath
            fill="url(#grad)"
            fillRule="evenodd"
            d={backgroundPath + circlePath}
            style={{
              transform: [{ scale: this.circleScale }],
            }}
          />
        </G>
      </Svg>
    );
  }
}

Oke thx, I'll give it a try!

Oke that last example works almost perfect, but i cant get the animation correctly. During the animation the make the circle smaller is see the background not filling that screen.

You can try making the backgroundPath larger, you can calculate the needed size from your minimum scale, if the minimum scale you need to support is lets say 0.2, then the width and height of the background needs to be at least 1/0.2 = 5 times bigger than the canvas, and a bit more for the easing.

Ah i see it was indeed because i did set the scale to 0.5

Got it working now, thx for the help!


Doing "pip install kivymd" installs a version that does not contain the "hot_reload_viewer.py" file.

Doing "pip install kivymd" installs a version that does not contain the "hot_reload_viewer.py" file. You should add a note or something mentioning that in the docs.

@xCuriousParanoiax hot_reload_viewer.py is available only in the master branch of the KivyMD library.