Mixin Error for 1.20.1 on GNU/Linux

When using Linux (I'm on Mint 21.3), and I add the mod to Prism Launcher (A MultiMC fork, a fork of PolyMC), I get this Mixin error, as shown here:
java.lang.RuntimeException: Error creating Mixin config no-more-structures-full.mixins.json for mod no-more-structures-full 	at net.fabricmc.loader.impl.launch.FabricMixinBootstrap.init(FabricMixinBootstrap.java:96) 	at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:151) 	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:68) 	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) 	at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100) 	at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129) 	at org.prismlauncher.EntryPoint.main(EntryPoint.java:70) Caused by: org.spongepowered.asm.launch.MixinInitialisationError: Error initialising mixin config no-more-structures-full.mixins.json 	at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:153) 	at org.spongepowered.asm.mixin.Mixins.createConfiguration(Mixins.java:100) 	at org.spongepowered.asm.mixin.Mixins.addConfiguration(Mixins.java:87) 	at net.fabricmc.loader.impl.launch.FabricMixinBootstrap.init(FabricMixinBootstrap.java:94) 	... 6 more Caused by: java.lang.IllegalArgumentException: The requested compatibility level JAVA_21 could not be set. Level is not supported by the active JRE or ASM version (Java 17.0, ASM 9.6 (ASM10_EXPERIMENTAL)) 	at org.spongepowered.asm.mixin.MixinEnvironment.setCompatibilityLevel(MixinEnvironment.java:1627) 	at org.spongepowered.asm.mixin.transformer.MixinConfig.initCompatibilityLevel(MixinConfig.java:557) 	at org.spongepowered.asm.mixin.transformer.MixinConfig.postInit(MixinConfig.java:502) 	at org.spongepowered.asm.mixin.transformer.MixinConfig.onLoad(MixinConfig.java:430) 	at org.spongepowered.asm.mixin.transformer.MixinConfig.create(MixinConfig.java:1293) 	at org.spongepowered.asm.mixin.transformer.Config.create(Config.java:148) 	... 9 more
How could I fix this strange error?

Make sure you are using Java 21, I think you are using Java 17.

Why would Java 21 be a requirement, when the version I'm running uses Java 17? Would I have to skip Java compatibility checks in Prism Launcher (the launcher I got this report from)?

I basically forgot to add Java 17 support, I will do when I get back but for now just use Java 21. It works when I use it on any version with MultiMC

I got it to work. It was a mixin error with Java 21 on 1.20.1.


GET /bridge validate

Based on the https://github.com/LimeChain/hashport-api/issues/11 - we can use the same parameters and have an additional end-point to validate if the transfer will be valid (the /utils case for testing if the request is valid) and response with { valid: true|false, message: ""}. We agreed to have it in a separate end-point /bridge/validate or /bridge-validate

Issue moved to LimeChain/hashport-api #27 via ZenHub


Request to add a PowerShell command to enable auto grow for Azure Postgres-Flexible server just like we have for Azure Database for PostgreSQL - Single Server - https://learn.microsoft.com/en-us/azure/postgresql/single-server/how-to-auto-grow-storage-powershell

Related command

Update-AzPostgreSqlServer -Name mydemoserver -ResourceGroupName myresourcegroup -StorageAutogrow Enabled
$Password = Read-Host -Prompt 'Please enter your password' -AsSecureString
New-AzPostgreSqlServer -Name mydemoserver -ResourceGroupName myresourcegroup -Sku GP_Gen5_2 -StorageAutogrow Enabled -Location westus -AdministratorUsername myadmin -AdministratorLoginPassword $Password
Is your feature request related to a problem? Please describe.
We have enable-autogrow powershell command available for Azure Database for PostgreSQL - Single Server - https://learn.microsoft.com/en-us/azure/postgresql/single-server/how-to-auto-grow-storage-powershell. Request to add a similar PowerShell command to enable auto grow for Azure Postgres-Flexible server.
Describe the solution you'd like
We have enable-autogrow powershell command available for Azure Database for PostgreSQL - Single Server - https://learn.microsoft.com/en-us/azure/postgresql/single-server/how-to-auto-grow-storage-powershell. Request to add a similar PowerShell command to enable auto grow for Azure Postgres-Flexible server.
Describe alternatives you've considered
Right now, we have through Azure Portal - https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-auto-grow-storage-portal
Azure CLI -
https://learn.microsoft.com/en-us/cli/azure/postgres/flexible-server?view=azure-cli-latest#az-postgres-flexible-server-update
https://learn.microsoft.com/en-us/cli/azure/postgres/flexible-server?view=azure-cli-latest#az-postgres-flexible-server-create
Additional context
This is as per customer request as they specifically want it via PS just like we have it for Single server as they
don't want to do it manually for each customer and there is huge no from their Management. So, they want it using automation and for their coming customers as well.

Thank you for opening this issue, we will look into it.

Thank you Yong!


Bugfix admin calendar

Fix bugs around status being removed on show save + adjust colour of TBC show to light grey so its not so intense!

📝 Changed routes:

/admin/calendar

(view full size)

Commit 5f7f7b7ede0fdc25456c32d11bc2c422dc32baaf (https://refuge-worldwide-oin1n7dw3-refugeworldwide.vercel.app).


fix: skipLocal and statistics, fixes #14 #15

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Please upload report for BASE (main@f786c6a). Learn more about missing BASE report.
Report is 5 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #16   +/-   ##
=======================================
  Coverage        ?   92.13%
=======================================
  Files           ?        4
  Lines           ?      699
  Branches        ?        0
=======================================
  Hits            ?      644
  Misses          ?       40
  Partials        ?       15

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Failed to produce diagnostic for expression

Describe the bug
A clear and concise description of what the bug is.
Steps To Reproduce
Steps to reproduce the behavior:
1.
2.
...
Expected behavior
How can I solve this problem?
Screenshots

Environment (please fill out the following information)

OS: [e.g. macOS 11.0]
Xcode Version 14:

Additional context
Add any other context about the problem here.

var body: some View {
    NavigationView{
        Form{

            Section{
                Picker("Units" ,selection: $Unit){
                    ForEach(units , id: \.self){
                        Text($0 , format: .number)
                    }
                }
                .pickerStyle(.segmented)
            }header: {
                Text("From:")
            }
            Section{
                Picker("Units", selection: $Unit){
                    ForEach(units , id: \.self){
                        Text($0, format: .number)
                    }
                }
            }
        }
    }
}

@Ero2002 It seems you may have left out some code that this snippet depends on, i.e., $Unit and units. Could you include them as well?

I removed some parts and tried. And I noticed (format: .number ) cause the bug. After I removed that, the bug disappeared.

For context, the code is most likely malformed; in other words, it should produce an error either way. The bug is that compiler was not able to locate the issue and/or produce a meaningful error, and instead spat out the one you see as a fallback.

I was not able to reproduce the bug without knowing what Unit and units are. It may be helpful to provide more context.


Support domain filters when retrieving blobs

/get should support a URL query param that allows a client to specify which respective blob domain state (iFFT, bytes) its reading for. The param will assume bytes as the default value to ensure cross-compatibility with OP server.

#22


Added continuous integration and tox.

@ldko, @damonkelley, this tiny PR is ready for review.

:+1:

:+1:


goodwe-wifi interrupts data upload to semsportal

Describe the bug
While EVCC is running, the GoodWe hybrid inverter no longer uploads data to SEMS portal.
Steps to reproduce

Start EVCC with configured gooodwe-wifi
Observe EVCC working properly.
SEMS has only 0 values logged
Stop EVCC
Data is uploaded to SEMS again.

Configuration details
# open evcc at http://evcc.local:7070
network:
  schema: http
  host: evcc.local # .local suffix announces the hostname on MDNS
  port: 7070

log: debug
levels:
  cache: error

# unique installation id
plant: ...

interval: 30s # control cycle interval

sponsortoken: ...

# sponsors can set telemetry: true to enable anonymous data aggregation
# see https://github.com/evcc-io/evcc/discussions/4554
telemetry: false

meters:
- type: template
  template: goodwe-wifi
  usage: grid
  uri: <IP_ADDRESS>
  name: grid1
- type: template
  template: goodwe-wifi
  usage: pv
  uri: <IP_ADDRESS>
  name: pv1
- type: template
  template: goodwe-wifi
  usage: battery
  uri: <IP_ADDRESS>
  name: battery1
  # title: GoodWe LX F9.8-H

chargers:
- type: template
  template: go-e-v3
  host: <IP_ADDRESS>
  name: wallbox1

loadpoints:
- title: Garage
  charger: wallbox1
  mode: pv

vehicles:
  - name: MB-S205
    title: Mercedes C300 de
    type: mercedes
    account<EMAIL_ADDRESS># Mercedes Me Nutzer-Id (email)
    region: EMEA # MB me Region (EMEA, APAC, NORAM)
    vin: W1K2052131G087806 # Erforderlich, wenn mehr als ein Fahrzeug im Account registriert
    capacity: 13.5 # Akkukapazität in kWh (optional)
    tokens:
      access: ...
      refresh: ...

site:
  title: Mein Zuhause
  meters:
    grid: grid1
    pv:
    - pv1
    battery:
    - battery1

Log details
[main  ] INFO 2024/05/02 22:04:06 evcc 0.126.1
[main  ] INFO 2024/05/02 22:04:06 using config file: /etc/evcc.yaml
[main  ] INFO 2024/05/02 22:04:06 starting ui and api at :7070
[db    ] INFO 2024/05/02 22:04:06 using sqlite database: /root/.evcc/evcc.db
[mercedes] DEBUG 2024/05/02 22:04:06 identity.NewIdentity - token not valid - Add expiry
[mercedes] DEBUG 2024/05/02 22:04:06 identity.NewIdentity - token not valid - database token check started
[mercedes] DEBUG 2024/05/02 22:04:06 identity.NewIdentity - token not valid - refreshToken started
[main  ] ERROR 2024/05/02 22:04:06 creating vehicle MB-S205 failed: cannot create vehicle type 'mercedes': token expired
[lp-1  ] DEBUG 2024/05/02 22:04:07 charge total import: 200.928kWh
[site  ] WARN 2024/05/02 22:04:07 battery configured but residualPower is missing or <= 0 (add residualPower: 100 to site), see https://docs.evcc.io/en/docs/reference/configuration/site#residualpower
[site  ] INFO 2024/05/02 22:04:07 site config:
[site  ] INFO 2024/05/02 22:04:07   meters:      grid ✓ pv ✓ battery ✓
[site  ] INFO 2024/05/02 22:04:07     grid:      power ✓ energy ✗ currents ✗
[site  ] INFO 2024/05/02 22:04:07     pv 1:      power ✓ energy ✗ currents ✗
[site  ] INFO 2024/05/02 22:04:07     battery 1: power ✓ energy ✗ currents ✗ soc ✓ capacity ✗
[site  ] INFO 2024/05/02 22:04:07   vehicles:
[site  ] INFO 2024/05/02 22:04:07     vehicle 1: range ✗ finish ✗ status ✗ climate ✗ wakeup ✗
[lp-1  ] INFO 2024/05/02 22:04:07 loadpoint 1:
[lp-1  ] INFO 2024/05/02 22:04:07   mode:        pv
[lp-1  ] INFO 2024/05/02 22:04:07   charger:     power ✓ energy ✓ currents ✓ phases ✓ wakeup ✗
[lp-1  ] INFO 2024/05/02 22:04:07   meters:      charge ✓
[lp-1  ] INFO 2024/05/02 22:04:07     charge:    power ✓ energy ✓ currents ✓
[lp-1  ] DEBUG 2024/05/02 22:04:07 phase timer inactive
[lp-1  ] DEBUG 2024/05/02 22:04:07 pv timer inactive
[site  ] DEBUG 2024/05/02 22:04:07 ----
[lp-1  ] DEBUG 2024/05/02 22:04:07 charge power: 0W
[lp-1  ] DEBUG 2024/05/02 22:04:07 charge currents: [0 0 0]A
[site  ] DEBUG 2024/05/02 22:04:07 pv power: 0W
[site  ] DEBUG 2024/05/02 22:04:07 battery soc: 0%
[site  ] DEBUG 2024/05/02 22:04:07 battery power: 627W
[site  ] DEBUG 2024/05/02 22:04:07 grid meter: -99W
[site  ] DEBUG 2024/05/02 22:04:07 site power: 528W
[lp-1  ] DEBUG 2024/05/02 22:04:07 charge total import: 200.928kWh
[lp-1  ] DEBUG 2024/05/02 22:04:07 charger status: B
[lp-1  ] INFO 2024/05/02 22:04:07 car connected
[lp-1  ] DEBUG 2024/05/02 22:04:07 vehicle api refresh
[lp-1  ] DEBUG 2024/05/02 22:04:07 pv timer elapse
[lp-1  ] DEBUG 2024/05/02 22:04:07 pv timer inactive
[lp-1  ] DEBUG 2024/05/02 22:04:07 charge total import: 200.928kWh
[lp-1  ] DEBUG 2024/05/02 22:04:07 available power -528W < 4140W min 3p threshold
[lp-1  ] DEBUG 2024/05/02 22:04:07 phase scale1p in 0s
[lp-1  ] DEBUG 2024/05/02 22:04:07 switched phases: 1p
[lp-1  ] DEBUG 2024/05/02 22:04:07 phase timer inactive
[lp-1  ] DEBUG 2024/05/02 22:04:07 pv charge current: 0A = 0A + -2.29A (528W @ 1p)
[lp-1  ] DEBUG 2024/05/02 22:04:07 pv enable timer reset
[lp-1  ] DEBUG 2024/05/02 22:04:07 pv timer inactive
[site  ] DEBUG 2024/05/02 22:04:37 ----
[lp-1  ] DEBUG 2024/05/02 22:04:37 charge power: 0W
[lp-1  ] DEBUG 2024/05/02 22:04:37 charge currents: [0 0 0]A
[site  ] DEBUG 2024/05/02 22:04:37 pv power: 0W
[site  ] DEBUG 2024/05/02 22:04:37 battery soc: 42%
[site  ] DEBUG 2024/05/02 22:04:37 battery power: 627W
[site  ] DEBUG 2024/05/02 22:04:37 grid meter: -99W
[site  ] DEBUG 2024/05/02 22:04:37 site power: 528W
[lp-1  ] DEBUG 2024/05/02 22:04:37 charge total import: 200.928kWh
[lp-1  ] DEBUG 2024/05/02 22:04:37 charger status: B
[lp-1  ] DEBUG 2024/05/02 22:04:37 pv charge current: 0A = 0A + -2.29A (528W @ 1p)

What type of operating system are you running?
Linux
Version
0.126.1

@ReneNulschDE need to remove the debug messages ;)

