semvec/pypi-packages huggingface dataset:
tridentstream 1.0.8
Media Streaming Server
License: MIT

================================
Tridentstream Media Server
================================

Stream everything...

.. contents::


WARNING! ALPHA SOFTWARE
--------------------------------

Tridentstream is currently alpha software and this means stuff is broken and things change.
It also means that any plugin you make or use can break with any given update.

Feel free to report bugs and potentially missing features so we can move the whole project into beta.
You can also take this chance to move the whole project in a direction you like.

Due to the Alpha status (unstable interfaces between plugins internally) the tests are quite sparse. So things broken might not be caught automatically.

The Alpha status includes the documentation that might be severely lacking or completely missing regarding certain aspects.


Requirements
--------------------------------

* Only tested on Linux
* Python 3.7 or higher

Optional Requirements

* `Organized data <UNORGANIZED-DOCS.rst#organizing-data>`__
* `Friends with organized data <UNORGANIZED-DOCS.rst#sharing-data>`__
* `Other external data-sources <UNORGANIZED-DOCS.rst#-searchers>`__


Installation guides
--------------------------------

Get this party going with a basic setup,
`check out the ways to install in the setups repostiory <https://github.com/tridentstream/setups>`__


Setting Up
--------------------------------

First time you login, a user is created with the info you logged in with. That is an administrative user.

After you logged in, head over to the Admin page, click "Plugins".

The first plugin type you want to add is a new data source, that's the plugins on the right side of the page.
This can be one from local or remote data, or it can be sourced from website you have access to (i.e. a searcher).

Find one in the list that fits your need and add it. Then add a Section or a Store that works with your input.

After you have finished changing a "Sections" or "Store", remember to "Commit changes"


External Players
---------------------------------

Tridentstream Media Server does not really play anything by itself but can interact with some external players.

Under "Features", "full" means that it supports complete remote control and tracking through Tridentstream Media Server,
i.e. you can pause and play and it reports back how much you have watched of a given media item.


.. list-table:: Player support
   :header-rows: 1

   * - Name
     - Playback tracking
     - Sections access
     - Store access
     - Relation
     - Note
     - Link
   * - Kodi plugin
     - Yes
     - Yes
     - No
     - First-party
     -
     - `Link <https://kodi.tridenstream.org>`__
   * - StreamProtocol
     - No
     - N/a
     - N/a
     - First-party
     - Only Windows for now
     - `Link <https://streamprotocol.tridenstream.org>`__


License
---------------------------------

MIT
xcut 0.0.11
Xcut is an Enhanced cut command, which is used to help grep column.
License: MIT

# Xcut
Xcut is an Enhanced cut command, which is used to help grep column.

