Giter Club home page Giter Club logo

rivery_cli's Introduction

Overview

Rivery CLI is an amazing way to manage, deploy, run and edit rivers inside Rivery. The rivers are configured only by .yaml files, as a configuration files, makes this CLI as a basic of Infrastructure As Code (IaC) methodology.

In order to start using the tool, go to the Getting Started page.

Getting started

Requirements

  1. You must have Python 3.6 or later installed. For installation instructions, see the Downloading Python page in Python's Beginner Guide.

  2. An API Token with the following scopes:

    * me:list
    * river:execute
    * river:edit
    * river:list
    * river:delete
    * connection:edit
    * connection:list
    * connection:delete

In order to create a new API token, please refer to our docs

Install

Install Rivery CLI, by using the next command:

pip install -U rivery-cli

Initiate a new project

in order to start new project:

  1. create new project directory, for example in linux base OS:
> mkdir /home/my-project

or in windows:

> mkdir c:\my-project
  1. Go into the my-project directory you've created: cd my-project
  2. run the next command and choose your project name.
> rivery init

Create the first profile

Rivery CLI store defaults and credentials under an "entity" called profile.

Each profile has its name and the configurations under it. Due to every API token refers to specific account+environment inside your Rivery console, and every account+environment pair has its own credentials, it is likely you'll have a profile per each account+environment coupling.

For creating your first profile use the next command:

> rivery configure

And Follow the prompt:

> Please enter your token. (******): ...
> Choose your Region () [...]: ...
> Thank you for entering auth credentials. 
> Please check your profile at: ~/.rivery/auth

And you're good to go!

Issues and Feature Requests

Rivery CLI and IaC engine is fully open source dir. We're getting in warm welcome any issues/features submitted to our end, and encourage the community to contribute in the solution. Please don't hesitate to add any issues/feature request using the repo's Issues section.

Getting start With Rivery

You can check out our product docs at https://docs.rivery.io in order to getting started.

Full documentation

You may find here the full documentation.

rivery_cli's People

Contributors

alonreznik avatar danielv4392 avatar giladlevy7 avatar limor-rivery avatar oryanmoshe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rivery_cli's Issues

Rivery CLI Error when pushing .yaml files to account.

river: https://console.rivery.io/#/river/55bf7c4270fdca16cac18761/563f5b62b0a10e18f0808895/river/60ae6bc0ceb90c22c7fd32d3
river definition yaml: 60ae6bc0ceb90c22c7fd32d3.yaml
project: rivery_cli_vcs_test
python version: 3.9

Just wanted to create an internal ticket to address a strange error when using the Rivery CLI to push a .yaml file back to the Rivery platform that we encountered during the onboarding session yesterday:
image

Was able to extract the .yaml file for this river fine but when I made some benign edits to the configuration (changed the name of some columns/steps in the mapping for demo purposes) and attempted to push the file back to the Rivery console, I got a strange error " 'dict' object has no attribute 'obj' ". I also tried to remove the edits and push the original .yaml file back and got the same error message.

yaml file:

rivery:
  entity_name: river-60ae6bc0ceb90c22c7fd32d3
  version: 0.2.5
  type: river
  cross_id: 60ae6bc0ceb90c22c7fd32d3
  definition:
    properties:
      steps:
      - type: container
        isEnabled: true
        step_name: Social Data Pulls
        isParallel: true
        container_running: run_once
        loop_over_value: ''
        loop_over_variable_name: []
        steps:
        - type: step
          isEnabled: true
          step_name: Instagram - Posts
          block_primary_type: river
          block_type: river
          river_id: 60ae6bc0ceb90c22c7fd32cf
        - type: step
          isEnabled: true
          step_name: Facebook - Posts
          block_primary_type: river
          block_type: river
          river_id: 60ae6bc0ceb90c22c7fd32cd
        - type: step
          isEnabled: true
          step_name: Twitter - Tweet Details
          block_primary_type: river
          block_type: river
          river_id: 60ae6bc0ceb90c22c7fd32d8
        - type: step
          isEnabled: true
          step_name: Twitter - Tweet Activity
          block_primary_type: river
          block_type: river
          river_id: 60ae6bc0ceb90c22c7fd32d1
        - type: step
          isEnabled: true
          step_name: Facebook - Pages
          block_primary_type: river
          block_type: river
          river_id: 60ae6bc0ceb90c22c7fd32d4
        - type: step
          isEnabled: true
          step_name: Instagram - Account
          block_primary_type: river
          block_type: river
          river_id: 60ae6bc0ceb90c22c7fd32d6
      - type: container
        isEnabled: true
        step_name: Social Data Feeds
        isParallel: true
        container_running: run_once
        loop_over_value: ''
        loop_over_variable_name: []
        steps:
        - type: step
          isEnabled: true
          step_name: FB Logic
          block_primary_type: sql
          block_type: snowflake
          execute_sql_command: false
          compression: none
          database: '{BLOCK_DB}'
          file_type: csv
          fields:
          - name: channel
            fields: []
            alias: channel
            length: 8
            fieldName: channel
            mode: NULLABLE
            type: STRING
            id: channel
          - name: account_name
            fields: []
            alias: account_name
            length: 16777216
            fieldName: account_name
            mode: NULLABLE
            type: STRING
            id: account_name
          - name: post_id
            isKey: true
            fields: []
            alias: post_id
            length: 16777216
            fieldName: post_id
            mode: NULLABLE
            type: STRING
            id: post_id
          - name: permalink
            fields: []
            alias: permalink
            length: 16777216
            fieldName: permalink
            mode: NULLABLE
            type: STRING
            id: permalink
          - name: title_caption
            fields: []
            alias: title_caption
            length: 16777216
            fieldName: title_caption
            mode: NULLABLE
            type: STRING
            id: title_caption
          - name: account_id
            isKey: true
            fields: []
            alias: account_id
            length: 16777216
            fieldName: account_id
            mode: NULLABLE
            type: STRING
            id: account_id
          - name: from_name
            fields: []
            alias: from_name
            length: 16777216
            fieldName: from_name
            mode: NULLABLE
            type: STRING
            id: from_name
          - name: is_hidden
            fields: []
            alias: is_hidden
            length: 38
            fieldName: is_hidden
            mode: NULLABLE
            type: BOOLEAN
            id: is_hidden
          - name: is_published
            fields: []
            alias: is_published
            length: 38
            fieldName: is_published
            mode: NULLABLE
            type: BOOLEAN
            id: is_published
          - name: media_type
            fields: []
            alias: media_type
            length: 16777216
            fieldName: media_type
            mode: NULLABLE
            type: STRING
            id: media_type
          - name: post_description
            fields: []
            alias: post_description
            length: 16777216
            fieldName: post_description
            mode: NULLABLE
            type: STRING
            id: post_description
          - name: post_title
            fields: []
            alias: post_title
            length: 16777216
            fieldName: post_title
            mode: NULLABLE
            type: STRING
            id: post_title
          - name: created_date
            dateFormat: yyyy-mm-dd HH:MM:SS
            fields: []
            alias: created_date
            length: 38
            fieldName: created_date
            mode: NULLABLE
            type: TIMESTAMP
            id: created_date
          - name: fb_page_category
            fields: []
            alias: fb_page_category
            length: 16777216
            fieldName: fb_page_category
            mode: NULLABLE
            type: STRING
            id: fb_page_category
          - name: new_like_count
            fields: []
            alias: new_like_count
            length: 38
            fieldName: new_like_count
            mode: NULLABLE
            type: NUMBER
            id: new_like_count
          - name: date
            dateFormat: yyyy-mm-dd HH:MM:SS
            isKey: true
            fields: []
            alias: date
            length: 38
            fieldName: date
            mode: NULLABLE
            type: TIMESTAMP
            id: date
          - name: hashtag_flag
            fields: []
            alias: hashtag_flag
            length: 38
            fieldName: hashtag_flag
            mode: NULLABLE
            type: BOOLEAN
            id: hashtag_flag
          - name: exclamation_flag
            fields: []
            alias: exclamation_flag
            length: 38
            fieldName: exclamation_flag
            mode: NULLABLE
            type: BOOLEAN
            id: exclamation_flag
          - name: question_flag
            fields: []
            alias: question_flag
            length: 38
            fieldName: question_flag
            mode: NULLABLE
            type: BOOLEAN
            id: question_flag
          - name: actual_teaser_length
            fields: []
            alias: actual_teaser_length
            length: 38
            fieldName: actual_teaser_length
            mode: NULLABLE
            type: NUMBER
            id: actual_teaser_length
          - name: teaser_length_group
            fields: []
            alias: teaser_length_group
            length: 16777216
            fieldName: teaser_length_group
            mode: NULLABLE
            type: STRING
            id: teaser_length_group
          - name: impressions
            fields: []
            alias: impressions
            length: 38
            fieldName: impressions
            mode: NULLABLE
            type: NUMBER
            id: impressions
          - name: reach
            fields: []
            alias: reach
            length: 38
            fieldName: reach
            mode: NULLABLE
            type: NUMBER
            id: reach
          - name: shares
            fields: []
            alias: shares
            length: 38
            fieldName: shares
            mode: NULLABLE
            type: NUMBER
            id: shares
          - name: likes
            fields: []
            alias: likes
            length: 38
            fieldName: likes
            mode: NULLABLE
            type: NUMBER
            id: likes
          - name: comments
            fields: []
            alias: comments
            length: 38
            fieldName: comments
            mode: NULLABLE
            type: NUMBER
            id: comments
          - name: other_clicks
            fields: []
            alias: other_clicks
            length: 38
            fieldName: other_clicks
            mode: NULLABLE
            type: NUMBER
            id: other_clicks
          - name: photo_view
            fields: []
            alias: photo_view
            length: 38
            fieldName: photo_view
            mode: NULLABLE
            type: NUMBER
            id: photo_view
          - name: link_clicks
            fields: []
            alias: link_clicks
            length: 38
            fieldName: link_clicks
            mode: NULLABLE
            type: NUMBER
            id: link_clicks
          - name: video_play_clicks
            fields: []
            alias: video_play_clicks
            length: 38
            fieldName: video_play_clicks
            mode: NULLABLE
            type: NUMBER
            id: video_play_clicks
          - name: engagement
            fields: []
            alias: engagement
            length: 38
            fieldName: engagement
            mode: NULLABLE
            type: NUMBER
            id: engagement
          - name: video_views
            fields: []
            alias: video_views
            length: 38
            fieldName: video_views
            mode: NULLABLE
            type: NUMBER
            id: video_views
          - name: video_views_30s
            fields: []
            alias: video_views_30s
            length: 38
            fieldName: video_views_30s
            mode: NULLABLE
            type: NUMBER
            id: video_views_30s
          - name: video_post_length
            fields: []
            alias: video_post_length
            length: 38
            fieldName: video_post_length
            mode: NULLABLE
            type: NUMBER
            id: video_post_length
          - name: avg_video_view_time
            fields: []
            alias: avg_video_view_time
            length: 38
            fieldName: avg_video_view_time
            mode: NULLABLE
            type: NUMBER
            id: avg_video_view_time
          - name: click_to_play_video
            fields: []
            alias: click_to_play_video
            length: 38
            fieldName: click_to_play_video
            mode: NULLABLE
            type: NUMBER
            id: click_to_play_video
          - name: page_fan_adds
            fields: []
            alias: page_fan_adds
            length: 38
            fieldName: page_fan_adds
            mode: NULLABLE
            type: NUMBER
            id: page_fan_adds
          - name: page_fan_count
            fields: []
            alias: page_fan_count
            length: 38
            fieldName: page_fan_count
            mode: NULLABLE
            type: NUMBER
            id: page_fan_count
          - name: page_fan_count_today
            fields: []
            alias: page_fan_count_today
            length: 38
            fieldName: page_fan_count_today
            mode: NULLABLE
            type: NUMBER
            id: page_fan_count_today
          - name: page_fan_removes
            fields: []
            alias: page_fan_removes
            length: 38
            fieldName: page_fan_removes
            mode: NULLABLE
            type: NUMBER
            id: page_fan_removes
          - name: page_views
            fields: []
            alias: page_views
            length: 38
            fieldName: page_views
            mode: NULLABLE
            type: NUMBER
            id: page_views
          - name: page_consumptions
            fields: []
            alias: page_consumptions
            length: 38
            fieldName: page_consumptions
            mode: NULLABLE
            type: NUMBER
            id: page_consumptions
          - name: page_engaged_users
            fields: []
            alias: page_engaged_users
            length: 38
            fieldName: page_engaged_users
            mode: NULLABLE
            type: NUMBER
            id: page_engaged_users
          - name: page_impressions
            fields: []
            alias: page_impressions
            length: 38
            fieldName: page_impressions
            mode: NULLABLE
            type: NUMBER
            id: page_impressions
          - name: page_reach
            fields: []
            alias: page_reach
            length: 38
            fieldName: page_reach
            mode: NULLABLE
            type: NUMBER
            id: page_reach
          target_loading: overwrite
          connection_id: 60ae6bc0ceb90c22c7fd32da
          drop_after: false
          target_type: table
          split_tables: 'no'
          block_db_type: snowflake
          target_table: fb_master
          schema_id: '{BLOCK_SCHEMA}'
          use_standard_sql: false
          sql_query: "SELECT\n'Facebook' as channel,\npg.name as account_name,\npost.id\
            \ as post_id,\npermalink_url as permalink,\nmessage as title_caption,\n\
            pg.id as account_id,\nfrom_name,\nis_hidden,\nis_published,\nifnull(post_type,status_type)\
            \ as media_type,\npost_description,\npost_title,\nTO_TIMESTAMP(REPLACE(created_time,\
            \ '+0000', '')) as created_date,\ncategory as fb_page_category,\nnew_like_count,\n\
            TO_DATE(REPLACE(pg.date, '+0000', '')) as date,\nCASE WHEN message LIKE\
            \ '%#%' THEN TRUE ELSE FALSE END as hashtag_flag,\nCASE WHEN message LIKE\
            \ '%!%' THEN TRUE ELSE FALSE END as exclamation_flag,\nCASE WHEN message\
            \ LIKE '%?%' THEN TRUE ELSE FALSE END as question_flag,\nLENGTH(message)\
            \ as actual_teaser_length,\nCASE WHEN LENGTH(message) < 35 THEN '0-35'\
            \ \nWHEN LENGTH(message) BETWEEN 36 and 75 THEN '36-75' \nWHEN LENGTH(message)\
            \ BETWEEN 76 and 100 THEN '76-100'\nWHEN LENGTH(message) BETWEEN 101 and\
            \ 125 THEN '101-125'\nWHEN LENGTH(message) >= 126 THEN '126+' END as teaser_length_group,\n\
            post_impressions_lifetime as impressions,\npost_impressions_unique_lifetime\
            \ as reach,\npost_activity_by_action_type_share_lifetime as shares,\n\
            post_activity_by_action_type_like_lifetime as likes,\npost_activity_by_action_type_comment_lifetime\
            \ as comments,\npost_clicks_by_type_other_clicks_lifetime as other_clicks,\n\
            post_clicks_by_type_photo_view_lifetime as photo_view,\npost_clicks_by_type_link_clicks_lifetime\
            \ as link_clicks,\npost_clicks_by_type_video_play_lifetime as video_play_clicks,\n\
            COALESCE(post_activity_by_action_type_share_lifetime, 0) + \nCOALESCE(post_activity_by_action_type_like_lifetime,\
            \ 0) + \nCOALESCE(post_activity_by_action_type_comment_lifetime, 0) +\
            \ \nCOALESCE(post_clicks_by_type_other_clicks_lifetime, 0) +\nCOALESCE(post_clicks_by_type_photo_view_lifetime,\
            \ 0) +\nCOALESCE(post_clicks_by_type_video_play_lifetime, 0) +\nCOALESCE(post_clicks_by_type_link_clicks_lifetime,\
            \ 0) as engagement,\npost_video_views_lifetime as video_views,\npost_video_complete_views_30s_clicked_to_play_lifetime\
            \ + post_video_complete_views_30s_autoplayed_lifetime as video_views_30s,\n\
            post_video_length_lifetime as video_post_length,\npost_video_avg_time_watched_lifetime\
            \ as avg_video_view_time,\npost_clicks_by_type_video_play_lifetime as\
            \ click_to_play_video,\npage_fan_adds_day as page_fan_adds,\npage_fans_day\
            \ as page_fan_count,\nfan_count as page_fan_count_today,\npage_fan_removes_day\
            \ as page_fan_removes,\npage_views_total_day as page_views,\npage_consumptions_day\
            \ as page_consumptions,\npage_engaged_users_day as page_engaged_users,\n\
            page_impressions_day as page_impressions,\npage_impressions_unique_day\
            \ as page_reach\nFROM {BLOCK_DB}.{BLOCK_SCHEMA}.fb_pages pg\nleft join\
            \ (select *,\n           attach.value:description::string as post_description,\n\
            \           attach.value:title::string as post_title,\n           attach.value:type::string\
            \ as post_type\n           from {BLOCK_DB}.{BLOCK_SCHEMA}.fb_posts, lateral\
            \ flatten(input => attachments_data) attach\n            where is_hidden\
            \ = FALSE) post\non post.page_id = pg.id and DATE(REPLACE(post.created_time,'+0000',''))\
            \ = pg.date"
          split_interval: d
          query_priority: interactive
        - type: step
          isEnabled: true
          step_name: Instagram Logic
          block_primary_type: sql
          block_type: snowflake
          sql_query: "select \n'Instagram' as channel,\nowner_id,\nacc.id as account_id,\n\
            acc.username as account_name,\npost.ig_id as ig_id,\nmedia_id as post_id,\n\
            media_url,\npermalink,\nlower(case when media_type = 'IMAGE' then 'photo'\
            \ else media_type end) as media_type,\ncast( substr(timestamp,0,10) AS\
            \ DATE) as created_date, \ncast( substr(acc.date,0,10) AS DATE) as date,\
            \ \ncaption as title_caption,\nvideo_views_lifetime as video_views, \n\
            like_count as likes,\ncomments_count as comments,\ncase \nwhen media_type='CAROUSEL_ALBUM'\
            \ then carousel_album_reach_lifetime \nelse reach_lifetime end as reach,\n\
            Case \nwhen media_type='CAROUSEL_ALBUM' then carousel_album_impressions_lifetime\
            \ \nelse impressions_lifetime end as impressions,\nCASE \nWHEN media_type\
            \ = 'CAROUSEL_ALBUM' THEN carousel_album_engagement_lifetime\nELSE engagement_lifetime\
            \ END as engagement,\nsaved_lifetime as saved,\nfollowers_count as total_followers,\n\
            follower_count_day as follows,\nimpressions_day as page_impressions,\n\
            reach_day as page_reach\nfrom {BLOCK_DB}.{BLOCK_SCHEMA}.ig_accounts acc\n\
            left join {BLOCK_DB}.{BLOCK_SCHEMA}.ig_posts post\non post.acc_id = acc.id\
            \ and DATE(REPLACE(post.timestamp,'+0000','')) = acc.date"
          execute_sql_command: false
          compression: none
          database: '{BLOCK_DB}'
          file_type: csv
          fields:
          - name: channel
            fields: []
            alias: channel
            length: 9
            fieldName: channel
            mode: NULLABLE
            type: STRING
            id: channel
          - name: owner_id
            fields: []
            alias: owner_id
            length: 16777216
            fieldName: owner_id
            mode: NULLABLE
            type: STRING
            id: owner_id
          - name: account_id
            isKey: true
            fields: []
            alias: account_id
            length: 16777216
            fieldName: account_id
            mode: NULLABLE
            type: STRING
            id: account_id
          - name: account_name
            fields: []
            alias: account_name
            length: 16777216
            fieldName: account_name
            mode: NULLABLE
            type: STRING
            id: account_name
          - name: ig_id
            fields: []
            alias: ig_id
            length: 16777216
            fieldName: ig_id
            mode: NULLABLE
            type: STRING
            id: ig_id
          - name: post_id
            isKey: true
            fields: []
            alias: post_id
            length: 16777216
            fieldName: post_id
            mode: NULLABLE
            type: STRING
            id: post_id
          - name: media_url
            fields: []
            alias: media_url
            length: 16777216
            fieldName: media_url
            mode: NULLABLE
            type: STRING
            id: media_url
          - name: permalink
            fields: []
            alias: permalink
            length: 16777216
            fieldName: permalink
            mode: NULLABLE
            type: STRING
            id: permalink
          - name: media_type
            fields: []
            alias: media_type
            length: 16777216
            fieldName: media_type
            mode: NULLABLE
            type: STRING
            id: media_type
          - name: created_date
            dateFormat: yyyy-mm-dd HH:MM:SS
            fields: []
            alias: created_date
            length: 38
            fieldName: created_date
            mode: NULLABLE
            type: TIMESTAMP
            id: created_date
          - name: date
            dateFormat: yyyy-mm-dd HH:MM:SS
            isKey: true
            fields: []
            alias: date
            length: 38
            fieldName: date
            mode: NULLABLE
            type: TIMESTAMP
            id: date
          - name: title_caption
            fields: []
            alias: title_caption
            length: 16777216
            fieldName: title_caption
            mode: NULLABLE
            type: STRING
            id: title_caption
          - name: video_views
            fields: []
            alias: video_views
            length: 38
            fieldName: video_views
            mode: NULLABLE
            type: NUMBER
            id: video_views
          - name: likes
            fields: []
            alias: likes
            length: 38
            fieldName: likes
            mode: NULLABLE
            type: NUMBER
            id: likes
          - name: comments
            fields: []
            alias: comments
            length: 38
            fieldName: comments
            mode: NULLABLE
            type: NUMBER
            id: comments
          - name: reach
            fields: []
            alias: reach
            length: 38
            fieldName: reach
            mode: NULLABLE
            type: NUMBER
            id: reach
          - name: impressions
            fields: []
            alias: impressions
            length: 38
            fieldName: impressions
            mode: NULLABLE
            type: NUMBER
            id: impressions
          - name: engagement
            fields: []
            alias: engagement
            length: 38
            fieldName: engagement
            mode: NULLABLE
            type: NUMBER
            id: engagement
          - name: saved
            fields: []
            alias: saved
            length: 38
            fieldName: saved
            mode: NULLABLE
            type: NUMBER
            id: saved
          - name: total_followers
            fields: []
            alias: total_followers
            length: 38
            fieldName: total_followers
            mode: NULLABLE
            type: NUMBER
            id: total_followers
          - name: follows
            fields: []
            alias: follows
            length: 38
            fieldName: follows
            mode: NULLABLE
            type: NUMBER
            id: follows
          - name: page_impressions
            fields: []
            alias: page_impressions
            length: 38
            fieldName: page_impressions
            mode: NULLABLE
            type: NUMBER
            id: page_impressions
          - name: page_reach
            fields: []
            alias: page_reach
            length: 38
            fieldName: page_reach
            mode: NULLABLE
            type: NUMBER
            id: page_reach
          connection_id: 60ae6bc0ceb90c22c7fd32da
          drop_after: false
          target_type: table
          block_db_type: snowflake
          target_table: ig_master
          split_tables: 'no'
          schema_id: '{BLOCK_SCHEMA}'
          use_standard_sql: false
          target_loading: overwrite
          split_interval: d
          query_priority: interactive
        - type: step
          isEnabled: true
          step_name: Twitter Logic
          block_primary_type: sql
          block_type: snowflake
          execute_sql_command: false
          compression: none
          database: '{BLOCK_DB}'
          file_type: csv
          fields:
          - name: channel
            fields: []
            alias: channel
            length: 7
            fieldName: channel
            mode: NULLABLE
            type: STRING
            id: channel
          - name: post_id
            isKey: true
            fields: []
            alias: post_id
            length: 38
            fieldName: post_id
            mode: NULLABLE
            type: NUMBER
            id: post_id
          - name: full_text
            fields: []
            alias: full_text
            length: 16777216
            fieldName: full_text
            mode: NULLABLE
            type: STRING
            id: full_text
          - name: title_caption
            fields: []
            alias: title_caption
            length: 16777216
            fieldName: title_caption
            mode: NULLABLE
            type: STRING
            id: title_caption
          - name: date
            dateFormat: yyyy-mm-dd HH:MM:SS
            isKey: true
            fields: []
            alias: date
            length: 38
            fieldName: date
            mode: NULLABLE
            type: TIMESTAMP
            id: date
          - name: created_date
            dateFormat: yyyy-mm-dd HH:MM:SS
            fields: []
            alias: created_date
            length: 38
            fieldName: created_date
            mode: NULLABLE
            type: TIMESTAMP
            id: created_date
          - name: account_id
            isKey: true
            fields: []
            alias: account_id
            length: 16777216
            fieldName: account_id
            mode: NULLABLE
            type: STRING
            id: account_id
          - name: owner_id
            fields: []
            alias: owner_id
            length: 38
            fieldName: owner_id
            mode: NULLABLE
            type: NUMBER
            id: owner_id
          - name: user_screen_name
            fields: []
            alias: user_screen_name
            length: 16777216
            fieldName: user_screen_name
            mode: NULLABLE
            type: STRING
            id: user_screen_name
          - name: account_name
            fields: []
            alias: account_name
            length: 16777216
            fieldName: account_name
            mode: NULLABLE
            type: STRING
            id: account_name
          - name: video_views
            fields: []
            alias: video_views
            length: 38
            fieldName: video_views
            mode: NULLABLE
            type: NUMBER
            id: video_views
          - name: video_views_completed
            fields: []
            alias: video_views_completed
            length: 38
            fieldName: video_views_completed
            mode: NULLABLE
            type: NUMBER
            id: video_views_completed
          - name: impressions
            fields: []
            alias: impressions
            length: 38
            fieldName: impressions
            mode: NULLABLE
            type: NUMBER
            id: impressions
          - name: engagement
            fields: []
            alias: engagement
            length: 38
            fieldName: engagement
            mode: NULLABLE
            type: NUMBER
            id: engagement
          - name: retweets
            fields: []
            alias: retweets
            length: 38
            fieldName: retweets
            mode: NULLABLE
            type: NUMBER
            id: retweets
          - name: replies
            fields: []
            alias: replies
            length: 38
            fieldName: replies
            mode: NULLABLE
            type: NUMBER
            id: replies
          - name: likes
            fields: []
            alias: likes
            length: 38
            fieldName: likes
            mode: NULLABLE
            type: NUMBER
            id: likes
          - name: url_clicks
            fields: []
            alias: url_clicks
            length: 38
            fieldName: url_clicks
            mode: NULLABLE
            type: NUMBER
            id: url_clicks
          - name: follows
            fields: []
            alias: follows
            length: 38
            fieldName: follows
            mode: NULLABLE
            type: NUMBER
            id: follows
          - name: tag_flag
            fields: []
            alias: tag_flag
            length: 38
            fieldName: tag_flag
            mode: NULLABLE
            type: BOOLEAN
            id: tag_flag
          - name: hashtag_flag
            fields: []
            alias: hashtag_flag
            length: 38
            fieldName: hashtag_flag
            mode: NULLABLE
            type: BOOLEAN
            id: hashtag_flag
          - name: question_flag
            fields: []
            alias: question_flag
            length: 38
            fieldName: question_flag
            mode: NULLABLE
            type: BOOLEAN
            id: question_flag
          - name: exclamation_flag
            fields: []
            alias: exclamation_flag
            length: 38
            fieldName: exclamation_flag
            mode: NULLABLE
            type: BOOLEAN
            id: exclamation_flag
          - name: tweet_text_length
            fields: []
            alias: tweet_text_length
            length: 38
            fieldName: tweet_text_length
            mode: NULLABLE
            type: NUMBER
            id: tweet_text_length
          - name: tweet_text_group_length
            fields: []
            alias: tweet_text_group_length
            length: 16777216
            fieldName: tweet_text_group_length
            mode: NULLABLE
            type: STRING
            id: tweet_text_group_length
          - name: video_tweet_flag
            fields: []
            alias: video_tweet_flag
            length: 1
            fieldName: video_tweet_flag
            mode: NULLABLE
            type: STRING
            id: video_tweet_flag
          - name: video_views_75
            fields: []
            alias: video_views_75
            length: 38
            fieldName: video_views_75
            mode: NULLABLE
            type: NUMBER
            id: video_views_75
          - name: video_views_50
            fields: []
            alias: video_views_50
            length: 38
            fieldName: video_views_50
            mode: NULLABLE
            type: NUMBER
            id: video_views_50
          - name: video_views_25
            fields: []
            alias: video_views_25
            length: 38
            fieldName: video_views_25
            mode: NULLABLE
            type: NUMBER
            id: video_views_25
          - name: media_type
            fields: []
            alias: media_type
            length: 16777216
            fieldName: media_type
            mode: NULLABLE
            type: STRING
            id: media_type
          - name: favorite_count
            fields: []
            alias: favorite_count
            length: 38
            fieldName: favorite_count
            mode: NULLABLE
            type: NUMBER
            id: favorite_count
          - name: total_followers
            fields: []
            alias: total_followers
            length: 38
            fieldName: total_followers
            mode: NULLABLE
            type: NUMBER
            id: total_followers
          target_loading: overwrite
          connection_id: 60ae6bc0ceb90c22c7fd32da
          drop_after: false
          target_type: table
          split_tables: 'no'
          block_db_type: snowflake
          target_table: tweet_master
          schema_id: '{BLOCK_SCHEMA}'
          use_standard_sql: false
          sql_query: "select\n'Twitter' as channel,\ntw.id as post_id,\nfull_text,\n\
            full_text as title_caption,\ndate(created_at) as date,\nto_timestamp(created_at)\
            \ as created_date,\naccount_id,\nuser_id as owner_id,\nuser_screen_name,\n\
            user_name as account_name,\nCAST(video_total_views as integer) as video_views,\n\
            CAST(video_views_100 as integer) as video_views_completed,\nCAST(impressions\
            \ as integer) as impressions, \nCAST(engagements as integer) as engagement,\
            \ \nCAST(retweets as integer) as retweets,\nCAST(replies as integer) as\
            \ replies,\nCAST(likes as integer) as likes,\nCAST(url_clicks as integer)\
            \ as url_clicks, \nCAST(follows as integer) as follows, \ncase when contains(full_text,\
            \ '@') then true else false end as tag_flag,\ncase when contains(full_text,\
            \ '#') then true else false end as hashtag_flag,\ncase when contains(full_text,\
            \ '?') then true else false end as question_flag,\ncase when contains(full_text,\
            \ '!') then true else false end as exclamation_flag,\nlength(full_text)\
            \ as tweet_text_length,\ncase when length(full_text)<=50 then '0-50'\n\
            when 50<length(full_text) and length(full_text)<=100 then '51-100'\nwhen\
            \ 100<length(full_text) and length(full_text)<=125 then '101-125'\nwhen\
            \ 125<length(full_text)then '126+' end as tweet_text_group_length,\ncase\
            \ when video_total_views = 0 then 'N' else 'Y' end as video_tweet_flag,\n\
            CAST(video_views_75 as integer) as video_views_75,\nCAST(video_views_50\
            \ as integer) as video_views_50,\nCAST(video_views_25 as integer) as video_views_25,\n\
            media_type,\nfavorite_count,\nCAST(user_followers_count AS integer) as\
            \ total_followers\nfrom {BLOCK_DB}.{BLOCK_SCHEMA}.tweet_details tw\ninner\
            \ join (\n  SELECT id,\n  lower(type) as media_type,\n  SUM(video_total_views)\
            \ as video_total_views,\n  SUM(video_views_100) as video_views_100,\n\
            \  SUM(video_views_75) as video_views_75,\n  SUM(video_views_50) as video_views_50,\n\
            \  SUM(video_views_25) as video_views_25,\n  SUM(impressions) as impressions,\n\
            \  SUM(engagements) as engagements,\n  SUM(retweets) as retweets,\n  SUM(replies)\
            \ as replies,\n  SUM(likes) as likes,\n  SUM(url_clicks) as url_clicks,\n\
            \  SUM(follows) as follows\n  FROM {BLOCK_DB}.{BLOCK_SCHEMA}.tweet_activity\n\
            \  GROUP BY id, type\n) tw_a\nON cast(tw_a.id as integer) = tw.id\nWHERE\
            \ tw.tweet_type is not null"
          split_interval: d
          query_priority: interactive
      - type: step
        isEnabled: true
        step_name: Combine all social channels
        block_primary_type: sql
        block_type: snowflake
        file_type: csv
        split_interval: d
        compression: none
        warning_mapping: true
        schema_id: '{BLOCK_SCHEMA}'
        drop_after: false
        query_priority: interactive
        execute_sql_command: false
        connection_id: 60ae6bc0ceb90c22c7fd32da
        target_table: fact_social
        split_tables: 'no'
        database: '{BLOCK_DB}'
        target_loading: overwrite
        target_type: table
        block_db_type: snowflake
        fields:
        - name: channel
          fields: []
          alias: channel
          length: 16777216
          fieldName: channel
          mode: NULLABLE
          type: STRING
          id: channel
        - name: ig_id
          fields: []
          alias: ig_id
          length: 16777216
          fieldName: ig_id
          mode: NULLABLE
          type: STRING
          id: ig_id
        - name: post_id
          isKey: true
          fields: []
          alias: post_id
          length: 16777216
          fieldName: post_id
          mode: NULLABLE
          type: STRING
          id: post_id
        - name: owner_id
          fields: []
          alias: owner_id
          length: 38
          fieldName: owner_id
          mode: NULLABLE
          type: NUMBER
          id: owner_id
        - name: account_id
          isKey: true
          fields: []
          alias: account_id
          length: 16777216
          fieldName: account_id
          mode: NULLABLE
          type: STRING
          id: account_id
        - name: account_name
          fields: []
          alias: account_name
          length: 16777216
          fieldName: account_name
          mode: NULLABLE
          type: STRING
          id: account_name
        - name: media_url
          fields: []
          alias: media_url
          length: 16777216
          fieldName: media_url
          mode: NULLABLE
          type: STRING
          id: media_url
        - name: permalink
          fields: []
          alias: permalink
          length: 16777216
          fieldName: permalink
          mode: NULLABLE
          type: STRING
          id: permalink
        - name: media_type
          fields: []
          alias: media_type
          length: 16777216
          fieldName: media_type
          mode: NULLABLE
          type: STRING
          id: media_type
        - name: post_description
          fields: []
          alias: post_description
          length: 16777216
          fieldName: post_description
          mode: NULLABLE
          type: STRING
          id: post_description
        - name: post_title
          fields: []
          alias: post_title
          length: 16777216
          fieldName: post_title
          mode: NULLABLE
          type: STRING
          id: post_title
        - name: date
          dateFormat: yyyy-mm-dd HH:MM:SS
          isKey: true
          fields: []
          alias: date
          length: 38
          fieldName: date
          mode: NULLABLE
          type: TIMESTAMP
          id: date
        - name: created_date
          dateFormat: yyyy-mm-dd HH:MM:SS
          fields: []
          alias: created_date
          length: 38
          fieldName: created_date
          mode: NULLABLE
          type: TIMESTAMP
          id: created_date
        - name: title_caption
          fields: []
          alias: title_caption
          length: 16777216
          fieldName: title_caption
          mode: NULLABLE
          type: STRING
          id: title_caption
        - name: video_views
          fields: []
          alias: video_views
          length: 38
          fieldName: video_views
          mode: NULLABLE
          type: NUMBER
          id: video_views
        - name: likes
          fields: []
          alias: likes
          length: 38
          fieldName: likes
          mode: NULLABLE
          type: NUMBER
          id: likes
        - name: comments
          fields: []
          alias: comments
          length: 38
          fieldName: comments
          mode: NULLABLE
          type: NUMBER
          id: comments
        - name: saved
          fields: []
          alias: saved
          length: 38
          fieldName: saved
          mode: NULLABLE
          type: NUMBER
          id: saved
        - name: reach
          fields: []
          alias: reach
          length: 38
          fieldName: reach
          mode: NULLABLE
          type: NUMBER
          id: reach
        - name: shares
          fields: []
          alias: shares
          length: 38
          fieldName: shares
          mode: NULLABLE
          type: NUMBER
          id: shares
        - name: impressions
          fields: []
          alias: impressions
          length: 38
          fieldName: impressions
          mode: NULLABLE
          type: NUMBER
          id: impressions
        - name: engagement
          fields: []
          alias: engagement
          length: 38
          fieldName: engagement
          mode: NULLABLE
          type: NUMBER
          id: engagement
        - name: is_hidden
          fields: []
          alias: is_hidden
          length: 38
          fieldName: is_hidden
          mode: NULLABLE
          type: BOOLEAN
          id: is_hidden
        - name: is_published
          fields: []
          alias: is_published
          length: 38
          fieldName: is_published
          mode: NULLABLE
          type: BOOLEAN
          id: is_published
        - name: other_clicks
          fields: []
          alias: other_clicks
          length: 38
          fieldName: other_clicks
          mode: NULLABLE
          type: NUMBER
          id: other_clicks
        - name: photo_view
          fields: []
          alias: photo_view
          length: 38
          fieldName: photo_view
          mode: NULLABLE
          type: NUMBER
          id: photo_view
        - name: link_clicks
          fields: []
          alias: link_clicks
          length: 38
          fieldName: link_clicks
          mode: NULLABLE
          type: NUMBER
          id: link_clicks
        - name: video_play_clicks
          fields: []
          alias: video_play_clicks
          length: 38
          fieldName: video_play_clicks
          mode: NULLABLE
          type: NUMBER
          id: video_play_clicks
        - name: favorite_count
          fields: []
          alias: favorite_count
          length: 38
          fieldName: favorite_count
          mode: NULLABLE
          type: NUMBER
          id: favorite_count
        - name: retweets
          fields: []
          alias: retweets
          length: 38
          fieldName: retweets
          mode: NULLABLE
          type: NUMBER
          id: retweets
        - name: page_fan_adds
          fields: []
          alias: page_fan_adds
          length: 38
          fieldName: page_fan_adds
          mode: NULLABLE
          type: NUMBER
          id: page_fan_adds
        - name: page_fan_count
          fields: []
          alias: page_fan_count
          length: 38
          fieldName: page_fan_count
          mode: NULLABLE
          type: NUMBER
          id: page_fan_count
        - name: page_fan_removes
          fields: []
          alias: page_fan_removes
          length: 38
          fieldName: page_fan_removes
          mode: NULLABLE
          type: NUMBER
          id: page_fan_removes
        - name: page_views
          fields: []
          alias: page_views
          length: 38
          fieldName: page_views
          mode: NULLABLE
          type: NUMBER
          id: page_views
        - name: page_consumptions
          fields: []
          alias: page_consumptions
          length: 38
          fieldName: page_consumptions
          mode: NULLABLE
          type: NUMBER
          id: page_consumptions
        - name: page_engaged_users
          fields: []
          alias: page_engaged_users
          length: 38
          fieldName: page_engaged_users
          mode: NULLABLE
          type: NUMBER
          id: page_engaged_users
        - name: total_followers
          fields: []
          alias: total_followers
          length: 38
          fieldName: total_followers
          mode: NULLABLE
          type: NUMBER
          id: total_followers
        - name: follows
          fields: []
          alias: follows
          length: 38
          fieldName: follows
          mode: NULLABLE
          type: NUMBER
          id: follows
        - name: page_impressions
          fields: []
          alias: page_impressions
          length: 38
          fieldName: page_impressions
          mode: NULLABLE
          type: NUMBER
          id: page_impressions
        - name: page_reach
          fields: []
          alias: page_reach
          length: 38
          fieldName: page_reach
          mode: NULLABLE
          type: NUMBER
          id: page_reach
        - name: page_fan_count_today
          fields: []
          alias: page_fan_count_today
          length: 38
          fieldName: page_fan_count_today
          mode: NULLABLE
          type: NUMBER
          id: page_fan_count_today
        use_standard_sql: false
        sql_query: 'SELECT

          channel,

          ig_id,

          TO_VARCHAR(post_id) as post_id,

          owner_id,

          account_id,

          account_name,

          media_url,

          permalink,

          media_type,

          null as post_description,

          null as post_title,

          date,

          created_date,

          title_caption,

          video_views,

          likes,

          comments,

          saved,

          reach,

          null as shares,

          impressions,

          engagement,

          null as is_hidden,

          null as is_published,

          null as other_clicks,

          null as photo_view,

          null as link_clicks,

          null as video_play_clicks,

          null as favorite_count,

          null as retweets,

          null as page_fan_adds,

          null as page_fan_count,

          null as page_fan_removes,

          null as page_views,

          null as page_consumptions,

          null as page_engaged_users,

          total_followers,

          follows,

          page_impressions,

          page_reach,

          null as page_fan_count_today

          from {BLOCK_DB}.{BLOCK_SCHEMA}.ig_master

          UNION ALL

          SELECT

          channel,

          null as ig_id,

          TO_VARCHAR(post_id) as post_id,

          null owner_id,

          account_id,

          account_name,

          null as media_url,

          permalink,

          media_type,

          post_description,

          post_title,

          date,

          created_date,

          title_caption,

          video_views,

          likes,

          comments,

          null as saved,

          reach,

          shares,

          impressions,

          engagement,

          is_hidden,

          is_published,

          other_clicks,

          photo_view,

          link_clicks,

          video_play_clicks,

          null as favorite_count,

          null as retweets,

          page_fan_adds,

          page_fan_count,

          page_fan_removes,

          page_views,

          page_consumptions,

          page_engaged_users,

          null as total_followers,

          null as follows,

          page_impressions,

          page_reach,

          page_fan_count_today

          from {BLOCK_DB}.{BLOCK_SCHEMA}.fb_master

          UNION ALL

          SELECT

          channel,

          null as ig_id,

          TO_VARCHAR(post_id) as post_id,

          owner_id,

          account_id,

          account_name,

          null as media_url,

          null as permalink,

          media_type,

          null as post_description,

          null as post_title,

          date,

          created_date,

          title_caption,

          video_views,

          likes,

          replies as comments,

          null as saved,

          null as reach,

          null as shares,

          impressions,

          engagement,

          null as is_hidden,

          null as is_published,

          null as other_clicks,

          null as photo_view,

          null as link_clicks,

          null as video_play_clicks,

          favorite_count,

          retweets,

          null as page_fan_adds,

          null as page_fan_count,

          null as page_fan_removes,

          null as page_views,

          null as page_consumptions,

          null as page_engaged_users,

          total_followers,

          follows,

          null as page_impressions,

          null as page_reach,

          null as page_fan_count_today

          from {BLOCK_DB}.{BLOCK_SCHEMA}.tweet_master'
      variables: {}
    schedule: {}
    notifications:
      on_warning:
        enabled: true
        email: '{NOTIFICATION_GROUP}'
      on_failure:
        enabled: true
        email: '{NOTIFICATION_GROUP}'
    name: Social Analytics Logic - Snowflake
    description: Imported by Rivery CLI
    type: logic