@dassams I have no idea what SEMS is. Seems you‘ll need ro chose either evcc or that.

@dassams I have no idea what SEMS is. Seems you‘ll need ro chose either evcc or that.
GoodWe's proprietary cloud portal... During test phase and while requiring GoodWe support I'd like to use both. (And then stop using sems and keep the data for me only)


Plz fix signs

Plz fix buy signs in the next update

Please tell me the problem you are having. If you mean the price being at 0 when making the sign I fixed it and it will be in the next update. If that is the problem the please close this other wise tell me what's wrong.

There are no buy signs in this plugin.

But can you please add it

This isn't a bug report because this isn't in the plugin. If you want a new feature please pm me on spigot or on my live chat.


Add tests for LinkRule

@derrabus thanks for your contribution! Could you still fix the coding Standards please?


ReseedingThreadLocalRandomWrapperTest.testReseeding has flaked again

https://ci.appveyor.com/project/Pr0methean/betterrandom/build/AVB1728

Fixed by 8406ee4ed1c40ea9b2a762f66390c02add07a2d5


newsArticle is not iterable

Describe the bug
TypeError: argument of type 'NewsArticle' is not iterable
To Reproduce
I did change some configurations in newsplease/examples/commoncrawl.py
(just dates though,  --> datetime.datetime(2019, 3, 1) as well as the end date)
Then I ran,
python3 -m newsplease.examples.commoncrawl
and after downloading warc file from commoncrawl, the error came up during extraction.
Expected behavior
I was expecting the code to extract the articles from downloaded warc files.
Screenshots
https://drive.google.com/file/d/1EqR_GovNd_yDjwCvl2G1Gw1-aGT_QM6l/view?usp=sharing
Versions (please complete the following information):

OS: [MacOS 10.14]
Python Version [3.7]
news-please Version [1.3.13] (I am not sure, I git cloned yesterday..)

Works for me. Can you post the full log (as text)?

I am having a similar problem with the example newsplease.examples.downloadfromurl.py. I threw this into google colab for some messing around:
import json
url = 'https://www.rt.com/news/203203-ukraine-russia-troops-border/'
basepath = '/content/gdrive/'
article = NewsPlease.from_url(url)
with open(basepath + article['filename'] + '.json', 'w') as outfile:
json.dump(article, outfile, indent=4, sort_keys=True)
But I got this error:

TypeError                                 Traceback (most recent call last)
 in ()
11 article = NewsPlease.from_url(url)
12
---> 13 with open(basepath + article['filename'] + '.json', 'w') as outfile:
14     json.dump(article, outfile, indent=4, sort_keys=True)
TypeError: 'NewsArticle' object is not subscriptable

Hi @fhamborg ,
I googled the same error and reached here:
Traceback (most recent call last):
  File "/data/anaconda/envs/giga/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/data/anaconda/envs/giga/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/mnt/data/news-please/newsplease/examples/commoncrawl.py", line 169, in <module>
    main()
  File "/mnt/data/news-please/newsplease/examples/commoncrawl.py", line 165, in main
    continue_process=True)
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_crawler.py", line 297, in crawl_from_commoncrawl
    log_pathname_fully_extracted_warcs=__log_pathname_fully_extracted_warcs)
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_crawler.py", line 208, in __start_commoncrawl_extractor
    log_pathname_fully_extracted_warcs=__log_pathname_fully_extracted_warcs)
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_extractor.py", line 338, in extract_from_commoncrawl
    self.__run()
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_extractor.py", line 292, in __run
    self.__process_warc_gz_file(local_path_name)
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_extractor.py", line 237, in __process_warc_gz_file
    filter_pass, article = self.__filter_record(record)
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_extractor.py", line 121, in __filter_record
    publishing_date = self.__get_publishing_date(warc_record, article)
  File "/mnt/data/news-please/newsplease/crawler/commoncrawl_extractor.py", line 140, in __get_publishing_date
    if 'publish_date' in article:
TypeError: argument of type 'NewsArticle' is not iterable

I proposed a PR in https://github.com/fhamborg/news-please/pull/118


Hidden Player (Underground play)

Hello,
How can i make the native player hidden and just play underground.
I have forked this repo and made several changes to the java files but since i am not really a java guy it did not work.
Please i urgently need this as it is the only player i have been able to use to get my stream to play without delay on android
Thanks

@acefxlabs you're looking for sound to play while the app is minimized?

Resolved with 2.0


Constant crashes that require window reloading.

Issue Type: Bug
Multiple times every day I come back to VSCode to find it saying the window has stopped responding and needs to be reloaded or waited for. Waiting never works. This is VERY annoying.
VS Code version: Code - Insiders 1.29.0-insider (5438af145cf480ce0162bda0799435684b293ec5, 2018-11-07T01:01:54.305Z)
OS version: Windows_NT x64 10.0.17763

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz (8 x 2112)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: enabledvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
15.93GB (3.21GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (9)

Extension
Author (truncated)
Version

bracket-pair-colorizer
Coe
1.0.60

scala
dal
0.0.5

gitlens
eam
8.5.6

nbpreviewer
jit
1.0.0

python
ms-
2018.10.0

cpptools
ms-
0.20.1

csharp
ms-
1.17.0

PowerShell
ms-
1.9.0

code-settings-sync
Sha
3.2.0

@tot0 Please update to the latest insiders build (5f24c93878) where we have fixed one source of freezes and let us know if you still see this problem.


Let Managers add custom in-app messages to client users using dynamic keys

What would you like the app to enable you to do?
I want to show custom messages on client.
Example :
{
  "message": "Bandwidth Limit Exceeded"
}

OR
{
  "server": "outline-server.example.com",
  "server_port": 17178,
  "password": "5REfxTjltz2L",
  "method": "chacha20-ietf-poly1305"
  "message": "Your key is set to expire within the next 30 days"
}

OR
{
  "message": "Your key has expired"
}

{
"server": "outline-server.example.com",
"server_port": 17178,
"password": "5REfxTjltz2L",
"method": "chacha20-ietf-poly1305"
"message": "Your key is set to expire within the next 30 days"
}


Windows authentication with internal membership service failed

For details see http://stackoverflow.com/questions/43293352/bonobo-git-server-authentication-failed-why
I download and install Bonobo Git Server (<IP_ADDRESS>2). I add the App_Data folder permissions and I have IIS authentication settings as described in the installation notes - https://bonobogitserver.com/install/
I create the user (login: qqq, pass: qqq) and try to clone repository with this user.
But I see authentication failed error all time.
I look in the config and see, that there are turn on internal membership service - it is default behaviour of the bonobo git server. But it is not works. So this is the bug of the bonobo git server or bad documentation.

I'm also experiencing this behavior.
I initially attempted to upgrade from 3.4, and cloning failed. Thinking it was an issue with the upgrade, I then installed 6.0 in a fresh directory and just enabled Windows authentication (via web.config, not via IIS authentication). Cloning still failed no matter how I specified the username.
I went one step further and tried with a completely stock 6.0, with the default cookie authentication. I created a new repository and a new user, giving the new user access to the repository. The new user successfully logs in through the web interface, but fails to clone the repository with an uninformative 401.
This is currently running on Windows Server 2008, IIS 7.5.

This appears to have similarities to #567, which is somewhat old but unfortunately lacking a solution.

@brianhv Assuming you're using a normal sort of command line Git client, when you do:
git clone <git repo>, do you get asked for credentials?  Or does some credentials helper supply them without asking you?
If it's the latter, could you try disabling that (it's probably configured in your global .gitconfig file in your home directory) and see what happens?