[![](https://img.shields.io/pypi/pyversions/xcut.svg?longCache=True)](https://pypi.org/pypi/xcut/)
[![](https://img.shields.io/pypi/v/xcut.svg?maxAge=36000)](https://pypi.org/pypi/xcut/)
[![Build Status](https://travis-ci.org/ahuigo/xcut.svg?branch=master)](https://travis-ci.org/ahuigo/xcut)

## Install

    pip install xcut
    pip3 install xcut

    xcut --help

## Usage
Let's test a file named `test.csv`

    > ~ cat test/test.csv
    name,gender,job
    Jack,male,coder
    Lucy,female,artist

Cut fields

    > ~ xcut -f job,name test/test.csv
    job,name
    coder,Jack
    artist,Lucy

### Set title type
The default title type is head: `-t head` 

    > ~ xcut -f name,gender test/test.csv

Set title type to index: `-t index`

    > ~ xcut -f 1,3 -t index  test/test.csv
    1,3
    name,job
    Jack,coder
    Lucy,artist

Set title type to custom(`--titles TITLES`)

    > ~ xcut -f '职业,姓名' --titles '姓名,性别,职业' test/test.csv -od $'\t'
    职业 姓名
    job	name
    coder	Jack
    artist	Lucy

Set title type to kv(`-t kv`)

    > ~ echo 'key1=v1,key2=v2,key3=v3' | xcut -f key3,key2 -t kv
    key3,key2
    v3,v2

### Set input delimiter(d)

    > ~ xcut -f job,name test/test.csv -d ',' -od '`'
    job`name
    coder`Jack
    artist`Lucy

### Set output delimiter(od)

    > ~ xcut -f job,name test/test.csv -od '`' 
    job`name
    coder`Jack
    artist`Lucy

### pretty output 
You could set the output delimiter(od), also you can print it via `pretty`

    > ~ xcut -f '职业,姓名' --titles '姓名,性别,职业' test/test.csv -od $'\t\t' --pretty
    职业                  姓名
    ----------------------------------------
    job                 name
    coder               Jack
    artist              Lucy

### Use csv format
Not only you could  parse csv format file with `--from-csv`:

    $ echo 'Lucy,"98,99",23' | python xcut -f scores,name --titles name,scores,age
    scores,name
    "98,Lucy

    $ echo 'Lucy,"98,99",23' | python xcut -f scores,name --titles name,scores,age --from-csv
    scores,name
    98,99,Lucy

You could also save the output to csv format  with(`--to-csv`)

    $ echo 'Lucy,"98,99",23' | python xcut -f scores,name --titles name,scores,age --from-csv --to-csv
    scores,name
    "98,99",Lucy

## Required
1. python>=3.5
2. click
sloot.object 1.5.1
Object utils to make life easier
License: MIT
Keywords: tools,object,utils,dict

***************************
sloot.object - Object tools
***************************

.. image:: https://travis-ci.org/samjy/sloot.object.svg?branch=master
   :target: https://travis-ci.org/samjy/sloot.object


Basic usage
===========

::

  >>> from sloot.object import dictobj
  >>> d = dictobj({'a': 'a', 'b': 'b'}, c='c')
  >>> print(d)
  dictobj({'a': 'a', 'b': 'b', 'c': 'c'})
  >>> d.a
  'a'
  >>> d['a']
  'a'
  >>> d.a = 3
  >>> d.a
  3
  >>> d['a'] = 42
  >>> d.a
  42
  >>> print(d)
  dictobj({'a': 42, 'c': 'c', 'b': 'b'})
  >>> print(dict(d))
  {'a': 42, 'c': 'c', 'b': 'b'}



Behavior of setattr in inherited objects
========================================

::

  >>> class T(dictobj):
  ...   classvar = 'classvar'
  ...   def f(self):
  ...     return 'f'
  ...   @property
  ...   def prop(self):
  ...     return getattr(self, '_prop', 'prop')
  ...   @prop.setter
  ...   def prop(self, value):
  ...     self._prop = value
  ...


- methods and class attributes are not overwritten and go to the dict::

    >>> t = T({'classvar': 1, 'f': 2, 'prop': 3})
    >>> t.classvar  # access the class attribute
    'classvar'
    >>> t['classvar']  # access the dict entry
    1
    >>> t.classvar = 5  # we don't overwrite class attributes, this goes to dict
    >>> t.classvar  # this is the class attribute
    'classvar'
    >>> t['classvar']
    5
    >>> t.f  # access the class method
    <bound method T.f of T({'classvar': 1, 'f': 2, 'prop': 3})>
    >>> t['f']  # access the dict entry
    2
    >>> t.f = 4  # we don't overwrite the method, this goes to the dict
    >>> t.f
    <bound method T.f of T({'classvar': 1, 'f': 2, 'prop': 3})>
    >>> t['f']
    4

- properties getter and setter are used::

    >>> t.prop  # get the property
    'prop'
    >>> t['prop']  # get the dict entry
    3
    >>> t.prop = 'newprop'  # use property setter
    >>> t.prop
    'newprop'
    >>> t['prop']
    3

- otherwise the dict is updated::

    >>> t.a = 42
    >>> t['a']
    42
    >>> t.a
    42


.. EOF