[cli-issue] Add to requirements: `setuptools_scm` must be v7.0.0 or lower

** CLI Version **
Rivery CLI, version 0.4.0

Describe the bug
Upgrading to setuptools_scm>=8.x causes pip install rivery-cli to fail. This is two-part: setuptools_scm>=8.x requires setuptools>=61. However, the requirements.txt asks for setuptools~=57.0.0.

If you upgrade both packages, you instead get an error with installing jsonschema-extended. It requires the older versions of setuptools and setuptools_scm. The error messages are below, but I wasn't able to get jsonschema-extended to install with the upgraded versions of setuptools and setuptools_scm.

To Reproduce
Simply upgrade your versions of setuptools and setuptools_scm to latest versions and try to reinstall rivery-cli. Use pip install --ignore-installed --no-cache-dir rivery-cli so the cached versions of packages are ignored.

Expected behavior
The fix is either to require setuptools_scm<=7.0.0 and setuptools==57.0.0, or to find a way to install rivery-cli with the most recent versions of these packages. Is jsonschema-extended even necessary to have in requirements.txt? Perhaps remove it.

OS
OS: Ventura 13.3, Apple Silicon Chip (M2 Pro).

** Python Version **
Python 3.9.18
Miniconda 3 virtual environment


>>> pip install rivery-cli
Collecting rivery-cli
  Using cached rivery_cli-0.4.0-py3-none-any.whl (36 kB)