I do get asked for credentials. I've tried providing the username as brianhv (as I do through the web), and as domain\brianhv (the way the user is displayed in the web interface). The result in both cases has been the terse fatal:  Authentication failed message as shown in @aPSopt's stackoverflow post.
At this point I've downgraded back to 3.4 and it's working for now. And it turns out that this time, 6.0 with cookie auth is working; it's only windows authentication mode that fails from the git client. (Which for me is a macOS command-line client.)
Here's an interesting data point. I created a test user while I was set to the Cookies authentication provider, and successfully cloned with it. Then I switched to the Windows authentication provider. Now I can log into the web interface (via a basic auth dialog) with my Windows account. However, the test user can still successfully clone even though it can't log into the web interface.
Is there some way the git request could be using a different authentication mode than the web interface?

@brianhv I'm afraid I've lost track of what does and doesn't work for you now.   Earlier you said a clean install of 6.0 didn't work at all using default settings, but now you're saying it does work, is that right?  What was the difference between the two situations?
The git client doesn't use the same auth code as the web interface (for example, Git doesn't use cookies), so it's entirely possible for their to be bugs in one bit and not the other (it seems pretty much a certainty that there's a problem with using Windows auth for Git actions).
I am not the one responsible for the preposterous combination of auth options in Bonobo (no one person is, to be fair), but unless you're willing to look into it yourself, then I'm quite possibly your only hope of getting it fixed at the moment, so you may need to be patient.
I would not recommend that you run 3.4 on a public facing website, if that's what you're currently doing.

It's totally fair to have lost track. It's been a confusing couple of days.
Yesterday, 6.0 never let me clone. Today it does, but only as a non-Windows user account. What changed between yesterday and today? Who knows. I did it again and it worked.
The server is not public-facing. I'd still rather upgrade, but I should be ok for now.
Here's the summary at the moment.
WIth Cookies authentication mode

.
Cookie user
Windows user

Can log into web
Yes
No

Can clone
Yes
No

WIth Windows authentication mode

.
Cookie user
Windows user

Can log into web
No
Yes

Can clone
Yes
No

If there's anything I can do to help diagnose further, I'd be happy to do what I can. I'm not sure how soon I'll have time for a full-on source dive, but I'll see what I can do.

@brianhv You have spurred me into sorting out the crapulous logging in Bonobo - this won't of itself fix your problem, but should help.
When there is a build with some more logging in (a sort of provisional 6.1), I will ask you to try that.

@aPSopt, @brianhv Would you mind trying the new version from here:
https://ci.appveyor.com/api/buildjobs/6rbxsli3pbpomljf/artifacts/bonobo-git-server-8005633-c48499cda83b14b8d58b80b5c84ee117b8a1d0be.zip
This has two main changes:

Lots of new logging into app_data/logs which might help us help you
A reversion of a change to the way Git URLs are authenticated with Windows auth.

With this build, the bad news is that my git client is still saying that authentication failed. The good news is that a lot of other things seem to be correct.
When Windows authentication is enabled and I try to clone with my Cookies account, it fails. This is different than in the released 6.0, and I believe the correct behavior.
When I attempt to clone with my Windows user with an incorrect password, I get a log message of

2017-04-11 17:22:50.844 -04:00 [Warning] GitAuthWin: Couldn't valudate user "brianhv" in domain "APPLICATIONS"

When I attempt to clone with my Windows user with a correct password, I get:

2017-04-11 17:22:56.625 -04:00 [Information] GitAuthWin: Validated user "brianhv" in domain "APPLICATIONS"

So it looks like the authentication is mostly working, but for some reason the success isn't getting passed through to the front end.
Thank you for looking into this so quickly!

@brianhv Thanks for testing.    The bit that I 'fixed' and annotated with the new logging stuff was the initial authentication which applies to all Git accesses, irrespective of anything to do with the repository.   So it looks likes it's approved you as a user, but then denied you access to the specific repo.
I'll annotate that next.
I have never been able to understand the use case for Windows Auth with internal membership - it's always seemed to me to make no sense, given that you have to manually maintain the internal membership database matching your domain, but clearly someone wanted it enough to code it up at some time, and people do seem to want to use it.
Out of interest, why are you running like this, and why don't you want to / can't you use AD membership?

I have a small number of users (fiveish) and pretty much all of our development tools use the same credentials. So the internal membership database maintenance is minimal, and just flipping a config file setting seemed like a really easy way use those credentials for this as well.
I did notice the recommendation to use the Active Directory Membership Service in the docs. The first thing that stopped me from pursuing it was the need to create Active Directory groups, something which I assumed I'd need to bug my administrator about, and he has enough to do without me bugging him about stuff that we're not yet using for our main projects.
Even if I had overcome that, there were several other options I needed to figure out, and the documentation struck me as terse. For example, it says, "Next, set the ActiveDirectoryMemberGroupName to the name of the members group you created earlier." I looked up to try to find the phrase "members group" and couldn't, and realized I'd need to fully read and not just scan to figure out what to do. It also looks like I'd need to deal with teams, which I'm not currently doing. If some of those things are optional, it's not indicated.
I'll fully admit to laziness here. It might be a matter of spending 5 minutes learning more about AD and reading the existing documentation carefully. But compared to the seemingly simple solution of changing Cookies to Windows, laziness won.
Is the documentation in source control somewhere? I might be able to take a shot at making that page more scannable if you'd find that valuable.

@brianhv Thanks for that - I hope we can make it work for you...  I have just pushed some more logging to that branch, so there'll be a new version to try shortly.
I agree the documentation isn't great, although I think do think brevity is a great quality in documentation!I think some of it was written by people for whom English is not their first language, so if you want to have a go at improving it then please do.  The minimum AD setup is actually very simple - create a group in AD into which you put everyone who uses Bonobo (that's the "Members Group") and create another group in AD into which you put those who need to be Bonobo Admins.  The team stuff is optional.
The documentation is in a different GH repo:  https://github.com/jakubgarfield/Bonobo-Git-Server-web - I can take a PR on that repo.
I very much appreciate you taking the time to test stuff and report back - it's incredibly useful as the current tiny puddle of developers don't have decent coverage of all the different configuration options, and that makes it very difficult to fix problems.

There's another new version at https://ci.appveyor.com/api/buildjobs/06h12cix3cl9lehm/artifacts/bonobo-git-server-8009128-465a33c9209d31938938658eead82c6a68ea21f5.zip
I suspect the changes I made earlier today to the auth were probably wrong, and I will need to revert them and then try and work through the original route with you - when using Windows Auth with Internal membership, I don't think you should have distinct 'Windows' and 'Cookies' users - you should be ensuring that for every Windows user who needs to log in there is a matching internal user (that's a user in the internal membership database, not really a 'cookie' user).

When a user first logs in to Bonobo with Windows credentials, Bonobo automatically creates a user of the form APPLICATIONS/brianhv. That's the user to which I've been giving repository access, and that's what was working in 3.4. I do not have a separate brianhv user. In addition, when my AuthenticationProvider is Windows, there's no option in the UI to create a new user.
I'll try that build now.

These log messages look interesting.

2017-04-11 20:12:38.601 -04:00 [Information] GitAuthWin: Validated user "brianhv" in domain "APPLICATIONS"
2017-04-11 20:12:38.658 -04:00 [Warning] GitC: SecureGetInfoRefs unauth because User 00000000-0000-0000-0000-000000000000 doesn't have permission Pull on  repo "asdf"

@brianhv There's another new version at https://ci.appveyor.com/api/buildjobs/hgnqi0lp9fny8k4v/artifacts/bonobo-git-server-8022989-e0a7c9d038a9e99674a161c3caa195f610d41f99.zip
This has gone back to the 6.0 behaviour (so may be 'worse' in some respects, but I should never have moved away from this before getting to the bottom of what's happening) but adds a load more logging.
It would be great if you could try this one, thanks.

2017-04-12 11:49:21.553 -04:00 [Information] GitAuth: No auth header, anon operations not allowed
2017-04-12 11:49:21.606 -04:00 [Information] GitAuth: Trying to auth user "APPLICATIONS\brianhv"
2017-04-12 11:49:21.606 -04:00 [Information] GitAuth: Going to membership service for user "APPLICATIONS\brianhv"
2017-04-12 11:49:21.606 -04:00 [Verbose] EF: Validating user "APPLICATIONS\brianhv"
2017-04-12 11:49:21.611 -04:00 [Verbose] EF: User "applications\brianhv" validation result Failure
2017-04-12 11:49:21.611 -04:00 [Warning] GitAuth: Membership service failed auth for "APPLICATIONS\brianhv"
2017-04-12 11:49:21.611 -04:00 [Warning] GitAuth: User "APPLICATIONS\brianhv" not authorised

@brianhv Thanks - what happens if you go to a web page?  It should try to create that user.

Yes, the user exists and is able to log into the web interface.

@brianhv Is the user in the EF database (i.e. visible in the web interface) called "brianhv" or "APPLICATIONS\brianhv"?

APPLICATIONS\brianhv

Is it definitely "APPLICATIONS\brianhv" and not "applications\brianhv"?

Apologies, it is indeed lowercase.

Got a little debugging session going myself here. The program flow is getting into GitAuthorizeAttribute.ValidateUser(username, password) with correct information. That method successfully grabs the user object from the database. However, ComparePassword returns false because GetSaltedHash(password, salt) == hash is false.

@brianhv Yes, spot-on.   If you look at the history of GitAuthorizeAttribute.cs you'll see that code to authorise Windows users directly (without going to the membership provider) has been put in and taken out about three times.
I put it back in yesterday, and then took it out again today, but clearly the EF membership provider cannot authorise the user, because it doesn't have the password.
What needs to happen is somewhere between the two we've have in the last two days - for WinAuth with EF membership, the auth needs some special handling, but for WinAuth with AD then the membership provider CAN do the auth.
For consistency, I think it's better that the membership provider does always do the auth, but when we're using Windows Auth with EF membership, then the EF membership provider needs to do this correctly, not by uselessly peering at its own hashed passwords.
I will have something else to try shortly.

@brianhv The incredible yo-yoing auth code is back in GitAuthAttr - if you watch #671 you can wait for the AppVeyor build to finish and then take the binary artifact, or pull that branch directly if you're in source code mode and you don't want to wait for AppVeyor
I think the missing link might have been that the WinAuth code I added yesterday wasn't building the claims ID properly, which is why your log showed we had no user ID further in.

Thanks! I'll keep an eye on it.
I see why this is a challenge. I'm going to muse on this for a moment, and you're welcome to ignore me.
My goal isn't to use the internal membership provider as such. My goal is to authenticate with Windows credentials, and to control access with the internal system.
There are a few different concerns that need to be handled:

How do we expect authentication to be provided? (Cookies? HTTP Basic?)
How do we check authentication? (AD? Local database?)
How do we check what a user is authorized to do? (AD? Local database?)

It appears as though AuthenticationProviders have their hands in all three while MembershipProviders deal with the latter two.
In my perfect world, I'd be able to use a CookieCredentialProvider, a WindowsAuthenticationProvider, and a BonoboAuthorizationProvider. That's way beyond the scope of this ticket, of course, and there may be obstacles that I'm not seeing yet to teasing these classes apart. I wish I had more time to play around with a design like that.

Hey all, sorry for not responding before now, but been busy with other stuff :-)
Indeed it seems that I haven't tested this scenario properly.
Out of curiosity when should we use the authentication classes and should these be used instead ie. move the validateUser and perhaps refrase it to authenticateUser?
When the user is authenticated, we can then use the membership provider to get info about what repositories etc is available to the user?
We do use the authentication class to get the user claims(at least in some cases) ?

