精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

2021 年發布 Python 軟件包的正確姿勢

開發 后端
如果您像我一樣,偶爾編寫一個有用的python實用小程序,并希望與您的同事共享。做到這一點的最好方法是制作一個Python軟件包:它易于安裝,并且可以避免進行拷貝操作。

 [[394524]]

本文轉載自微信公眾號「Python中文社區」,作者Anton  。轉載本文請聯系Python中文社區公眾號。  

如果您像我一樣,偶爾編寫一個有用的python實用小程序,并希望與您的同事共享。做到這一點的最好方法是制作一個Python軟件包:它易于安裝,并且可以避免進行拷貝操作。

您可能會認為創建軟件包很麻煩。其實現在已經不會這樣了。我將通過此分步指南進行說明。只需執行三個主要步驟(以及一系列可選步驟),并輔以幾個GitHub鏈接即可。

1.初始化

我們將創建podsearch - 一種在iTunes中搜索播客的實用程序。讓我們創建一個目錄和一個虛擬環境:

  1. $ mkdir podsearch 
  2. $ cd podsearch 
  3. $ python3 -m venv env 
  4. $ . env/bin/activate 

定義一個最小的包結構:

  1. ├── .gitignore 
  2. └── podsearch 
  3.     └── __init__.py 
  4. """Let's find some podcasts!""" 
  5.  
  6.  __version__ = "0.1.0" 
  7.  
  8.  
  9.  def search(namecount=5): 
  10.      """Search podcast by name.""" 
  11.      raise NotImplementedError() 

2.測試包