Collecting click>=7.1.2 (from rivery-cli)
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting jsonschema>=3.2.0 (from rivery-cli)
  Using cached jsonschema-4.20.0-py3-none-any.whl.metadata (8.1 kB)
Collecting jsonschema-extended>=0.6 (from rivery-cli)
  Using cached jsonschema-extended-0.6.tar.gz (117 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
 
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [30 lines of output]
      /Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/__init__.py:80: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
      !!
     
              ********************************************************************************
              Requirements should be satisfied by a PEP 517 installer.
              If you are using pip, you can try `pip install --use-pep517`.
              ********************************************************************************
     
      !!
        dist.fetch_build_eggs(dist.setup_requires)
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-install-uwezsxuz/jsonschema-extended_20526dffc79b48b0b4597a82aeb1a564/setup.py", line 25, in <module>
          setup(
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 147, in setup
          _setup_distribution = dist = klass(attrs)
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/dist.py", line 303, in __init__
          _Distribution.__init__(self, dist_attrs)
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 283, in __init__
          self.finalize_options()
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/dist.py", line 654, in finalize_options
          ep(self)
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/setuptools/dist.py", line 674, in _finalize_setup_keywords
          ep.load()(self, [ep.name](http://ep.name/), value)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-install-uwezsxuz/jsonschema-extended_20526dffc79b48b0b4597a82aeb1a564/.eggs/setuptools_scm-8.0.4-py3.9.egg/setuptools_scm/_integration/setuptools.py", line 80, in version_keyword
          assert isinstance(value, dict), "version_keyword expects a dict or True"
      AssertionError: version_keyword expects a dict or True
      [end of output]
 
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

>>> pip install --use-pep517 rivery-cli              
Collecting rivery-cli
  Using cached rivery_cli-0.4.0-py3-none-any.whl (36 kB)
Collecting click>=7.1.2 (from rivery-cli)
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting jsonschema>=3.2.0 (from rivery-cli)
  Using cached jsonschema-4.20.0-py3-none-any.whl.metadata (8.1 kB)
Collecting jsonschema-extended>=0.6 (from rivery-cli)
  Using cached jsonschema-extended-0.6.tar.gz (117 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
 
  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [29 lines of output]
      Traceback (most recent call last):
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/Users/spencerhalverson/miniconda3/envs/rivery/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 149, in prepare_metadata_for_build_wheel
          return hook(metadata_directory, config_settings)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 366, in prepare_metadata_for_build_wheel
          self.run_setup()
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 480, in run_setup
          super(_BuildMetaLegacyBackend, self).run_setup(setup_script=setup_script)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 25, in <module>
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 147, in setup
          _setup_distribution = dist = klass(attrs)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 303, in __init__
          _Distribution.__init__(self, dist_attrs)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 283, in __init__
          self.finalize_options()
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 654, in finalize_options
          ep(self)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 674, in _finalize_setup_keywords
          ep.load()(self, [ep.name](http://ep.name/), value)
        File "/private/var/folders/dj/6cjl_pl90pv86pbtj21cj8hm0000gn/T/pip-build-env-f83dmto1/normal/lib/python3.9/site-packages/setuptools_scm/_integration/setuptools.py", line 80, in version_keyword
          assert isinstance(value, dict), "version_keyword expects a dict or True"
      AssertionError: version_keyword expects a dict or True
      [end of output]

[cli-issue] - When activities logs are outputted as .csv, they look malformed when opened with excel.

** CLI Version **

  • 0.3.3

Describe the bug
Extracting activity logs as .csv's results in a malformed file in the destination path.

To Reproduce
Pull the activity logs of a recent runId as a .csv and examine the structure of the file when you open it in a tool like excel.

> rivery activities logs fetch --runId 38a0f6a0e0994a319fcdc0b34bb300fc --filePath C:/Users/Ujjwal-Work/Desktop/Rivery/logs/webinar_extracted_logs/test.csv

image

Expected behavior
I want the logs to look like the ones that come out of the UI when one clicks the "download logs" button.

OS
Windows 10

** Python Version **
3.8.10

Additional context
Need this for webinar. Exporting out as a .txt file, the file looks okay. But the malforming only happens when I try to export it as a .csv that I want to open with excel.

[cli-issue] waitForEnd raises a timeout error

** CLI Version **

  • Hit rivery --version and copy here.
    0.3.3

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

When hitting the rivery river run fire --riverId=<riverId> --waitForEnd it seems like there's a timeout without default issue there.

To Reproduce
try to hit

> rivery river run fire --riverId=<river id> --waitForEnd

Expected behavior
The --waitForEnd should end for end of the run :)

** OS **
Win 10

Is that project died?

I've noticed this project doesn't receive any update for almost 11 month. I've tried to import some existing rivers from my dashboard but I got some issues like - 404 - file doesn't exist. It looks like the api interface used by the CLI is outdated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.