@brianhv It is very complicated and it has evolved in an odd way - "I wouldn't start here" definitely applies.
There isn't a clear separation between authorisation and authentication (Bonobo is not unique in this regard!) - and as you say, 'membership' spans both.   What's particularly confusing (and unhelpful to my mind) is that when you enable AD membership, you get an entirely different backend, which is a home-brew json-based database which has historically been very unreliable.
Like most ASP.Net projects of a certain age (I have a substantial one at work), it's suffered/benefited from a piece-wise/partial migration to OWIN, which doesn't help the clarity of things.
A few of use made a big effort early last year to try and improve the code quality and testing coverage, which has certainly reduced the inconsistency between some of the different auth mechanisms, but the impracticality of any automated test against AD (shame on you MS) has really made it hard to get it right.

I installed the new AppVeyor build, and cloned successfully with a Windows user!
Your "I wouldn't start here" advice and explanation make sense. Thanks for humoring my musing!

@brianhv Thanks very much for testing that.
I am tempted to push a 6.1 release, both to get this fix and to get the logging which has been very helpful.
What do you think @larshg?

Sure - its better that it works, even though it could use a proper overhaul - but that will properly not happen sometime soon :-P

Hmm, as I understand something fixed?
But I installed the bonobo 6.1 release and the authentication with internal membership service still failed. The trouble described in the initial post not changed.

Please post the printouts from the log file for us to have something to work with.
Are you using windows authentication with internal membership?

Where logs placed? I found following:

App_Data\Bonobo.Git.Server.Errors.log

Native library pre-loader is trying to load native SQLite library "C:\inetpub\wwwroot\Bonobo.Git.Server\bin\x64\SQLite.Interop.dll"...

App_Data\Logs\log-20170413.txt

2017-04-13 16:31:12.973 +03:00 [Information] Bonobo starting
2017-04-13 16:36:22.375 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:36:35.024 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:37:49.934 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:37:53.122 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:38:43.309 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:38:47.656 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:52:10.114 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed
2017-04-13 16:52:22.180 +03:00 [Warning] GitAuth: No auth header, anon operations not allowed

Are you using a credential helper? If you do can you try disable it temporarily? Are you using got bash or another client?

I am using tortoisegit. How to disable it credential helper?

@aPSopt The fix in 6.1 is for people using "Windows Authentication" with "internal membership".  This is not the default configuration, so if you have not change web.config, then you won't be using "Windows Authentication".
"Windows Authentication" is not the same thing as "I am trying to use Bononbo with a Windows client"

Are you presented for a username/password dialogue?
Can you try clone using got bash?

@willdean it is defaul configuration as I see. I following by the installation manual and finally in the default 6.1 web.config turned on following options:

And I note that it not works now.
larshg yes, the same trouble present on cmd usage too. But I find how to disable tortoisegit credential helper and bug disappears.
Ok, its good.
But how to work with default configuration on the tortoisegit? (with credential helper)

Try update to newest credential helper?

larshg thx, now it works

Great to hear :-)

Thanks @larshg !


device: support specifying active slot

For different reasons it might be desirable to keep slot 'b' as an active slot. Add support for specifying the active slot in the config file. The default is still slot 'a'.

a-b


[Refactor] make function fill_metacache return void

Problem Summary:
Fixes # (issue)
What type of PR is this:

[ ] BugFix
[ ] Feature
[ ] Enhancement
[x] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[ ] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

@Mergifyio rebase main

@mergifyio rebase

need rebase the code to latest head in order to compile.

@Mergifyio rebase


if checked 1 item in dropdown i want to show item text but if more then one item is selected i want to display the itemcount

if checked 1 item in dropdown I want to show item text but if more than one item is selected I want to display the item count, let me know if its possible, as I am either able to show the item count or itemText, not both.
Anyways, Thanks for the awesome plugin.

@dotansimha do let me know if the above problem can be solved ?

I would also appreciate this.
For 0 selected I can just change the defaultValue, for 1 selected I can use smartButtonTextConverter if model ==1 to only show the name of the selected item. If model > 1 I can say how many are selected, the only downside however is it always end with ',...' so it'll look like "2 Items selected,...".
The plugin would be perfect for me if I could just remove the ,... .

@frankdrxn , can you show me how you did that , as i have created a directive for it and am using at multiple places, but my smartButtonMaxItems isnt getting updated.
$scope.$watch('selectedModel', function (val) {
if (val.length === 1) {
$scope.dropdownSettings.smartButtonMaxItems = 1;
            }
             else {
                $scope.dropdownSettings.smartButtonMaxItems = 0;
            }
        }, true);

Sure, here is some example code:
`$scope.groupMembers = [
{group:"Louffee", name: "FrankDrxn1", photo: "", id: "1"},
{group:"Louffee", name: "FrankDrxn2", photo: "", id: "2"},
{group:"Louffee", name: "FrankDrxn3", photo: "", id: "3"},
{group:"Louffee", name: "FrankDrxn4", photo: "", id: "4"},
{group:"AH", name: "Frank1", photo: "", id: "5"},
{group:"AH", name: "Frank2", photo: "", id: "6"},
{group:"AH", name: "Frank3", photo: "", id: "7"},
{group:"AH", name: "Frank4", photo: "", id: "8"}
]
$scope.selectedGroupMembers = [];
$scope.memberDropdownSettings = {
displayProp: 'name',
groupBy: 'group',
enableSearch: true,
scrollable: true,
keyboardControls: true,
smartButtonMaxItems: 1,
smartButtonTextConverter: function(){
if($scope.selectedGroupMembers.length == 1){
return $scope.selectedGroupMembers[0].name + " Selected";
}else{
return $scope.selectedGroupMembers.length + " Members Selected";
}
}
}
$scope.memberDropdownTranslationText = {
buttonDefaultText: 'Select Member(s)',
searchPlaceholder: 'Filter'
}

`
If I have nothing selected the button will say "Select Member(s)", if I have one selected (lets say Frank1)  it'll say "Frank1 Selected" if you have more then one selected it (lets say 3) it'll say "3 Members Selected,...".
Now if only there was a way to get rid of the ",..." when multiple are selected.

I'm going to add a function similar to the smartButtonTextConverter that instead of getting called with each option gets called with all selected options and that expects to get returned a string that will then be displayed, that way you have full control.

From version 2.0.0-beta.10 the above has been added, please let me know if I can do more

Group by issue in version 1.11.8
$scope.selectByGroupData = [
{ id: 1, label: "David", gender: 'M' },
{ id: 2, label: "Jhon", gender: 'M' },
{ id: 3, label: "Lisa", gender: 'F' },
{ id: 4, label: "Nicole", gender: 'F' },
{ id: 5, label: "Danny", gender: 'M' },
{ id: 6, label: "Unknown", gender: 'O' } ];
$scope.selectByGroupSettings = {
groupby: 'gender',
};
HTML:

Above code group by not working or if I'm missing something not sure
Please help asap
Thanks in advance..!!

Nope, it's not working,
Cannot read property 'length' of undefined.
my code is something like this:
$scope.filterByTimeOptions = [{
id: 1,
label: 'Today',
selectable: false
},
{
id: 2,
label: 'This week',
selectable: false
},
{
id: 3,
label: 'Last Week',
selectable: false
},
{
id: 4,
label: 'This Month',
selectable: false
},
{
id: 5,
label: 'Last Month',
selectable: false
}
],
$scope.filterByTimeSettings = {
scrollableHeight: '200px',
scrollable: true,
        smartButtonMaxItems: 2,
        smartButtonTextConverter: function() {
            if ($scope.selectedFilterByTimeOptions.length == 1) {
                return $scope.selectedFilterByTimeOptions[0].name;
            } else {
                return $scope.selectedFilterByTimeOptions.length + " Selected";
            }
        }
    };

Did you define and initialize $scope.selectedFilterByTimeOptions?

no am not define and initialize $scope.selectedFilterByTimeOptions. my controller code is this uch only

@pankajBsharp perhaps define and initialize it and see if it works. My code above worked for me and two others. I also saw that there was an update so perhaps functionality has changed. Good luck with your problem.

i defined and initialize $scope.selectedFilterByTimeOptions. my controller code is this much only, I define it.
$scope.filterByTimeModel = [];
$scope.filterByTimeOptions = [{
id: 1,
label: 'Today',
selectable: false
},
{
id: 2,
label: 'This week',
selectable: false
},
{
id: 3,
label: 'Last Week',
selectable: false
},
{
id: 4,
label: 'This Month',
selectable: false
},
{
id: 5,
label: 'Last Month',
selectable: false
}
],
$scope.selectedFilterByTimeOptions = [];
$scope.filterByTimeSettings = {
scrollableHeight: '200px',
scrollable: true,
keyboardControls: true,
smartButtonMaxItems: 1,
smartButtonTextConverter: function() {
if ($scope.selectedFilterByTimeOptions.length == 1) {
return $scope.selectedFilterByTimeOptions[0];
} else {
return $scope.selectedFilterByTimeOptions.length + " Selected";
}
}
// enableSearch: true,

};
now its showing 0 Selected, 0 Selected....