用Python創建一個包曾經是一個麻煩的任務。幸運的是,如今有一個很棒的 flit (https://flit.readthedocs.io/en/latest/)小程序可以簡化所有操作。讓我們安裝它:

  1. pip install flit 

并創建軟件包描述:

  1. $ flit init 
  2. Module name [podsearch]: 
  3. Author [Anton Zhiyanov]: 
  4. Author email [m@antonz.org]: 
  5. Home page [https://github.com/nalgeon/podsearch-py]: 
  6. Choose a license (see http://choosealicense.com/ for more info) 
  7. 1. MIT - simple and permissive 
  8. 2. Apache - explicitly grants patent rights 
  9. 3. GPL - ensures that code based on this is shared with the same terms 
  10. 4. Skip - choose a license later 
  11. Enter 1-4 [1]: 1 
  12.  
  13. Written pyproject.toml; edit that file to add optional extra info. 

pyproject.toml

Flit已創建pyproject.toml - 項目元數據文件。它已經具有將程序包發布到公共存儲庫-PyPI所需的一切。

注冊TestPyPi(測試存儲庫)和PyPI(主要存儲庫)。它們是完全獨立的,因此您將需要兩個帳戶。

在~/ .pypirc中設置對存儲庫的訪問權限:

  1. [distutils] 
  2. index-servers = 
  3.   pypi 
  4.   pypitest 
  5.  
  6. [pypi] 
  7. username: nalgeon  # replace with your PyPI username 
  8.  
  9. [pypitest] 
  10. repository: https://test.pypi.org/legacy/ 
  11. username: nalgeon  # replace with your TestPyPI username 

并將軟件包發布到測試存儲庫:

  1. $ flit publish --repository pypitest 
  2. Found 4 files tracked in git 
  3. ... 
  4. Package is at https://test.pypi.org/project/podsearch/ 

完畢!該軟件包可在TestPyPi上獲得。

3.公開軟件包

讓我們改進代碼,以便它能夠實際搜索播客:

  1. # ... 
  2.  
  3. SEARCH_URL = "https://itunes.apple.com/search" 
  4.  
  5. @dataclass 
  6. class Podcast: 
  7.     """Podcast metadata.""" 
  8.  
  9.     id: str 
  10.     name: str 
  11.     author: str 
  12.     url: str 
  13.     feed: Optional[str] = None 
  14.     category: Optional[str] = None 
  15.     image: Optional[str] = None 
  16.  
  17.  
  18. def search(name: str, limit: int = 5) -> List[Podcast]: 
  19.     """Search podcast by name.""" 
  20.     params = {"term"name"limit": limit, "media""podcast"
  21.     response = _get(url=SEARCH_URL, params=params) 
  22.     return _parse(response) 

并發布到主存儲庫-PyPI。僅在您的程序包中包含有用的代碼后,才執行此步驟。不要發布無效的程序包和存根。

  1. flit publish 

發布完畢!是時候與同事分享了。為了使軟件包易于使用,我建議您再執行以下幾個步驟。

A.自述文件Readme和變更日志changelog

沒人喜歡寫文檔。但是,如果沒有文檔,人們不太可能會想要安裝您的軟件包,因此我們需要添加README.md和CHANGELOG.md。

  • README.md
  • CHANGELOG.md

將README添加到pyproject.toml,以便PyPI在軟件包頁面上顯示它:

  1. description-file = "README.md" 

還要指定受支持的最低Python版本:

  1. requires-python = ">=3.7" 

更新__init__.py中的版本,并通過flit publish發布軟件包:

B.Linters和tests

我們來考慮一下格式設置(black),測試覆蓋率(coverage),代碼質量(flake8,pylint,mccabe)和靜態分析(mypy)。我們將通過tox處理一切。

  1. $ pip install black coverage flake8 mccabe mypy pylint pytest tox 

在tox.ini中創建tox配置:

  1. [tox] 
  2. isolated_build = True 
  3. envlist = py37,py38,py39 
  4.  
  5. [testenv] 
  6. deps = 
  7.     black 
  8.     coverage 
  9.     flake8 
  10.     mccabe 
  11.     mypy 
  12.     pylint 
  13.     pytest 
  14. commands = 
  15.     black podsearch 
  16.     flake8 podsearch 
  17.     pylint podsearch 
  18.     mypy podsearch 
  19.     coverage erase 
  20.     coverage run --include=podsearch/* -m pytest -ra 
  21.     coverage report -m 

tox.ini

并運行所有檢查:

  1. $ tox -e py39 
  2. ... 
  3. py39 run-test: commands[0] | black podsearch 
  4. All done!  
  5. ... 
  6. py39 run-test: commands[2] | pylint podsearch 
  7. Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00) 
  8. ... 
  9. py39 run-test: commands[6] | coverage report -m 
  10. TOTAL 100% 
  11. ... 
  12. py39: commands succeeded 
  13. congratulations :) 

linters檢測通過,測試也通過了,覆蓋率是100%。

C.云構建

每個可靠的開源項目在每次提交后都會進行云測試,因此我們也將這樣做。一個很好的附加效果是自述文件中有漂亮的徽章。

讓我們使用GitHub Actions構建項目,使用Codecov檢查測試覆蓋率,并使用Code Climate檢查代碼質量。

您將必須注冊Codecov和Code Climate(均支持GitHub登錄)并在設置中啟用軟件包存儲庫。

之后,將GitHub Actions構建配置添加到.github / workflows / build.yml:

  1. # ... 
  2. jobs: 
  3.     build: 
  4.         runs-on: ubuntu-latest 
  5.         strategy: 
  6.             matrix: 
  7.                 python-version: [3.7, 3.8, 3.9] 
  8.  
  9.         env: 
  10.             USING_COVERAGE: "3.9" 
  11.  
  12.         steps: 
  13.             - name: Checkout sources 
  14.               uses: actions/checkout@v2 
  15.  
  16.             - nameSet up Python 
  17.               uses: actions/setup-python@v2 
  18.               with
  19.                   python-version: $ 
  20.  
  21.             - name: Install dependencies 
  22.               run: | 
  23.                   python -m pip install --upgrade pip 
  24.                   python -m pip install black coverage flake8 flit mccabe mypy pylint pytest tox tox-gh-actions 
  25.  
  26.             - name: Run tox 
  27.               run: | 
  28.                   python -m tox 
  29.  
  30.             - name: Upload coverage to Codecov 
  31.               uses: codecov/codecov-action@v1 
  32.               if: contains(env.USING_COVERAGE, matrix.python-version) 
  33.               with
  34.                   fail_ci_if_error: true 

build.yml

就像我們前面一樣,GitHub通過tox進行測試。tox-gh-actions軟件包和USING_COVERAGE設置可確保tox使用與strategy.matrix所需的 GitHub Actions 相同的 Python 版本。

最后一步將測試覆蓋率發送給Codecov。Code Climate不需要單獨的步驟-它會自動發現存儲庫更改。

現在,一分鐘內提交,推送并享受結果。并且讓每個人也喜歡向README.md添加徽章:

  1. [![PyPI Version][pypi-image]][pypi-url] 
  2. [![Build Status][build-image]][build-url] 
  3. [![Code Coverage][coverage-image]][coverage-url] 
  4. [![Code Quality][quality-image]][quality-url] 
  5.  
  6. ... 
  7.  
  8. <!-- Badges --> 
  9.  
  10. [pypi-image]: https://img.shields.io/pypi/v/podsearch 
  11. [pypi-url]: https://pypi.org/project/podsearch/ 
  12. [build-image]: https://github.com/nalgeon/podsearch-py/actions/workflows/build.yml/badge.svg 
  13. [build-url]: https://github.com/nalgeon/podsearch-py/actions/workflows/build.yml 
  14. [coverage-image]: https://codecov.io/gh/nalgeon/podsearch-py/branch/main/graph/badge.svg 
  15. [coverage-url]: https://codecov.io/gh/nalgeon/podsearch-py 
  16. [quality-image]: https://api.codeclimate.com/v1/badges/3130fa0ba3b7993fbf0a/maintainability 
  17. [quality-url]: https://codeclimate.com/github/nalgeon/podsearch-py 

是不是很酷?

D.任務自動化

tox很好,但對于開發來說不是很方便。運行單個命令(例如pylint,coverage等)的速度更快。但是它們非常冗長,因此我們將一些無意義的操作進行自動化處理。

讓我們為Makefile的頻繁操作創建簡短的別名:

  1. .DEFAULT_GOAL := help 
  2. .PHONY: coverage deps help lint push test 
  3.  
  4. coverage:  ## Run tests with coverage 
  5.  coverage erase 
  6.  coverage run --include=podsearch/* -m pytest -ra 
  7.  coverage report -m 
  8.  
  9. deps:  ## Install dependencies 
  10.  pip install black coverage flake8 mccabe mypy pylint pytest tox 
  11.  
  12. lint:  ## Lint and static-check 
  13.  flake8 podsearch 
  14.  pylint podsearch 
  15.  mypy podsearch 
  16.  
  17. push:  ## Push code with tags 
  18.  git push && git push --tags 
  19.  
  20. test:  ## Run tests 
  21.  pytest -ra 

Makefile

這是我們的任務:

  1. $ make help 
  2. Usage: make [task] 
  3.  
  4. task                 help 
  5. ------               ---- 
  6. coverage             Run tests with coverage 
  7. deps                 Install dependencies 
  8. lint                 Lint and static-check 
  9. push                 Push code with tags 
  10. test                 Run tests 
  11. help                 Show help message 

為了使代碼更簡潔,請使用make調用替換原始的build.yml步驟:

  1. name: Install dependencies 
  2.   run: | 
  3.       make deps 
  4.  
  5. name: Run tox 
  6.   run: | 
  7.       make tox 

E.云發布

GitHub有能力為我們運行flit publish。讓我們創建一個單獨的工作流程:

  1. name: publish 
  2.  
  3. on
  4.     release: 
  5.         types: [created] 
  6.  
  7. jobs: 
  8.     publish: 
  9.         runs-on: ubuntu-latest 
  10.         steps: 
  11.             - name: Checkout sources 
  12.               uses: actions/checkout@v2 
  13.  
  14.             - nameSet up Python 
  15.               uses: actions/setup-python@v2 
  16.               with
  17.                   python-version: "3.9" 
  18.  
  19.             - name: Install dependencies 
  20.               run: | 
  21.                   make deps 
  22.  
  23.             - name: Publish to PyPi 
  24.               env: 
  25.                   FLIT_USERNAME: ${{ secrets.PYPI_USERNAME }} 
  26.                   FLIT_PASSWORD: ${{ secrets.PYPI_PASSWORD }} 
  27.               run: | 
  28.                   make publish 

publish.yml

在存儲庫設置(Settings > Secrets > New repository secret)中設置了PYPI_USERNAME和PYPI_PASSWORD。使用您的PyPi用戶名和密碼,甚至更好的-API令牌。

現在,一旦創建新版本,GitHub將自動發布該軟件包。

您的軟件包已準備就緒!它具有人們夢寐以求的一切:干凈的代碼,清晰的文檔,測試和云構建。是時候告訴你的同事和朋友了。

這些設置將使您的 Python 軟件包變得AWESOME:

  • pyproject.toml
  • tox.ini
  • Makefile
  • build.yml
  • publish.yml 

 

責任編輯:武曉燕 來源: Python中文社區
相關推薦

2024-01-26 12:35:25

JavaScript項目軟件包

2022-11-07 16:53:53

PipPython軟件包

2017-08-21 11:13:43

LinuxSnapcraft Snap軟件包

2019-11-26 17:29:15

Adobe

2016-02-16 13:21:33

2018-06-22 10:05:04

Arch LinuxDEB軟件包

2010-02-05 14:46:20

Ubuntu軟件包

2017-02-23 15:37:44

OptionObject容器

2016-05-09 10:41:03

算法分析開發

2018-01-11 15:31:39

命令Linux關機

2020-02-24 15:26:40

Python短信免費

2023-01-06 08:24:00

PandasPython

2017-09-14 14:30:47

LinuxSublime Tex編輯器

2011-04-30 16:56:45

Windows PhoiOS

2010-01-07 17:32:09

2019-09-25 09:20:33

機器學習Python數據科學

2017-07-10 13:09:45

前端Flexbox

2017-03-16 11:39:33

Openstack源碼姿勢

2023-01-30 07:41:43

2021-09-13 12:45:08

Ubuntu 20.0PythonLinux
點贊
收藏

51CTO技術棧公眾號

另类一区二区| 精品国自产在线观看| 欧美亚洲国产一区| 欧美一区二区国产| 国产精品专区在线| 波多野结衣在线网站| 国产美女久久久久| 欧美亚洲午夜视频在线观看| 亚洲女同二女同志奶水| 99亚洲乱人伦aⅴ精品| 色哟哟在线观看一区二区三区| 亚洲一区不卡在线| 熟妇高潮一区二区三区| 另类调教123区| 午夜精品久久久久久久久久久久| 亚洲毛片亚洲毛片亚洲毛片| 亚洲成人五区| 欧美影院午夜播放| 2018日日夜夜| 日本中文字幕在线视频| 91原创在线视频| 亚洲jizzjizz日本少妇| 日本精品入口免费视频| 欧美亚洲不卡| 日韩在线视频网站| 少妇按摩一区二区三区| 日韩一区二区三区四区在线| 麻豆网站在线免费观看| 91片在线免费观看| 91久久大香伊蕉在人线| 国产乡下妇女三片| 亚洲三级观看| 久久99精品视频一区97| 欧美xxxooo| 欧美激情在线免费| 亚洲福利视频在线| 在线观看一区二区三区视频| 欧美国产视频| 欧美性生交片4| 亚洲国产精品毛片av不卡在线| 黄视频在线免费看| 亚洲视频你懂的| 一级二级三级欧美| 成人高清网站| 91色婷婷久久久久合中文| 99理论电影网| 精品人妻伦一二三区久久 | 99精品视频一区二区三区| 亚洲一区二区三区在线视频| 91 中文字幕| 美腿丝袜在线亚洲一区| 国产精品一区二区久久国产| 99re这里只有精品在线| 日韩国产欧美在线播放| 国产成人精品a视频一区www| 亚洲av中文无码乱人伦在线视色| 99国产精品久久久久久久| 久久免费精品视频| 精品无码一区二区三区电影桃花| 国产精品激情电影| 欧美极品少妇xxxxⅹ喷水| 麻豆疯狂做受xxxx高潮视频| 亚洲大全视频| 欧美xxxx做受欧美.88| 精国产品一区二区三区a片| 你懂的亚洲视频| 欧美精品在线播放| 懂色av.com| 亚洲欧美不卡| 国产精品久久中文| 91高潮大合集爽到抽搐| 国产一区二区电影| 99国精产品一二二线| 老牛影视av牛牛影视av| 91捆绑美女网站| 日韩av电影在线观看| aiai在线| 亚洲综合区在线| 久久综合色视频| 欧美色片在线观看| 欧美一区二区三区在线看| 日韩大尺度视频| 欧美性猛交xxxx乱大交少妇| 国产一二三四视频| 成人福利免费在线观看| 亚洲成在人线av| 添女人荫蒂视频| 在线免费观看麻豆| 国产麻豆一区| 日韩视频免费观看高清完整版| 国产精久久久久| 亚洲伊人春色| 久久综合免费视频影院| 国产精品成人网站| 日韩不卡免费视频| 99久久国产免费免费| 神马久久久久久久久久| 国产欧美一区二区在线| 91成人在线视频观看| a毛片不卡免费看片| 色8久久人人97超碰香蕉987| 婷婷中文字幕在线观看| 欧美一区二区三区久久| 日韩亚洲精品视频| 日本一级淫片免费放| 久久超碰97人人做人人爱| 成人午夜电影免费在线观看| 都市激情一区| 偷拍与自拍一区| 看看黄色一级片| 亚洲大片精品免费| 美女福利视频一区| 日本成人一级片| 成a人片国产精品| 99re99热| 日韩欧美少妇| 日韩精品中文字幕有码专区| 欧洲第一无人区观看| 久久精品道一区二区三区| 999国产在线| av免费观看一区二区| 午夜欧美视频在线观看| www.色就是色.com| 欧美日韩在线网站| 2019中文字幕在线观看| 亚洲免费不卡视频| 亚洲免费三区一区二区| 在线观看亚洲色图| 精品久久电影| 日韩av123| 手机福利在线| 午夜精品久久久久久久| 国产精久久久久| 欧美成人69av| 亚洲精品日韩激情在线电影| 秋霞影院午夜丰满少妇在线视频| 色成人在线视频| www.av欧美| 久久激情网站| 欧洲成人一区二区| 久久毛片亚洲| 亚洲日本aⅴ片在线观看香蕉| 日本系列第一页| 暴力调教一区二区三区| 婷婷五月综合缴情在线视频| www.豆豆成人网.com| 久久99亚洲热视| 精品人妻无码一区二区色欲产成人| 国产精品超碰97尤物18| 手机看片一级片| 91欧美日韩| 91久久久久久国产精品| www在线视频| 日韩一二在线观看| 国产一级二级毛片| 9色porny自拍视频一区二区| 国产午夜福利100集发布| 欧美一区 二区| 日本成人激情视频| 国产成人天天5g影院在线观看| 色偷偷久久人人79超碰人人澡| 六月婷婷七月丁香| 蜜桃视频免费观看一区| 中文字幕人成一区| 日韩精品一区二区三区中文| 韩国三级电影久久久久久| 色呦呦中文字幕| 色8久久人人97超碰香蕉987| 欧美另类69xxxx| 狠狠色综合日日| 日本男女交配视频| 婷婷精品在线观看| 国产日韩精品在线| 欧美人与牲禽动交com| 日韩激情av在线免费观看| 免费av中文字幕| 亚洲欧美精品午睡沙发| 捆绑凌虐一区二区三区| 视频精品一区二区| 亚洲精品偷拍视频| 久久久久观看| 国产精品久久久久久久久久尿 | 久久久久青草大香线综合精品| 麻豆av免费在线| 欧美aaaa视频| 国产精品免费一区二区三区在线观看| 国产极品美女高潮无套嗷嗷叫酒店| 中文字幕综合| 欧美激情中文字幕乱码免费| 日本韩国一区| 欧美丰满少妇xxxxx高潮对白| 久久精品视频9| 欧美高清在线一区二区| 免费黄视频在线观看| 美女诱惑一区| 成人在线免费高清视频| 怕怕欧美视频免费大全| 97国产超碰| 在线成人视屏| 欧美极品欧美精品欧美视频| 天堂中文а√在线| 亚洲精品美女在线观看播放| 国产又粗又猛又爽又黄的| 欧美日韩国产在线看| 中文字幕在线观看2018| 91偷拍与自偷拍精品| 色黄视频免费看| 日韩中文字幕区一区有砖一区 | 亚洲精品国产综合久久| 亚洲网站在线免费观看| 精品久久久久久久久久久久久久| 永久av免费网站| 久久久久久99精品| 天堂www中文在线资源| 精品一区二区免费看| 国产午夜福利视频在线观看| 欧美网站在线| 中国 免费 av| 日韩久久精品| 秋霞在线观看一区二区三区| 国产一区在线电影| 7777精品伊久久久大香线蕉语言| 日本美女久久| 日本中文字幕不卡免费| 免费毛片b在线观看| 一区二区成人在线观看| 在线综合视频播放| 美女久久久久久久久久| 国产成人久久精品77777最新版本| 能看的毛片网站| 国产亚洲激情| 福利在线一区二区| 亚洲精品一二三区区别| 亚洲欧美日韩综合一区| 一本色道久久综合亚洲精品酒店| 国产麻豆日韩| 高潮按摩久久久久久av免费| 91视频在线免费观看| 国产不卡精品在线| 91麻豆国产语对白在线观看| 四虎影视成人精品国库在线观看| 国产精品美女主播在线观看纯欲| 欧美成人性网| 国产精品99久久99久久久二8| 在线手机中文字幕| 欧美在线激情视频| 在线观看福利电影| 51色欧美片视频在线观看| 美女搞黄视频在线观看| 97超级碰在线看视频免费在线看 | 国产97免费视| 日本电影欧美片| 丝袜诱惑制服诱惑色一区在线观看 | 91九色视频在线| 欧美视频在线视频精品| 国产精品一二三视频| 欧美视频第一| 91九色露脸| 激情av综合| 蜜桃日韩视频| 日韩精品电影| 黄色网络在线观看| 亚洲一级一区| 激情五月开心婷婷| 蜜桃精品视频在线观看| 做a视频在线观看| 国产精品一区在线观看乱码| 亚洲妇女无套内射精| 99久久免费精品| 国产jk精品白丝av在线观看| 国产精品大尺度| 久久久一二三区| 欧美日韩色婷婷| 中文字幕一区二区三区四区视频 | 少妇极品熟妇人妻无码| 99re66热这里只有精品3直播| 亚洲精品手机在线观看| 亚洲黄网在线观看| 精品久久亚洲| 精品一区二区免费看| 亚洲国产毛片完整版| 国产亚洲精品美女久久久m| 欧美色图校园春色| 红桃视频国产精品| 女性女同性aⅴ免费观女性恋| 国产又黄又爽又无遮挡| 亚洲成人动漫一区| 久久国产视频一区| 欧美理论片在线| 神马午夜电影一区二区三区在线观看| 亚洲欧美视频在线| 综合久久2o19| 国产91色在线| 亚洲一区二区三区中文字幕在线观看| 精品一区久久| 亚洲影视一区二区三区| 亚洲国产精品久久久久爰色欲| 另类调教123区| 男生裸体视频网站| 亚洲色图制服诱惑| caoporn国产| 日韩欧美卡一卡二| 91精品国产综合久久久久久豆腐| 久久久久国产精品免费| 国产美女在线观看| 欧美视频专区一二在线观看| 中文字幕乱码视频| 亚洲国产成人爱av在线播放| 一本一道波多野毛片中文在线| 国内精久久久久久久久久人| 日韩一区二区三区四区五区| 久久久免费看| 欧美涩涩网站| 久久久久xxxx| 国产欧美一区二区精品忘忧草| 精品无码av在线| 在线成人av影院| 成人网视频在线观看| 91精品国产高清久久久久久| 国产精品色婷婷在线观看| 天天好比中文综合网| 99视频一区| 在线播放第一页| 亚洲欧美在线aaa| 中文字幕 欧美激情| 亚洲美女视频网站| av在线播放资源| 成人区精品一区二区| 欧美激情一区| 中国黄色片一级| 国产精品美女一区二区三区 | 亚洲一区二区不卡免费| 国产精品国产一区二区三区四区| 国产亚洲在线播放| 日韩电影免费观| 欧美日韩一区二区视频在线观看| 一区二区日本视频| 国产又粗又猛又色| 天天综合天天做天天综合| 丰满少妇一级片| 久久久久久久久久国产| 成人台湾亚洲精品一区二区 | 久久机这里只有精品| a资源在线观看| 在线亚洲一区二区| 超碰97在线免费观看| 国产精品美女在线观看| 日韩黄色大片| 午夜精品久久久久久久99热影院| 中文字幕一区二区三区在线播放| 在线观看一二三区| 日韩一区二区久久久| 高清一区二区三区av| 欧美日韩激情四射| 不卡一区在线观看| 久久久久99精品成人片三人毛片| 精品视频在线播放| 欧美电影免费观看网站| 日韩欧美亚洲区| 久久66热re国产| 国产a免费视频| 亚洲国产成人在线播放| 竹内纱里奈兽皇系列在线观看| 日本一区二区在线| 久久99精品久久久久久| 国产女人18水真多毛片18精品 | 亚洲人妻一区二区| 欧洲成人性视频| 日韩欧美电影| 国产99在线|中文| 亚洲国产精品18久久久久久| 欧美日韩成人免费| 色愁久久久久久| 色悠悠久久综合网| 亚洲女与黑人做爰| 神马午夜电影一区二区三区在线观看| 日韩女优人人人人射在线视频| 日韩1区在线| 乱码一区二区三区| 色狠狠av一区二区三区| 久草资源在线观看| 激情视频一区二区| 免费观看在线色综合| 免费麻豆国产一区二区三区四区| 亚洲精品狠狠操| av成人在线网站| 欧美日韩在线视频一区二区三区| 国产精品欧美一区喷水| 亚洲欧美高清视频| 国产精品美女久久久久av超清| 国产精品www.| 亚洲精品91在线| 精品久久久久久无| 国产91在线精品| 男人添女人下部高潮视频在观看 | 久久免费看少妇高潮v片特黄| 亚洲国产小视频| 国产麻豆一区二区三区| 国产主播在线看| 一区二区理论电影在线观看|