@pankajBsharp How is the HTML? Did you give the attribute selected-model the value selectedFilterByTimeOptions? It seems not to store the selected items.

Yes,

<div ng-dropdown-multiselect="" options="filterByTimeOptions" ng-model="test" selected-model="filterByTimeModel" checkboxes="true" extra-settings="filterByTimeSettings" translation-texts="filterByTimeSettingsTexts">                                                 </div>

@pankajBsharp It seems to me like your using filterByTimeModel not selectedFilterByTimeOptions as the value for selected-model.


Terraform plugin and Logical IDs allocation

Fixes #391

correctly set the LogicalID tag
fixes the terraformLogicalID function

Tests are passing successfully.

Codecov Report

Merging #392 into master will increase coverage by <.01%.

@@            Coverage Diff            @@
##           master    #392      +/-   ##
=========================================
+ Coverage   62.49%   62.5%   +<.01%
=========================================
  Files          56      56
  Lines        3133    3136       +3
=========================================
+ Hits         1958    1960       +2
- Misses        946     947       +1
  Partials      229     229

Impacted Files
Coverage Δ

examples/instance/terraform/plugin.go
51.16% <80%> (+0.49%)
:white_check_mark:

pkg/manager/manager.go
63.03% <ø> (-0.61%)
:x:

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 b919e4f...388e9ae. Read the comment docs.


SURVIVOR convertAssemblytics problem

Hi Fritz,
I am interested in a tandem duplication event on one of the chromosome. We already know that one of the sample contains 4 extra copies. When I use assemblytics to call it. It identifies as tandem_expansion with 4 extra copies.
3	12363708	12379593	Assemblytics_b_1315	15883	+	Tandem_expansion	-15885	-2	ourAssembly_Contig_20:15168814-15168816:-	between_alignments
3	12363708	12379593	Assemblytics_b_1315	15883	+	Tandem_expansion	-15885	-2	ourAssembly_Contig_20:15168814-15168816:-	between_alignments
3	12363708	12379593	Assemblytics_b_1317	15883	+	Tandem_expansion	-15885	-2	ourAssembly_Contig_20:15168814-15168816:-	between_alignments
3	12363708	12379593	Assemblytics_b_1318	15883	+	Tandem_expansion	-15885	-2	ourAssembly_Contig_20:15168814-15168816:-	between_alignments
So far so good. Length is correct with 15885.
But when I use  SURVIVOR convertAssemblytics to creates this insertions with size 31768.
3	12363708	Assemblytics_b_1315	N		.	LowQual	IMPRECISE;SVTYPE=INS;SVMETHOD=Assemblytics;CHR2=1;END=12379593;SVLEN=31768;PE=1	GT	1/1
3	12363708	Assemblytics_b_1316	N		.	LowQual	IMPRECISE;SVTYPE=INS;SVMETHOD=Assemblytics;CHR2=1;END=12379593;SVLEN=31768;PE=1	GT	1/1
3	12363708	Assemblytics_b_1317	N		.	LowQual	IMPRECISE;SVTYPE=INS;SVMETHOD=Assemblytics;CHR2=1;END=12379593;SVLEN=31768;PE=1	GT	1/1
3	12363708	Assemblytics_b_1318	N		.	LowQual	IMPRECISE;SVTYPE=INS;SVMETHOD=Assemblytics;CHR2=1;END=12379593;SVLEN=31768;PE=1	GT	1/1
So it basically creates 4  Insertions with a doubled size. I would be fine if it was showing 4 insertions with the length of 15883 instead of 31768 (doubled). Or as a duplication event.
Could you please kindly tell me if there is a way to do this or is this just the way that survivor works.
Best,
Mehmet

Dear Mehmet,
thanks for pointing this out. I indeed found (I think) the cause of this problem. I have pushed the correction to github. Would you mind testing it out and see if that solves it?
Thanks
Fritz

Hi Fritz,
I have tested it and it works now.
Thanks,
Mehmet

thanks for letting me know.
Fritz


Mic Recording Errors

I have been beating my head against this thing for the past few hours, I have had a lot of issues, mostly with installing requirements. I had to install all of the following manually: ffmpeg, python3-scipy, python3-pydub, and python3-yaml, python3-pyaudio.
However I am now so close to getting it to work. Hook is working, as is the speaker, however mic recording is not working. After the beep finishes playing, I get the following errors. (There were a lot of PCM errors too, but I fixed those by commenting out devices in alsa.config)
Phone off hook, ready to begin!
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Playing voicemail message...
Playing beep...
recording
Expression 'parameters->channelCount <= maxChans' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1514
Expression 'ValidateParameters( inputParameters, hostApi, StreamDirection_In )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2818
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 223, in _call_when_changed
    super(RPiGPIOPin, self)._call_when_changed()
  File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 128, in _call_when_changed
    super(LocalPiPin, self)._call_when_changed(
  File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 298, in _call_when_changed
    method(ticks, state)
  File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 182, in _pin_changed
    self._fire_events(ticks, bool(self._state_to_value(state)))
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 405, in _fire_events
    self._fire_deactivated()
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 452, in _fire_deactivated
    super(HoldMixin, self)._fire_deactivated()
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 369, in _fire_deactivated
    self.when_deactivated()
  File "/home/pi/rotaryGuestbook/audioGuestBook.py", line 51, in off_hook
    audio_interface.record()
  File "/home/pi/rotaryGuestbook/audioInterface.py", line 26, in record
    self.stream = self.audio.open(
  File "/usr/lib/python3/dist-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9998] Invalid number of channels
Phone on hook.
Sleeping...
^CTraceback (most recent call last):
  File "/home/pi/rotaryGuestbook/audioGuestBook.py", line 73, in <module>
    main()
  File "/home/pi/rotaryGuestbook/audioGuestBook.py", line 69, in main
    pause()
KeyboardInterrupt

I have tried installing Jack manually, but that has not made any difference.
Do you have any suggestions?

Hi @amcco1,
I don't believe any other dependencies should be required outside of those that are in the requirements.txt, were you not able to just pip install -r requirements.txt from the repo root directory?
As far as the other errors go, please walk me through your set up so I can get on the same page.

What HW are you using? An rpi zero?
What audio interface?
Were you starting from a fresh raspbian os base or something else?

Regarding the issues:

Everything in this project utilizes ALSA directly so Jack is unnecessary

Ensure that ALSA is configured correctly and not routing through JACK. You can check your ALSA configuration files or use tools like alsamixer to inspect your setup.
If you have JACK installed and you're sure you don't need it, consider either uninstalling it or ensuring it's not started automatically. This might help avoid any unintentional interactions.

Regarding: Expression 'parameters->channelCount <= maxChans' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1514
Does you microphone record in stereo? If not, you might setting the channels to one in the config.yaml.

GPIO errors: make sure you have the right pins numbers associated properly, refer to the diagram

Hopefully that's enough to get to unblocked for now.

So I have gotten very close to getting it to work, but still not quite. The problem at the moment is that it still will not record, but in this case it is just skipping the record. It plays the voicemail, beep, terminal says recording, then instantly says finished recording, there is no time at all to actually record a message. I will add a video to show what I mean.

I am using a Pi 3B+ for testing, though I do plan to just move the SD card to a Pi Zero later.
Using this audio interface from Adafruit.
Started from a fresh install of Raspbian Lite.

Just to make sure I didn't do something wrong, I just swapped the SD card and went through the setup again. Here's the steps I went through.

Installed Rasbian Lite.
Updated and upgraded apt
Rebooted
Installed git
Git cloned your repo
Installed pip
Installed requirements using pip
Modified config.yaml, changed hook gpio to pin 17 which is what I'm using, changed audio channels to 1.
Set the default audio device in /etc/asound.conf
Transferred my voicemail.wav file over.
Tried to run the .py script, and it fails. Here is error.

Traceback (most recent call last):
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 3, in <module>
    import audioInterface
  File "/home/pi/rotary-phone-audio-guestbook/audioInterface.py", line 3, in <module>
    import pyaudio
ModuleNotFoundError: No module named 'pyaudio'

So then I went through the process of installing the requirements manually.
sudo apt install python3-pyaudio python3-gpiozero python3-pydub python3-yaml -y

Now the python script will run, the hook works, the speaker works, but the recording does not work. Same result as before.
Here is the full error output.
pi@piphone:~/rotary-phone-audio-guestbook $ sudo python audioGuestBook.py
Phone off hook, ready to begin!
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.USB-Audio.pcm.hdmi.0:CARD=1,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM hdmi
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.USB-Audio.pcm.hdmi.0:CARD=1,AES0=4,AES1=130,AES2=0,AES3=2'
ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM hdmi
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Playing voicemail message...
Playing beep...
recording
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 223, in _call_when_changed
    super(RPiGPIOPin, self)._call_when_changed()
  File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 128, in _call_when_changed
    super(LocalPiPin, self)._call_when_changed(
  File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 298, in _call_when_changed
    method(ticks, state)
  File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 182, in _pin_changed
    self._fire_events(ticks, bool(self._state_to_value(state)))
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 405, in _fire_events
    self._fire_deactivated()
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 452, in _fire_deactivated
    super(HoldMixin, self)._fire_deactivated()
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 369, in _fire_deactivated
    self.when_deactivated()
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 58, in off_hook
    audio_interface.close(output_file + ".wav")
  File "/home/pi/rotary-phone-audio-guestbook/audioInterface.py", line 72, in close
    with wave.open(output_file, "wb") as wavefile:
  File "/usr/lib/python3.9/wave.py", line 511, in open
    return Wave_write(f)
  File "/usr/lib/python3.9/wave.py", line 304, in __init__
    f = builtins.open(f, 'wb')
FileNotFoundError: [Errno 2] No such file or directory: '/home/pi/rotary-phone-audio-guestbook/recordings/2023-09-28T12:51:30.612347.wav'
Phone on hook.
Sleeping...
^CException ignored in: <function Wave_write.__del__ at 0x76675808>
Traceback (most recent call last):
  File "/usr/lib/python3.9/wave.py", line 326, in __del__
    self.close()
  File "/usr/lib/python3.9/wave.py", line 443, in close
    if self._file:
AttributeError: 'Wave_write' object has no attribute '_file'
Traceback (most recent call last):
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 73, in <module>
    main()
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 69, in main
    pause()
KeyboardInterrupt

I can fix the ALSA errors at the beginning by modifying the config in /usr/share/alsa/alsa.conf and commenting out the various pcm devices that are throwing the errors. I can also fix missing directory error by creating the recordings folder.
Then I run the code again and I get the following:
pi@piphone:~/rotary-phone-audio-guestbook $ sudo python audioGuestBook.py
Phone on hook.
Sleeping...
Phone off hook, ready to begin!
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Playing voicemail message...
Playing beep...
recording
Finished recording!
Phone on hook.
Sleeping...
^CTraceback (most recent call last):
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 73, in <module>
    main()
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 69, in main
    pause()
KeyboardInterrupt

Here is a video showing it.
I am still seeing the Jack errors, not sure why, but the recording is still not working..
I have tested the mic using this:
arecord -f S16_LE -d 10 -r 44100 --device="hw:1,0" test-mic.wav

The mic works, I can playback the test recording using aplay with no issues.

Hmm, can you run:
chmod +x audioGuestBook.py
chmod +x audioInterface.py
And try again without sudo?
If that doesn't work maybe pyaudio's latest version is defaulting to JACK, you can try to debug a little further from this post:
https://stackoverflow.com/questions/36894315/how-to-select-a-specific-input-device-with-pyaudio
I apologize for the limited assistance as I'm traveling right now (without a laptop 😆), but please keep me posted!

I'm stumped and don't know what else to try. chmod doesn't seem to make any difference.
I have the alsa_hw_mapping in config.yaml set to 1
Here is the ouput of aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I even tried changing hw mapping to 0 or 2, neither of them worked either.

Can you:

save a copy of your config.yaml
git pull
git checkout develop
paste back your config.yaml
chmod +x installer.sh
./installer.sh

And let me know if you have better luck with these new modifications I pushed?

The installer fails when I run it, fails on the .service part of it.
pi@piphone:~/rotary-phone-audio-guestbook $ ./installer.sh
Installing dependencies...
Hit:1 http://raspbian.raspberrypi.org/raspbian bullseye InRelease
Hit:2 http://archive.raspberrypi.org/debian bullseye InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-gpiozero is already the newest version (1.6.2-1).
python3-pip is already the newest version (20.3.4-4+rpt1+deb11u1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pydub in /home/pi/.local/lib/python3.9/site-packages (0.25.1)
Requirement already satisfied: pyaudio in /home/pi/.local/lib/python3.9/site-packages (0.2.12)
Requirement already satisfied: PyYAML in /home/pi/.local/lib/python3.9/site-packages (6.0)
sed: can't read audioGuestBook.service.template: No such file or directory
Failed to enable unit: Unit file /etc/systemd/system/audioGuestBook.service is masked.
Failed to start audioGuestBook.service: Unit audioGuestBook.service is masked.

I tried doing systemctl unmask audioGuestBook.service but it made no difference.
I tried to run audioGuestbBook.py manually and it never started recording, throwing various errors.
pi@piphone:~/rotary-phone-audio-guestbook $ sudo python audioGuestBook.py
INFO:__main__:Phone on hook.
Sleeping...
INFO:__main__:Phone off hook, ready to begin!
INFO:__main__:Playing voicemail message...
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
INFO:__main__:Playing beep...
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
INFO:__main__:recording
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Traceback (most recent call last):
  File "/home/pi/rotary-phone-audio-guestbook/audioInterface.py", line 100, in close
    wavefile.writeframes(b"".join(self.frames))
  File "/usr/lib/python3.9/wave.py", line 437, in writeframes
    self.writeframesraw(data)
  File "/usr/lib/python3.9/wave.py", line 426, in writeframesraw
    self._ensure_header_written(len(data))
  File "/usr/lib/python3.9/wave.py", line 467, in _ensure_header_written
    self._write_header(datasize)
  File "/usr/lib/python3.9/wave.py", line 471, in _write_header
    self._file.write(b'RIFF')
AttributeError: 'PosixPath' object has no attribute 'write'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 223, in _call_when_changed
    super(RPiGPIOPin, self)._call_when_changed()
  File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 128, in _call_when_changed
    super(LocalPiPin, self)._call_when_changed(
  File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 298, in _call_when_changed
    method(ticks, state)
  File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 182, in _pin_changed
    self._fire_events(ticks, bool(self._state_to_value(state)))
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 405, in _fire_events
    self._fire_deactivated()
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 452, in _fire_deactivated
    super(HoldMixin, self)._fire_deactivated()
  File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 369, in _fire_deactivated
    self.when_deactivated()
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 85, in <lambda>
    hook.when_released = lambda: off_hook(args)
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 72, in off_hook
    audio_interface.close(output_file)
  File "/home/pi/rotary-phone-audio-guestbook/audioInterface.py", line 100, in close
    wavefile.writeframes(b"".join(self.frames))
  File "/usr/lib/python3.9/wave.py", line 332, in __exit__
    self.close()
  File "/usr/lib/python3.9/wave.py", line 444, in close
    self._ensure_header_written(0)
  File "/usr/lib/python3.9/wave.py", line 467, in _ensure_header_written
    self._write_header(datasize)
  File "/usr/lib/python3.9/wave.py", line 471, in _write_header
    self._file.write(b'RIFF')
AttributeError: 'PosixPath' object has no attribute 'write'
INFO:__main__:Phone on hook.
Sleeping...
^CTraceback (most recent call last):
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 90, in <module>
    main()
  File "/home/pi/rotary-phone-audio-guestbook/audioGuestBook.py", line 86, in main
    pause()
KeyboardInterrupt

Thank you for your effort on this btw, I appreciate it.

Hey @amcco1
Thanks for testing that out. I unfortunately took my rotary phone apart after the wedding, so I can't even validate what I'm coding right now on the actual platform. However, I do know why you were getting these errors and they should be addressed in the commits I just pushed. Can you try again?

Do you have a "voicemail.wav"  in the sounds directory?  If not, make sure you have that present.

Yes I do. It plays the voicemail and beep with no issues. The only issue is recording.

Hey @amcco1 what's your hook hardware setup? Can you share a picture? I'm wondering if it's immediately toggling from off-hook/on-hook. Could be indicative of wrong wiring.
Also, let me know if this helps:
sudo apt install portaudio19-dev
And lastly, I don't think the Jack warnings are too big of an issue, I do remember seeing similar output on mine.

Installing portaudio made no difference.
The hook configuration could be it.... mine is opposite of your, it is closed when on the hook, and open when the phone is off the hook. I have inverted your code at the end of audioGuestBook.py thinking that would be enough, but maybe there is something else that needs changed?
    hook.when_pressed = on_hook
    hook.when_released = lambda: off_hook(args)
    pause()

The picture won't tell you much, as it's impossible to see the terminals for the hook since they're on the bottom and it is riveted to the bottom of the frame. I'm using GPIO 17 on pin 11 and ground on pin 6.

Ahh, it could be the lambda you added.  The GpioZero docs mention the proper way to call a function with their Button object:

I did not add the lambda, you already have it in the develop branch. All I did was just switch hook.when_pressed and hook.when_released.

Oh right, my bad. I'll look into this a bit more later and get back to you.

Hey @amcco1, just pushed some code changes - removed the reliance on lambda, you should be able to swap these no problem:
    hook.when_pressed = off_hook
    hook.when_released = on_hook

Let me know how it goes!

Well you changes did make a bit of a difference! There are no Jack errors now.
However, it still doesn't stop to record, it skips straight to "Finished recording"
INFO:__main__:Phone off hook, ready to begin!
INFO:__main__:Playing voicemail message...
INFO:__main__:Playing beep...
INFO:__main__:recording
INFO:__main__:Finished recording!
INFO:__main__:Phone on hook.
Sleeping...

Okay so I think I understand what's going on. Since your hook type is Normally Closed (NC),  you'd want to pull the GPIO pin up, making the default state HIGH, so when the button is pressed (i.e., the hook is down), it goes LOW. I adjusted the logic and README to account for either type - with it set up for NC by default. You should be good to go once you pull my latest and just run it (without having to change anything).

Awesome!! Super glad it worked out for you and I really appreciate you taking the time to debug this with me! Thanks to your help this project has become much more stable and versatile. Wish you all the best and hope your friend has a great wedding!
P.S. This is my "buy me a coffee link": https://www.buymeacoffee.com/dillpicholas

Closing this issue out as fixed ✅


Use ES6 Import

As mentioned in https://github.com/brianzinn/react-babylonjs/issues/110 .

thanks rubas really appreciate you making this PR - Will put out an NPM after updating rollup.

thanks rubas really appreciate you making this PR - Will put out an NPM after updating rollup.

hi @rubas I have made some additional changes for rollup - the imports changed to ie: @babylonjs/core/scene and were not being resolved as external, so the package was 1.5 MB (instead of 47kB!) and I was seeing duplicates in the treemap as well.  You can try with yarn add<EMAIL_ADDRESS> In a CRA project what I noticed was no difference on the build size - are you able to verify against the beta version that I published?  I see the client.html treemap is 7.94MB (stat) --> 3.44MB (parsed) --> 803kB (gzip) according to the analyzer, but I'm getting that with new and original versions (I didn't read up on next-transpile-modules).  I'm hoping to get everything sorted out here before trying to fix react-babylonjs.  I'm trying to find the 2MB difference that you reported on the react-babylonis issue, so hoping you can show me where that is.  Thanks for your help 😃

hi @rubas I have made some additional changes for rollup - the imports changed to ie: @babylonjs/core/scene and were not being resolved as external, so the package was 1.5 MB (instead of 47kB!) and I was seeing duplicates in the treemap as well.  You can try with yarn add<EMAIL_ADDRESS> In a CRA project what I noticed was no difference on the build size - are you able to verify against the beta version that I published?  I see the client.html treemap is 7.94MB (stat) --> 3.44MB (parsed) --> 803kB (gzip) according to the analyzer, but I'm getting that with new and original versions (I didn't read up on next-transpile-modules).  I'm hoping to get everything sorted out here before trying to fix react-babylonjs.  I'm trying to find the 2MB difference that you reported on the react-babylonis issue, so hoping you can show me where that is.  Thanks for your help 😃


September 2022 milestones

[x] look into missing pathway genes for creative
[ ] fix genetics kp provenance to be from itrb server used (and version)
[ ] add query_id to creative response
[ ] test data: https://github.com/broadinstitute/genetics-kp-dev/blob/master/TestData
[ ] https://github.com/TranslatorSRI/SRI_testing/blob/main/tests/onehop/README.md
[ ] add better docker debug docs in Deploy directory

Missing genes could be sub genes which we don't cover; fine to do magma with just what we have


Added missing links

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


fix(oauth2): only enable via GOOGLE_CLOUD_CPP_ENABLE

Enabling oauth2 if GOOGLE_CLOUD_CPPP_ENABLE_REST is set is a bug: it introduces a cycle in the dependencies of the library, and makes it impossible to compile oauth2, storage, and compute in different shards.

This change is

makes it impossible to compile oauth2, storage, and compute in different shards.

Ah. Ok, I see the motivation now. I am OK calling this a bug.


Update MD AV Signature and Platform Version.md

Added product version update.

@tali-ash , @mjmelone Would you please review?


crossbeam_epoch::Atomic::into_owned

Hello
I'm wondering why the Atomic doesn't have an unsafe fn into_owned(self) -> Owned<T> method. I'd find it handy in a data structure destructor, when I'm sure that no concurrent accesses are being made to the structure any more, as it's in the destructor which is &mut self.
Now, I can do a load on the atomic with epoch::unprotected and convert that shared. But is there a particular reason why the above method doesn't exist? If not, is it OK if I send a PR?

There is no particular reason why it doesn't exist - a PR would be welcome!


Adding ARM Templates for Infra

Pull request ready for review. This is for issue #110

[ ] naming convention to be reviewed/confirmed. Hardcoded the as-is resource names for now.

Still learning github pull-request etiquette as I go along :smile:

I'm late to the game but maybe more ideal to shove everything in one template as we'll deploy it all at once, no?


Improvement of underlying types constraint, with inheritance

First off, I apologise for my commits, I started this in experience mode, and they are horribly messy.
Point of this PR is to completely change the underlying types constraints, to ease their extensions.
Introduction of Abstract types, with a clear interface that needs to be defined for a new type to work.
Basically we now offer 4 kind of constraints
mustUse: aTrait.
satisfy: aBlock.
understands anInterface
type: aType.
Each of them will create an appropriate reified type, that needs to respect the interface in AbstractType.
Types can be contains other types through #of: for collections. I use associations too, which I declare using #keyType:valueType:. This part is not documented so well IMO, we'll see if that's necessary to add.
Refactored interfaces in a new way, probably need more work.
I left checkObjectType: anObject on classes, which induce code duplication with types. one should point to the other.
I didn't put them in the right packages yet, that may be something to discuss.
retro-compatibility: broken. Maybe use re-writting rules for some stuff? Like withElementType: => of:. Some other may not work.
Carefull /!
Changed the readme to see my build, it should be changed back to yours.
Things that remains that i'd like to do:

this should be constrained slots, not typed anymore, and have two different abstract class for that purpose in the possible sublying types.
We should explore composition of constraints as well like : "#anIV type: SmallInteger ; satisfy: [:i| i>1]"
Possible more information on the slot with properties (which may or may not be enforced at runtime through generation of validator constraints from the properties?) Or at least to offer more information in the class description.

I'm available to modify necessary stuff for integrations
Pierre.

Since it breaks retrocompatibility, it doesn't really work to pull. Kinda have to clone it again, and recompile everything using type slots..

My last commits should be more readable.
Added the modification to ConstraintSlot rather than TypedSlots.
Improved the api, Some of the comments.
More tests...

added Mutability for single/multiple types. Not sure if it would deserve a "simpleType" abstract class or something.

Sidenote of why I'd like to have everything in one package : pulling often causes ob


KeyError: 'type' from ClientSession.is_file

This code:
await client.download(source=remote_path, destination=local_path, write_into=True)

Throws a KeyError at:
File "/usr/lib/python3.6/site-packages/aioftp/client.py", line 597, in is_file
    return info["type"] == "file"

However, the type keyword is visible from the client.list() function:
[(PurePosixPath('a.xml'), {'type': 'file', ...

I'm using the 0.6.1 version (default pip installation).

Hm, pretty strange. Can you paste result of await client.stat(remote_path) here?

It's returning a {'': ''} every time. Do you think it's anything to do with my ftp server's configuration instead?

Set client logger level to INFO
logging.getLogger("aioftp.client").setLevel(logging.INFO)

And paste here part of MLST request and response logging.

Here:
INFO:aioftp.client:227 Entering Passive Mode (198,54,126,99,47,92)
INFO:aioftp.client:MLSD
INFO:aioftp.client:150 Accepted data connection
INFO:aioftp.client:MLST a.xml
INFO:aioftp.client:226-Options: -a -l
INFO:aioftp.client:226 5 matches total
INFO:aioftp.client:QUIT
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=file;size=10;modify=20170227161813;UNIX.mode=0644;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g742014e; a.xml
INFO:aioftp.client:250 End.
ERROR:asyncio:Task exception was never retrieved
future: <Task finished coro=<download_folder() done, defined at async_ftp.py:10> exception=KeyError('type',)>
Traceback (most recent call last):
  File "async_ftp.py", line 18, in download_folder
    await ftp.download(source=remote_path, destination=local_path, write_into=True)
  File "/usr/lib/python3.6/site-packages/aioftp/client.py", line 830, in download
    if await self.is_file(source):
  File "/usr/lib/python3.6/site-packages/aioftp/client.py", line 597, in is_file
    return info["type"] == "file"
KeyError: 'type'

Can you isolate single request (await client.stat(path_to_file)) to ftp server and paste output.

Code:
import aioftp
import asyncio

async def test_stat(host, login, passwd):
    async with aioftp.ClientSession(host, 21, login, passwd) as client:
        async for path, info in client.list():
            print(await client.stat(path))

ftp_info = {
    'host': 'x',
    'login': 'x',
    'passwd': 'x',
}

loop = asyncio.get_event_loop()
task = [test_stat(**ftp_info)]
loop.run_until_complete(asyncio.wait(task))
loop.close()

Log:
INFO:aioftp.client:220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
[...] Connection stuff [...]
INFO:aioftp.client:230-OK. Current restricted directory is /
INFO:aioftp.client:230 0 Kbytes used (0%) - authorized: 2048000 Kb
INFO:aioftp.client:TYPE I
INFO:aioftp.client:200 TYPE is now 8-bit binary
INFO:aioftp.client:PASV
INFO:aioftp.client:227 Entering Passive Mode (198,54,126,99,47,9)
INFO:aioftp.client:MLSD
INFO:aioftp.client:150 Accepted data connection
INFO:aioftp.client:MLST .ftpquota
INFO:aioftp.client:226-Options: -a -l
INFO:aioftp.client:226 4 matches total
INFO:aioftp.client:MLST test
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=file;size=5;modify=20170227161816;UNIX.mode=0600;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g7420148; .ftpquota
INFO:aioftp.client:250 End.
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=dir;sizd=4096;modify=20170227161813;UNIX.mode=0755;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g7420136; test
INFO:aioftp.client:250 End.
INFO:aioftp.client:TYPE I
INFO:aioftp.client:200 TYPE is now 8-bit binary
INFO:aioftp.client:PASV
INFO:aioftp.client:227 Entering Passive Mode (198,54,126,99,47,63)
INFO:aioftp.client:MLSD test
INFO:aioftp.client:150 Accepted data connection
INFO:aioftp.client:MLST test/a.xml
INFO:aioftp.client:226-Options: -a -l
INFO:aioftp.client:226 5 matches total
INFO:aioftp.client:MLST test/b.xml
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=file;size=10;modify=20170227161813;UNIX.mode=0644;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g742014e; test/a.xml
INFO:aioftp.client:250 End.
INFO:aioftp.client:MLST test/inner
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=file;size=10;modify=20170227161813;UNIX.mode=0644;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g742014c; test/b.xml
INFO:aioftp.client:250 End.
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=dir;sizd=4096;modify=20170227161816;UNIX.mode=0755;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g742014f; test/inner
INFO:aioftp.client:250 End.
INFO:aioftp.client:TYPE I
INFO:aioftp.client:200 TYPE is now 8-bit binary
INFO:aioftp.client:PASV
INFO:aioftp.client:227 Entering Passive Mode (198,54,126,99,47,85)
INFO:aioftp.client:MLSD test/inner
INFO:aioftp.client:150 Accepted data connection
INFO:aioftp.client:MLST test/inner/c.xml
INFO:aioftp.client:226-Options: -a -l
INFO:aioftp.client:226 3 matches total
INFO:aioftp.client:250-Begin
INFO:aioftp.client: type=file;size=10;modify=20170227161816;UNIX.mode=0644;UNIX.uid=1449;UNIX.gid=1445;unique=fd01g7420150; test/inner/c.xml
INFO:aioftp.client:250 End.
INFO:aioftp.client:QUIT
INFO:aioftp.client:221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
INFO:aioftp.client:221 Logout.

Output from test_stat:
.ftpquota {'': ''}
test {'type': 'file', 'size': '5', 'modify': '20170227161816', 'unix.mode': '0600', 'unix.uid': '1449', 'unix.gid': '1445', 'unique': 'fd01g7420148'}
test/a.xml {'': ''}
test/b.xml {'type': 'file', 'size': '10', 'modify': '20170227161813', 'unix.mode': '0644', 'unix.uid': '1449', 'unix.gid': '1445', 'unique': 'fd01g742014e'}
test/inner {'type': 'file', 'size': '10', 'modify': '20170227161813', 'unix.mode': '0644', 'unix.uid': '1449', 'unix.gid': '1445', 'unique': 'fd01g742014c'}
test/inner/c.xml {'': ''}

Some files don't return their stat, so I assume you just have to handle cases where it's impossible to retrieve their stat?

I got it. The problem is on client side. list is lazy, so you can't do anything with server until you end list command. So you need collect list files and then download/stat/remove them. This is my bad, that this is not explained in documentation. More to say, front example of documentation is totally wrong (I will fix it!).
So, for proper work you need this:
async def test_stat(host, login, passwd):
    async with aioftp.ClientSession(host, 21, login, passwd) as client:
        for path, info in (await client.list()):
            print(await client.stat(path))

If you use straight download, then everything is done automatically:
async def test_download(host, login, passwd):
    async with aioftp.ClientSession(host, 21, login, passwd) as client:
        await client.download(".", "foo")

Or you can use two clients. One for lazy list, one for downloading.

Alright, it did fix the issue on my end. Thanks.
On Mon, Feb 27, 2017 at 4:53 PM, Nikita Melentev<EMAIL_ADDRESS>wrote:

Or you can use two clients. One for lazy list, one for downloading.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/pohmelie/aioftp/issues/44#issuecomment-282832953, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AIPAnrprlwYArzV3d2JX4o74QKm8hg_Rks5rgymrgaJpZM4MNZbu
.

Add extra note about async for and list:
http://aioftp.readthedocs.io/client_tutorial.html#listing-paths
http://aioftp.readthedocs.io/client_api.html#aioftp.Client.list
@thelostt, what do you think, is it good enough?

It means, that until you leave async for block you can’t interact with server.

It would be clearer to word that like so:
It means that you can't interact with server until you leave async

for block.
But that's my opinion. Other than that, everything's pretty good.
On Mon, Feb 27, 2017 at 6:12 PM, Nikita Melentev
<EMAIL_ADDRESS>wrote:

Add extra note about async for and list:
http://aioftp.readthedocs.io/client_tutorial.html#listing-paths
http://aioftp.readthedocs.io/client_api.html#aioftp.Client.list
@thelostt, what do you think, is it good enough?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


Start-AISH needs some way to pass --shell--wraper and other args to the aish executable

Summary of the new feature / enhancement
This is going to be needed in order to have other tools call and configure AISH with their specific details.
Proposed technical implementation details (optional)
No response

Superceeded by #197


feat: allow to load tools from external modules

@ErikBjare this MR is ready for review. It allows to load contributed tools from any python module. Read the added documentation for more information. Let me know what you think.

[!IMPORTANT]
This pull request enables loading tools from external Python modules by updating configuration and tool initialization logic.

Behavior:

Allow loading tools from external Python modules specified in TOOL_MODULES in config.rst.
Update chat.py and cli.py to use TOOL_FORMAT and TOOL_MODULES from configuration.
Tools can be enabled/disabled by default and have a load priority.

Tool Initialization:

Refactor init_tools() in tools/__init__.py to discover tools from specified modules using _discover_tools().
Add disabled_by_default and load_priority attributes to ToolSpec in tools/base.py.

Misc:

Update computer.py, python.py, rag.py, and subagent.py to use new tool initialization logic.
Add examples and instructions for new tool loading capabilities in config.rst.

This description was created by  for 8c060684972ae399a9d9f05825a4101f06eb1ff1. It will automatically update as commits are pushed.

Ready for review.

This MR:

allows to configure the python modules path loaded at startup
improves encapsulation of the loaded_tool variable
adds a disabled_by_default flag to handle tools that shouldn't be activated without explicit action
moves python function registration inside the python tool itself
helps to keep the tool configuration in subagents
add tests for a 100% coverage of the tool/__init__.py file
improve patch tool support for tool format

Very nice, I had something just like this in mind!
Lots of nice improvements in this PR, happy to try it and merge it once the conflicts are resolved :)

Great thanks. I've resolved the conflicts.

I made my first useful contributed tool today using a gptme-agent:
import os
import requests
from gptme.tools import ToolSpec, Parameter, ToolUse
from gptme.message import Message

PUSHOVER_USER_KEY = os.getenv('PUSHOVER_USER_KEY')
PUSHOVER_API_TOKEN = os.getenv('PUSHOVER_API_TOKEN')

def execute(content: str | None, args: list[str] | None, kwargs: dict[str, str] | None, confirm):
    if not PUSHOVER_USER_KEY or not PUSHOVER_API_TOKEN:
        Message('system', "PUSHOVER_USER_KEY or PUSHOVER_API_TOKEN env variables are not set")

    if content is not None and args is not None:
        title = args[0]
        message = content
    elif kwargs is not None:
        title = kwargs.get('title', 'No title')
        message = kwargs.get('message', 'No message')
    else:
        return Message('system', "Tool call failed")

    url = "https://api.pushover.net/1/messages.json"
    payload = {
        "token": PUSHOVER_API_TOKEN,
        "user": PUSHOVER_USER_KEY,
        "message": message,
        "title": title,
    }
    try:
        response = requests.post(url, data=payload, timeout=30)

        if response.status_code == 200:
            return Message('system', "Notification sent successfully")
        else:
            return Message('system', "The notification couldn't be sent")
    except Exception as e:
        return Message('system', f"Something went wrong while sending the notification: {e}")

def examples(tool_format):
    return f"""
> User: Send me a notification.
> Assistant:
{ToolUse("send_notification", ["This is a test notification!"], "Success").to_output(tool_format)}
> System: Notification sent successfully.
> Assistant: The notification has been sent.
""".strip()

tool = ToolSpec(
    name="notification",
    desc="Sends a notification via Pushover.",
    instructions="Use this tool to send notifications to the user's Pushover account.",
    examples=examples,
    execute=execute,
    block_types=["notification"],
    parameters=[
        Parameter(
            name="message",
            type="string",
            description="The message to send in the notification.",
            required=True,
        ),
        Parameter(
            name="title",
            type="string",
            description="The title of the notification.",
            required=False,
        ),
    ],
)

So great!!!!


Remove usage of HTTP_TOKENINFO_URL environment variable

Follow up to #146
This should be done not before March 2016.

Why it shouldn't be done before March 2016?

@rafaelcaricio that's just an arbitrary date to give people the chance to see the warning (if they always rely on the latest version) --- we could do it anytime :smirk:

I'm personally relying on latest versions of many libraries and I don't like it if they break suddenly without any prior deprecation warnings..

Ok. I was just curious why that specific date. :+1: I understand your concern and support the idea. :smiley:


update data

New issue checklist

[ ] I have reviewed the README and documentation
[ ] I have searched existing issues and this is not a duplicate
[ ] I have attempted to reproduce the issue and include an example project.

i have 5 days ...  i was try every thing to implement pull to refresh but does not   work
i got this error message

My model look like
`
extension ExplorationItemModel : ListDiffable {
func diffIdentifier() -> NSObjectProtocol {
    return id as NSObjectProtocol
}

func isEqual(toDiffableObject object: ListDiffable?) -> Bool {
    guard self !== object else { return true }
    guard let object = object as? ExplorationItemModel else { return false }
    return id == object.id
}

}
extension ExplorationItemModel : Equatable {
static func == (lhs: ExplorationItemModel, rhs: ExplorationItemModel) -> Bool {
     return lhs.isEqual(toDiffableObject: rhs)
}

}
`

Anyone help me ??
Give me example or anything

Seems like the objects in your list are not unique (they have duplicate ids). One way around this as a start if there really is no data differentiating your objects is to return self as the diffIdentifier.


Fix event stream format: messages need to be terminated with \n\n instead of one \n

See: http://www.html5rocks.com/en/tutorials/eventsource/basics/
The hystrix implementation does this correctly (https://github.com/Netflix/Hystrix/blob/master/hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsStreamServlet.java#L155) here println automatically sends an additional newline which the php echo does not. Because of this the dashboard proxy does not work and throws org.mortbay.jetty.EofException.

Thanks @bashofmann


Wheels spin forever when detached due to no torque being applied to the brace

Fixed - Rest in peace spinny wheels.


Fix different synth results between with and without debug output "-g"

Fixes #1178

@cliffordwolf It seems that with your commits I no longer need 1122a2e. I tried reverting it and still got the same synth result.

Okay that also brings up the question of whether 0e6c830 is also needed. I tried it locally and got the same synth result too.

Tbh, I don't really understand why 1122a2e made a difference in the first place. ;)
Yes, I think 0e6c830 and log_checkpoint() shouldn't be needed when we have 44fd459.

Okay I reverted those two commits. Will merge when CI goes green. Thanks for taking over!


fix task scheduler bugs: dead lock and dup server-info

fix dead lock when scheduler-worker hold scheduleTasks lock then
query tasks, tx() method synchronized(this) wait indefinitely.
delete server-info when graph close (when store is initialized)
throw exception if task if failed in syncWait (just for debug tinkerpop tests)
submit task if there is only single node
standardize the status of tasks (add scheduling/scheduled)
cancel-task don't remove task from memory if it's single-node server
notifyNewTask only notify when the queue is empty(size=1 means one timer task)
read/write server-infos in bache duting one scheduling

fix #1075
Change-Id: Icb8d5073f024f0598d439d738d6c0e2caa6fd0cd


Package function: trie_contain()

trie_contain function takes in a trie class and a word string to be searched
the function transfers the word to a character list containing every letter inside
the function then loops through the character list to check if every letter is contained in the trie structure
the function then checks if the last letter in the word stored in trie is labelled with is_complete_word == TRUE

Exception handling

trie_contain function checks if the first input trie is an instance of a trie class (if not, it will throw an error to warn the user the correct type)
trie_contain function checks if the  second input word is an string containing only letters (if not, it will throw an error to warn the user the correct input format)

Test functions

test if the function returns FALSE when searching through an empty trie
test if the function returns FALSE when the word does not exist in the trie
test if the function returns FALSE when all letters of the word exist but they are not stored as a complete word in the trie
test if the function returns TRUE when the word exists in the trie as a complete word

Exception handling

test if the function throws an error when the input trie is not a class trie or the input word is not a string
test if the function throws an error when the input word contains symbols or numbers other than letters


Test issue

Test slash command action

Do something

/example

/hello-world-local

/hello-world-local


SNAPSHOT build

Hi,
You did great job with this plugin. Wondering if the SNAPSHOT version is available somewhere, because I need a feature been added on master but not yet released.
Cheers.

@filosganga I can release one now.

Released as 0.1.2. It should be available soon.

Awesome, thanks!


Status update comments

PR includes

[x] Feature

Related issues
Resolve #723

https://github.com/taskany-inc/hire/assets/81121562/e1535b0c-43d0-4e1a-8072-323eb2bf4ccd

https://github.com/taskany-inc/hire/assets/81121562/a6c12afb-159e-43e5-8d30-fb330f0444b6

https://github.com/taskany-inc/hire/assets/81121562/5b6786c5-18c6-4f4e-b65c-1dd99ed3b82a


add outside measurement data

add outdoor temp/humidity data to the reporting output, may need to have manual zip code input

https://pythonhowtoprogram.com/how-to-use-weather-api-to-get-weather-data-in-python-3/


[Feature] Tag Group Widget

Summary
I saw this request on reddit where a user wants to generate a list of buttons dynamically. See below.

Another adjacent idea:
Generate list of items from an API response inside a menu button

IIUC, we need a component which can loop our action here. After that pretty much everything is straightforward. I dont see how a button group/ Menu button widget solve the problem

@andrewdietekoki check this out, this may the improvement on our current button group dynamism behavior


merge MONDO_0003571 'labyrinthine dysfunction' with MONDO_0002467 inner ear disease

Editor note: TODO merge with inner ear disorder

I don't think this should be a merge. concepts are not equivalent
http://eioftx.com/vertigo-balance/balance-disorders/labyrinthine-dysfunction/
but by all means, obsolete, and have 2 considers, one to the parent mondo, the other to an hpo


Merge "newshit" branch into master for ongoing development

As per discussion with sneak on slack, this needs to be merged into master

@GarethNelson - please stop adding features and get this passing tests so it can be merged in.  These huge PRs are too much cognitive load for code review.

On it now, shall I do ongoing development in master until it's stable?

Just try to keep your sets of changes smaller; break your changes into smaller pieces so it can be stably merged to master more often. I don't want branches around longer than 4-10 days.


Converted Imperative and Xaml test cases to xUnit

Fixes #32

@ewinnington, I'll add you as a reviewer once you're setup as a collaborator.
In order to get the XAML samples to work, I had to use CLR namespaces. See issue #36

Thanks! Sorry I’m not more active. I’m still very interested to help out, but need to ship my intraday trading software for my clients first. I’ll have a look on Sunday.